Skip to main content

Извлекайте секреты из конфигурационных файлов или используйте пакет npm, который их шифрует

Объяснение в один абзац

Наиболее распространенным и безопасным способом предоставления приложению Node.js доступа к ключам и секретам является их хранение с использованием переменных среды в системе, в которой оно выполняется. После установки к ним можно получить доступ из глобального объекта process.env. Лакмусовая проверка того, правильно ли все приложения сконфигурированы из кода, заключается в том, можно ли сделать кодовую базу открытым исходным кодом в любой момент без ущерба для каких-либо учетных данных.

В редких случаях, когда секреты нужно хранить внутри системы контроля версий, использование пакета, такого как cryptr, позволяет хранить их в зашифрованном виде, а не в простой текст.

Существует множество инструментов, которые используют git commit для аудита коммитов и коммитов сообщений для случайного добавления секретов, таких как git-secrets.

Пример кода

Доступ к ключу API, хранящемуся в переменной среды:

    const azure = require('azure');

const apiKey = process.env.AZURE_STORAGE_KEY;
const blobService = azure.createBlobService(apiKey);

Использование cryptr для хранения зашифрованного секрета:

const Cryptr = require('cryptr');
const cryptr = new Cryptr(process.env.SECRET);

let accessToken = cryptr.decrypt('e74d7c0de21e72aaffc8f2eef2bdb7c1');

console.log(accessToken); // outputs decrypted string which was not stored in source control

Что говорят другие блогеры

Переменные среды легко переключать между развертываниями без изменения кода; в отличие от конфигурационных файлов, существует небольшая вероятность того, что они случайно попадут в репозиторий; и в отличие от пользовательских файлов конфигурации или других механизмов конфигурации, таких как Java System Properties, они являются независимым от языка и ОС стандартом. От: The 12 factor app