В последнее время я подключался к базе данных, подключенной в облаке (AWS) к ExpressJS.Соединение определяется следующим образом: (Источник: https://expressjs.com/en/guide/database-integration.html)
var connection = mysql.createConnection({
host : 'localhost',
user : 'dbuser',
password : 's3kreee7',
database : 'my_db'
});
В AWS я подключался через переменные среды через процесс AWS:
var connection = mysql.createConnection({
host: process.env.RDS_HOSTNAME,
user: process.env.RDS_USERNAME,
password: process.env.RDS_PASSWORD,
port: process.env.RDS_PORT
});
Хотя это очень удобно, когдаПри работе в AWS это становится проблемой, если я хочу запускать / устранять неполадки моего кода локально, поэтому я в итоге вставляю фактические значения для подключения к моей базе данных вручную, подобно первому примеру кода, показанному в моем посте.
Если имя пользователя и пароль указаны в виде простого текста, это кажется небезопасным. Конечно, любой контроль версий вашего продукта должен быть закрытым, или кто-то может получить учетные данные для вашей базы данных, и даже тогда вы можете не захотеть, чтобы ваши учетные данные сохранялись в управлении версиями.история. Каковы лучшие практики, связанные с этим? Существуют ли случаи, когда люди обычно подключаются к базам данных или к защищенным ресурсам в своем коде, которые требуют учетные данные, ключи или другую защищенную информацию? Существует ли стандарт?
Этолучшая идея, которую я придумалВот и я, ссылаясь на приведенные выше примеры:
host: process.env.RDS_HOSTNAME || hostVariablePulledFromLocalFile
Это будет подключаться к БД, если на AWS, и если не использовать некоторую переменную, хранящуюся в локальном текстовом или json-файле, который содержит учетные данные и другие важныеИнформация.Таким образом, вы можете перейти к управлению версиями и не иметь своих учетных данных (конечно, исключая информационный файл из репозитория).