Вы, наверное, видели предупреждающее письмо от 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]