Com o serverless.com, a maneira mais fácil de expor um segredo a uma função do AWS Lambda é armazená-lo no serverless.yml
arquivo (criptografado com o KMS, por exemplo).
Mas comprometer segredos criptografados com o Git não é a melhor coisa do mundo. Requer alterações de código quando o segredo precisa mudar, por um lado.
Mas apenas em termos de segurança, quais são as melhores alternativas? por exemplo, o segredo pode ser armazenado no S3 (criptografado), com o Lambda tendo acesso a esse local e chave KMS, mas isso é realmente melhor de alguma maneira significativa?
security
aws-lambda
serverless
encryption
Assaf Lavie
fonte
fonte
Respostas:
Existem alguns elementos a serem considerados aqui:
É valioso ter a capacidade de manter a configuração com uma cadência de liberação separada do código que está sendo configurado. Isso encoraja a rotação de credenciais de maneira automatizada, faça-o regularmente e indolor.
É totalmente razoável, do ponto de vista de "Infraestrutura como código", armazenar toda a configuração no Git, embora provavelmente em um repositório diferente, pois o escopo da configuração provavelmente abrangerá mais de um serviço.
Supondo que ambas as instruções acima sejam relevantes para sua situação, eu estaria inclinado a criptografar os dados com o KMS e armazená-los no S3 ou DynamoDB. Eu diria até que, em situações muito simples, pode ser adequado criptografar e armazenar os dados no próprio KMS.
Existem várias bibliotecas de código aberto que suportam esta operação:
fonte
Normalmente, trato segredos como dados de configuração no escopo. Como tal, ele não convive com o código, pois é tratado por diferentes agendas e processos de release. Um repositório git separado, KMS, dínamo, s3 ou dentro do seu sistema de gerenciamento de configurações (banco de dados de chefes / banco de dados criptografado no mundo dos chefes) são bons lugares. Basicamente, você não precisa criar e implantar uma nova versão do seu software para atualizar um segredo.
Se as necessidades de gerenciamento de segredos forem mais complexas, algo como o Hasicorp Vault ( https://github.com/hashicorp/vault ) seria uma boa opção.
fonte