Как хранить зашифрованные секреты в коде для проекта serverless.com?

12

Для serverless.com самый простой способ раскрыть секрет функции лямбда-AWS - это сохранить его в serverless.ymlфайле (например, зашифрованном с помощью KMS).

Но передача зашифрованных секретов в Git - не лучшая вещь в мире. Требуется изменение кода, когда секрет должен измениться, с одной стороны.

Но с точки зрения безопасности, какие есть лучшие альтернативы? например, секрет может быть сохранен в S3 (в зашифрованном виде) с Lambda, предоставившим доступ к этому местоположению и ключу KMS, но действительно ли это лучше каким-либо значимым способом?

Ассаф Лави
источник
это мнение о фобии семантической гимназии меня не интересует.
Ассаф Лави

Ответы:

7

Здесь следует рассмотреть несколько элементов:

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

  2. С точки зрения «Инфраструктура как код» вполне разумно хранить всю конфигурацию в Git, хотя, вероятно, в другом хранилище, поскольку область конфигурации может охватывать более одной службы.

  3. Предполагая, что оба приведенных выше утверждения имеют отношение к вашей ситуации, я был бы склонен зашифровать данные с помощью KMS и сохранить их в S3 или DynamoDB. Я бы даже сказал, что в очень простых ситуациях было бы целесообразно зашифровать и хранить данные в самой KMS.

Существует несколько библиотек с открытым исходным кодом, которые будут поддерживать эту операцию:

Ричард Слейтер
источник
1

Обычно я рассматриваю секреты как данные конфигурации. Как таковой, он не живет вместе с кодом, так как они обрабатываются различными графиками выпуска и процессами. Отдельное git-репо, KMS, динамо, s3 или внутри вашей системы управления конфигурациями (chef-хранилище / зашифрованная база данных в мире chef) - это хорошие места. По сути, вам не нужно создавать и развертывать новую версию своего программного обеспечения, чтобы получить секретную информацию.

Если вам нужны более сложные секреты управления, то вам подойдет что-то вроде Hasicorp Vault ( https://github.com/hashicorp/vault ).

Matt
источник