Comment stocker des secrets cryptés dans du code pour un projet serverless.com?


12

Avec serverless.com, le moyen le plus simple d'exposer un secret à une fonction AWS Lambda est de le stocker dans le serverless.ymlfichier (crypté avec KMS, par exemple).

Mais confier des secrets cryptés à Git n'est pas la meilleure chose au monde. Nécessite des changements de code lorsque le secret doit changer, pour une chose.

Mais en termes de sécurité uniquement, quelles sont les meilleures alternatives? Par exemple, le secret pourrait être stocké dans S3 (crypté), avec la Lambda ayant accès à cet emplacement et à la clé KMS, mais est-ce réellement mieux d'une manière significative?


cette opinionphobie gymnastique sémantique ne m'intéresse pas.
Assaf Lavie

Réponses:


7

Il y a quelques éléments à considérer ici:

  1. Il est important d'avoir la capacité de maintenir la configuration avec une cadence de version distincte du code en cours de configuration. Cela encourage la rotation des informations d'identification de manière automatisée, faites-le régulièrement sans douleur.

  2. Du point de vue de «l'infrastructure en tant que code», il est tout à fait raisonnable de stocker toute la configuration dans Git, mais probablement dans un référentiel différent, car la portée de la configuration est susceptible de s'étendre sur plusieurs services.

  3. En supposant que les deux déclarations ci-dessus sont pertinentes pour votre situation, je serais enclin à crypter les données avec KMS et à les stocker dans S3 ou DynamoDB. J'irais même jusqu'à dire que dans des situations très simples, il pourrait être approprié de crypter et de stocker les données dans KMS lui-même.

Il existe plusieurs bibliothèques open source qui prendront en charge cette opération:


1

Je traite généralement les secrets comme des données de configuration de portée. En tant que tel, il ne cohabite pas avec le code car ils sont gérés par différents calendriers de publication et processus. Un dépôt git séparé, KMS, dynamo, s3, ou à l'intérieur de votre système de gestion de configuration (chef-vault / base de données chiffrée dans le monde du chef) sont de bons endroits. Fondamentalement, vous ne voulez pas avoir à créer et à déployer une nouvelle version de votre logiciel pour obtenir une mise à jour secrète.

Si vos besoins de gestion des secrets sont plus complexes, quelque chose comme Hasicorp Vault ( https://github.com/hashicorp/vault ) serait une bonne option.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.