Come archiviare i segreti crittografati nel codice per un progetto serverless.com?


12

Con serverless.com, il modo più semplice per esporre un segreto a una funzione AWS Lambda è archiviarlo nel serverless.ymlfile (crittografato con KMS, ad esempio).

Ma affidare segreti criptati a Git non è la cosa migliore al mondo. Richiede modifiche al codice quando il segreto deve cambiare, per prima cosa.

Ma solo in termini di sicurezza, quali sono le alternative migliori? ad esempio il segreto potrebbe essere archiviato in S3 (crittografato), con la Lambda accesso a quella posizione e chiave KMS, ma in realtà è meglio in qualche modo significativo?


questa ginnastica semantica opinionofobia non mi interessa.
Assaf Lavie,

Risposte:


7

Ci sono un paio di elementi da considerare qui:

  1. È utile avere la capacità di mantenere la configurazione con una cadenza di rilascio separata dal codice che si sta configurando. In questo modo si incoraggia la rotazione delle credenziali in modo automatizzato, rendendolo regolarmente indolore.

  2. Dal punto di vista dell '"Infrastruttura come codice" è del tutto ragionevole archiviare tutta la configurazione in Git, sebbene probabilmente in un repository diverso poiché è probabile che l'ambito della configurazione comprenda più di un servizio.

  3. Supponendo che entrambe le affermazioni di cui sopra siano rilevanti per la tua situazione, sarei propenso a crittografare i dati con KMS e archiviarli in S3 o DynamoDB. Vorrei persino dire che in situazioni molto semplici potrebbe essere adatto per crittografare e archiviare i dati all'interno del KMS stesso.

Esistono diverse librerie open source che supporteranno questa operazione:


1

In genere considero i segreti come dati di configurazione nell'ambito. Come tale, non vive a fianco del codice in quanto sono gestiti da diverse pianificazioni e processi di rilascio. Un repository git separato, KMS, dynamo, s3 o all'interno del sistema di gestione della configurazione (chef-vault / database crittografato nel mondo degli chef) sono buoni posti. Fondamentalmente, non è necessario creare e distribuire una nuova versione del software per ottenere un aggiornamento segreto.

Se le tue esigenze di gestione dei segreti sono più complesse, qualcosa come Hasicorp Vault ( https://github.com/hashicorp/vault ) sarebbe una buona opzione.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.