Вы, наверное, видели предупреждающее письмо от AWS с декабря прошлого года. Если вы работаете в чувствительной среде (например, HealthIT) и вам нужен безопасный доступ к базе данных, обычно соединение с базой данных будет использовать TLS / SSL, и администраторы базы данных заблокируют его, чтобы потребовать ssl-соединения.

Кому не о чем беспокоиться?

  • Если версия вашего пакета node-mysql2 выше 2.0.0, у вас есть последние сертификаты CA.
  • Если вам не нужно использовать SSL-соединения, это редко бывает с производственными базами данных и общедоступными соединениями. Производственные базы данных должны быть подключены только внутри частных сетей, а SSL-соединения должны быть принудительно установлены.

Как мне проверить?

  • ssh, docker exec -it /bin/sh или kubectl exec -it /bin/sh ваш путь к экземпляру, на котором размещен код.
  • head /app/node_modules/mysql2/lib/constants/ssl_profiles.js
  • Если вы видите следующее, у вас все в порядке:
'use strict';
// Certificate for Amazon RDS (Updated for 2019)
// https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL.html
// https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-serverless.html#aurora-serverless.tls
exports['Amazon RDS'] = {
ca: [
'-----BEGIN CERTIFICATE-----\n' +
'MIID9DCCAtygAwIBAgIBQjANBgkqhkiG9w0BAQUFADCBijELMAkGA1UEBhMCVVMx\n' +
'EzARBgNVBAgMCldhc2hpbmd0b24xEDAOBgNVBAcMB1NlYXR0bGUxIjAgBgNVBAoM\n' +

Как мне это исправить и проверить?

  • Дважды проверьте свой package.json, убедитесь, что mysql2 имеет версию 2.1.0 или выше.
  • Дважды проверьте свою конфигурацию (с помощью sequelize или typeorm), найдите это в config.
production: {
    username: process.env.DB_USERNAME,
    password: process.env.DB_PASSWORD,
    database: process.env.DB_NAME,
    host: process.env.DB_HOST,
    port: process.env.DB_PORT,
    dialect: 'mysql',
    logging: false,
    dialectOptions: {
        ssl: 'Amazon RDS',
        multipleStatements: true,
    },
    pool: {
        max: 20,
    },
},

Если вы не видите [Сертификат для Amazon RDS (обновлено на 2019 год)] и после февраля или марта ваше рабочее приложение все равно будет работать…

Возможно, вы на самом деле не используете SSL-соединения с производственной базой данных! Очень беспокойтесь, если это соединение будет через общедоступный Интернет.

Нужна дополнительная информация?

Team Zero Labs может помочь. Напишите нам на [email protected]