2014-10-09 3 views
5

Мы планируем безопасный сервер Node.JS, который использует несколько сторонних веб-сервисов. Для каждого из них требуются учетные данные, которые необходимо настроить командой операций.Лучшая практика управления учетными данными веб-сервиса для Node.JS?

Очевидно, что они могут просто поместить их в текстовый файл в файле конфигурации.

Microsoft, кажется, предлагает лучший вариант с DPAPI - см. Credential storage best practices. Есть ли способ сделать это доступным через IISNode? Или есть ли другая опция для обеспечения таких учетных данных в конфигурации узла Node-JS?

  • Чарльз

ответ

1

Существует 2 способа сделать это надежно:

Первый заключается в использовании параметров командной строки при запуске вашего приложения.

Эти параметры затем найдены в process.argv

Итак, node myapp.js username password даст вам:

process.argv[0]=node 
process.argv[1]=/.../myapp.js (absolute path) 
process.argv[2]=username 
process.argv[3]=password 

Во-вторых, установить полномочия в качестве ENV переменных. Обычно это считается лучшей практикой, так как только вы имеете доступ к этим переменным.

Вы должны установить переменные с помощью команды экспорта, чем вы могли бы получить доступ к нему в process.env

+0

Спасибо за ответ. Но, возможно, я не прояснил ситуацию. Это будет веб-сервер - нет приложения, которое я запускаю. Таким образом, как переменные ENV, так и параметры командной строки в конечном итоге должны быть в скрипте; использование их не дает дополнительной безопасности. Или я что-то пропустил? – CharlesW

+0

ваш сервер-узел все равно придется запускать откуда-то, поэтому вы можете установить переменные env на машине, на которой запущен сервер, нет? – xShirase

3

Там есть подробное обсуждение нескольких вариантов здесь, в том числе два предложенных xShirase:

http://pmuellr.blogspot.co.uk/2014/09/keeping-secrets-secret.html

Определенные пользователем службы решают проблему, но только для облачных литейных цехов.

В этом блоге http://encosia.com/using-nconf-and-azure-to-avoid-leaking-secrets-on-github/ указано, что вы часто можете устанавливать переменные среды отдельно на серверах и предлагает использовать nconf для их чтения и конфигурационных файлов отдельно.

Я все еще удивляюсь, есть ли специальные предложения для IIS?

  • Чарльз
0

В настоящее время я должен был сделать то же самое для моих внешних учетных данных API. это то, что я сделал

  • установить модуль узла конфигурации
  • создать папку и файл с именем конфигурации/config.js
  • здесь требуется модуль (конфигурации)
  • В локальном поле он считывает конфигурационные из local.json file
  • У меня есть фиктивные значения в локальном.JSON для ключа API и общий секрет
  • на моем QA среде я экспортировать две переменные NODE_ENV = «ОК» и NODE_CONFIG_DIR = «путь к моей в Кoнфигурировании папку на Qa сервере»
  • модуль узла конфигурации считывает конфигурационные из «путь к вашему папка конфигурации/QA.json»
  • теперь у меня есть ключ реального апи и верительный в QA.json
  • здесь вы можете использовать шифрование для шифрования этих значений и положить его обратно в QA.json
  • в приложении получить эти значения конфигурации и расшифровка используют его во время вашего отдыха.

надеюсь, что это поможет.

так что ваш конфиг может жить в том же контейнере, что и код узла.

относятся к этому для шифрования и дешифрования http://lollyrock.com/articles/nodejs-encryption/

Смежные вопросы