Non Lasciare le Password nel Codice; Utilizzare AWS Segreti Manager, Invece

0
49

AWS Segreti Manager rende il lavoro con le chiavi di accesso (come le credenziali del database) più facile da memorizzare in remoto e controllare l’accesso di loro dietro IAM autorizzazioni. Questo consente di ruotare senza problemi le chiavi di accesso e recuperare l’ultima volta in volta.

Cosa Significa Segreti Manager A Fare?

Ecco un esempio. Dire che si sta creando uno script di compilazione per i server che consente di automatizzare il processo di installazione, di solito fare uso di Auto Scaling e distribuzione automatica. È necessario collegare WordPress esterno ad un server MySQL.

La soluzione più semplice potrebbe essere quella di memorizzare la password di MySQL in chiaro come parte di uno script di build. Questo ovviamente non è di protezione, in pratica, e non scala bene al di là di una singola istanza gestito da un unico dipendente. Inoltre, se si stanno separando dev e prod ambienti, questo segreto deve essere aggiornato ad ogni ambiente, che è una seccatura.

La soluzione migliore è i Segreti Manager. Invece di memorizzare la password di MySQL in chiaro, e di riporlo in Segreti Manager, e quando si ha bisogno di esso, si esegue una chiamata API Segreti Manager, che restituisce il segreto. Questo consente di accedere in modo sicuro ai segreti utilizzando IAM ruoli e autorizzazioni, che è molto meglio un sistema, e uno che si sta già utilizzando, se la vostra azienda è su AWS.

Inoltre, perché i Segreti Manager agisce come un unico autorevole archivio di dati, rende la rotazione dei segreti molto più facile, che è una parte importante di protezione in corso.

Giusto per essere chiari—Segreti Manager non rende automaticamente la movimentazione di importanti segreti banale. Alla fine della giornata, si sta ancora chiedendo informazioni sensibili che sta per essere memorizzato su disco o in memoria sul server. Chiunque può accedere al server sarà in grado di accedere al segreto, e avrete bisogno di avere una buona IAM autorizzazioni di politiche per bloccare l’accesso. Tuttavia, senza Segreti Manager, non sarebbe in grado di controllare questo tipo di accesso a tutte le risorse IAM, e potrebbe avere importanti chiavi memorizzate in altri luoghi, come facilmente accessibile Git repository.

Segreti Manager può essere utilizzato per memorizzare qualsiasi tipo di chiave, tra cui JSON. Tuttavia, è comunemente utilizzato per memorizzare le credenziali del database, e come tale ha costruito in integrazione per RDS che consente di configurare automaticamente e ruotare le credenziali per voi.

Come Utilizzare Segreti Manager

Oltre al capo i Segreti della console di Gestione, e fare clic su “Store Un Nuovo Segreto.”

Se si sta impostando un segreto per archiviare le credenziali per RDS, o qualsiasi AWS altri DB services, è possibile selezionare come tipo di immettere il nome utente e la password e selezionare il database che si desidera utilizzare con questo segreto.

Se stai memorizzazione di qualsiasi altra cosa, ti consigliamo di selezionare “Altro Tipo Di Segreto.” Se si memorizza una serie di coppie chiave-valore, è possibile inserire nel qui, ma se si dispone di un più complesso JSON schema, si possono inserire in tutta la cosa come testo in chiaro sotto il “testo in Chiaro” tab.

Fare clic su “Avanti,” dare un nome, e qualsiasi tag che si potrebbe desiderare di aggiungere per scopi organizzativi.

Nella schermata successiva, si ha l’opzione di configurazione automatica della rotazione. Questo si chiama una funzione Lambda di tua scelta per ogni mese o così, e ruotare la chiave per un nuovo valore. Probabilmente si vorrà impostare la funzione Lambda per svuotare la cache di applicazioni client, in modo che tutti devono recuperare il nuovo segreto.

Fare clic su “Avanti” e fare clic su “Store” per creare il segreto.

L’accesso a il segreto è abbastanza facile. Se hai i AWS CLI installato e configurato con un utente o un ruolo che ha permesso di recuperare il segreto, è possibile accedervi utilizzando secretsmanager get-secernono il-valore. Questo restituisce output JSON, quindi è probabile che si desidera inviare al jq per l’elaborazione.

aws secretsmanager get-segreto-di valore-segreto-id Confidential_Info | jq

Questo restituisce metadati su una stringa così come la stessa stringa in SecretString parametro. È codificato in una singola stringa, ma è possibile utilizzare jq s fromjson direttiva per restituire il valore effettivo JSON valore della stringa.

| jq ‘.SecretString | fromjson’

Se sei il recupero di segreti molto spesso (a runtime), si vuole fare uso di una cache sul lato client, quindi non sei l’invio di migliaia di richieste di API ogni secondo. AWS offre un paio di librerie sul lato client per lavorare con i Segreti Manager, ma si può sempre implementare da soli nella lingua di vostra scelta.

Se si desidera automatizzare la creazione di segreti, è possibile farlo con il crea segreto:

aws secretsmanager creare-segreto-nome <valore> –segreto-string <valore>

La configurazione di IAM Accesso

È necessario impostare personalizzato IAM criteri per concedere l’accesso in lettura ai singoli segreti basata su Amazon il Nome della Risorsa (ARN). Dalla IAM Console di Gestione, creare un nuovo ruolo (o modificare la propria istanza EC2 è già esistente), e aggiungere l’accesso in Lettura per Segreti Manager.

Di seguito, si desidera aggiungere un ARN per limitare l’accesso. Entrare nel Segreto ID e fare clic su “Aggiungi”.

Creare la nuova politica, allegare il ruolo che la tua istanza EC2 se necessario, e test per verificare che è possibile accedere solo il segreto assegnato alla politica.