AWS Хранилище параметров системного менеджера по сравнению с диспетчером секретов и изменением среды в лямбде, когда использовать - PullRequest
2 голосов
/ 03 августа 2020
• 1000 Используя переменную среды лямбда с шифрованием, другой разработчик / администратор по-прежнему может отображать свое значение открытого текста прямо в консоли лямбда-выражений. Следует ли вместо этого использовать хранилище параметров? Учетные данные для входа на стороннюю платформу. Я предполагаю, что Менеджер секретов - единственный вариант? Строки подключения к БД. Секретный менеджер? При цене 0,40 доллара США за секрет в месяц счет будет добавлен к сотням баз данных за простое хранение учетных данных.

Ответы [ 2 ]

1 голос
/ 03 августа 2020

Большое количество бесплатных, publi c API-ключей. Используя переменную среды лямбда с шифрованием, другой разработчик / администратор по-прежнему может отображать свое значение открытого текста прямо в консоли лямбда-выражений.

* 1004 используйте нестандартный KMS CMK и настройте разрешения для этого ключа, чтобы другие разработчики не могли его использовать ( do c). Они по-прежнему смогут видеть остальную часть конфигурации Lambda.

Более серьезная проблема заключается в том, как вы будете настраивать эти переменные среды. Например, если вы используете Terraform, конфигурация записывается в файл состояния, и вам нужно будет использовать внешнее состояние (хранящееся в S3 или на серверах HashiCorp) для его защиты. Если вы используете CloudFormation, вы можете настроить их, используя Dynami c ссылку на секрет диспетчера секретов, но не на безопасную строку хранилища параметров.

Еще один вариант - использовать переменные среды для ссылки на ключи хранилища параметров, а затем программно извлекать значения. Например, у вас есть переменная среды с именем DATABASE_PASSWORD, а ее значение - /dev/database/password; фактический пароль базы данных - это SecureString в хранилище параметров, доступ к которому осуществляется по этому пути.

Учетные данные для входа на стороннюю платформу. Я предполагаю, что Secrets Manager - единственный вариант?

Хранилище параметров также предоставляет SecureString.

Строки подключения к БД. Секретный менеджер? При цене 0,40 доллара США за секрет в месяц счет будет добавлен к сотням баз данных за простое хранение учетных данных.

Действительно ли ваше приложение подключается к сотням баз данных? Если да, то действительно ли 40 долларов в месяц (на 100 подключений) являются финансовыми трудностями для вашей компании?

Если да, то Parameter Store может быть лучшим выбором, но имейте в виду, что существует ограниченное количество «бесплатных» параметров на аккаунт.

1 голос
/ 03 августа 2020

Для хранения любых учетных данных у вас есть три AWS управляемых варианта:

Переменные среды Lambda

Они будут переданы в функцию Lambda напрямую через службу Lambda. . Вы можете запретить другим доступ к строковым значениям, контролируя их разрешения для KMS через IAM . Это обеспечит наилучшую производительность из всех вариантов (во время выполнения кода дополнительный поиск не требуется).

Используя этот параметр, помните о следующих подводных камнях:

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

Хранилище параметров системного менеджера

Используя эту опцию, вы можете использовать SDK для получения любых ключей / значений, которые вы хотите . Он может хранить как простые текстовые значения, так и зашифрованные строки (тип SecureString ). Он обеспечивает базовую c функциональность, но если это все, что вам нужно, он будет отлично работать. Хранение значений ничего не стоит, но цена $0.05 per 10,000 Parameter Store API interactions. В отличие от переменных среды, вы можете использовать значение в нескольких лямбда-функциях.

Используя эту опцию, вам нужно знать следующее:

  • Будет снижена производительность для извлечение значения каждый раз, чтобы уменьшить этот вызов функции в глобальном контексте, чтобы ее можно было повторно использовать между вызовами.
  • Вам потребуется отдельный параметр для каждого ключа / значения. Для базы данных это будет означать либо создание отдельных параметров, либо сохранение всего набора учетных данных в виде объекта JSON и декодирование после его получения.

Менеджер секретов

Используя эту опцию, большая часть управления встроена в службу, секрет может содержать либо строку, либо одну строку JSON объекта. SDK будет обрабатывать получение этих значений, но вы должны знать, что, как и SSM, вы столкнетесь с падением производительности, поэтому вы захотите взглянуть на решение, подобное хранилищу параметров. Самым большим преимуществом диспетчера секретов над хранилищем параметров SSM является его интеграция с другими службами AWS, позволяющими использовать такие функции, как ротация секретов.

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

...