Come accedere ai segreti API utilizzando AWS Lambda?

Come Accedere Ai Segreti Api Utilizzando Aws Lambda



Le best practice dei servizi AWS prevedono due azioni, ovvero Store-Retrieve e Audit-Rotate. Combinando queste due pratiche in una, AWS ha lanciato Secret Manager che aiuta l'utente a proteggere le informazioni segrete delle proprie applicazioni. AWS Secret Manager è ampiamente utilizzato per creare, memorizzazione , modificando , replicando e rotazione delle credenziali del database, chiavi API, token OAuth, ecc.

Contorno rapido

Questo articolo tratta i seguenti aspetti:

Cos'è AWS Lambda?

AWS Lambda è un servizio informatico per l'esecuzione di codici in più ambienti e lingue senza fornire e gestire i server. Inoltre, AWS Lambda può essere attivato da più servizi diversi di AWS come bucket S3, gateway API, ecc. Questo servizio ridimensiona automaticamente l'applicazione ed esegue in modo efficiente il codice senza richiedere all'utente di installare dipendenze aggiuntive.







Per ulteriori informazioni sul servizio Lambda, fare riferimento a questo articolo qui: 'Iniziare con AWS Lambda' .



Cos'è AWS Secret Manager?

AWS Secret Manager consente agli utenti di proteggere e crittografare i file informazioni confidenziali di applicazioni come token OAuth, credenziali del database, API, ecc. Queste informazioni riservate vengono definite a 'segreto' . A questi segreti accedono solo gli organismi autorizzati e possono essere ruotati per migliorare la sicurezza.



Scopri di più sulla memorizzazione delle credenziali RDS in Secret Manager facendo riferimento a questo articolo: 'Come archiviare le credenziali di Amazon RDS utilizzando Secret Manager?'





Come accedere ai segreti API in AWS utilizzando AWS Lambda?

Lambda fornisce supporto integrato per più servizi, ad es. Bucket S3, gateway API e gestore segreti. Le funzioni Lambda possono essere utilizzate per ottenere il valore dei segreti configurati. Utilizzando i segreti API in AWS Lambda Functions, gli utenti possono interagire con più servizi di AWS. Tali segreti API sono importanti anche per autorizzare le funzioni lambda.

Per accedere alle chiavi API in AWS Secret Manager utilizzando AWS Lambda, segui i passaggi indicati di seguito:



  • Passaggio 1: crea un API Secret
  • Passaggio 2: crea una policy IAM
  • Passaggio 3: crea un ruolo IAM
  • Passaggio 4: crea un ruolo Lambda

Passaggio 1: crea un API Secret

Prima di accedere a una chiave API in AWS Secret Manager, impareremo a farlo creare un segreto API . A questo scopo accedi al “Gestore segreto” servizio da parte di Console di gestione AWS:

Sul Consolle principale di AWS Secret Manager, fai clic su “Memorizza un nuovo segreto” pulsante:

Nel “Tipo segreto” blocco, scegli il “Altro tipo di segreto” opzione tra le varie opzioni visualizzate:

Scorri verso il basso fino a “Coppie chiave/valore” sezione e fornire a coppia chiave-valore univoca per il tuo segreto API. A aggiungere Di più coppie chiave-valore , clicca sul 'Aggiungi riga' pulsante:

Il prossimo è il 'Chiave crittografica' sezione. AWS fornisce a chiave di crittografia predefinita per il segreto. Tuttavia, l'utente può anche fornire un nome personalizzato per la chiave. Mantenendo l'impostazione predefinita, fare clic su ' Prossimo pulsante ':

Su questa interfaccia, l'utente deve fornire a nome unico per il loro segreto e a descrizione che è facoltativa campo qui:

Mantenendo il impostazioni invariate , procedere ulteriormente cliccando sul pulsante “ Prossimo pulsante ':

Poi arriva il Sezione revisione. Per confermare tutto il informazione fornito è corretto , clicca sul ' Negozio 'Pulsante situato nella parte inferiore dell'interfaccia:

Il segreto è stato creato con successo . Clicca sul ' Ricaricare ' per visualizzare il nome del segreto sul file Pannello di controllo :

Passaggio 2: crea una policy IAM

A creare una policy IAM, accedere al Servizio IAM dalla Console di gestione AWS:

Dal barra laterale dell'IAM servizio, fare clic sul pulsante “ Politiche ' opzione:

Sul Console delle politiche , clicca sul “Crea politica” pulsante:

Scopri di più sulla policy AWS IAM facendo riferimento a questo articolo: “Esempi di policy AWS IAM”

Il prossimo è il 'Specifica autorizzazioni' sezione. Cerca e seleziona il “Gestore segreto” servizio:

Scorri verso il basso fino a “Azioni consentite” bloccare. Qui, dai diversi livelli di accesso, toccare il pulsante “ Leggere ' opzione. Seleziona il “Tutte le azioni di lettura” opzione a abilitare tutta la lettura servizi per questa polizza:

Scorrere verso il basso al ' Risorse ' sezione e fare clic su 'Aggiungi ARN' opzione:

Tornare al Pannello di controllo di AWS Secret Manager e fai clic sul nome del segreto. Copia il ' RNA ' del segreto sotto il ' ARN segreto 'etichetta dall'interfaccia visualizzata:

Sul Consolati adesso , incolla l'ARN copiato nel campo ' RNA ' campo:

Prima di fare clic su 'Aggiungi ARN' pulsante, fare clic su 'Questo profilo' pulsante per confermare che i segreti esistono nello stesso account. Dopo aver configurato le impostazioni, fare clic su 'Aggiungi ARN' pulsante:

Dopo configurazione tutti i impostazioni dell'informativa cliccare sul pulsante “ Prossimo pulsante ':

Nel Sezioni dei dettagli della politica , fornire il nome della polizza nella sezione ' Nome della politica ' campo:

Clicca sul ' Creare una politica pulsante ':

IL politica è stato creato con successo :

Passaggio 3: crea un ruolo IAM

In questa sezione, crea un ruolo IAM che contenga le autorizzazioni necessarie affinché le funzioni Lambda possano accedere ai segreti. A questo scopo, fare clic sul pulsante “ Ruoli ' dalla barra laterale del ruolo IAM, quindi tocca l'opzione “Crea ruolo” pulsante dall'interfaccia:

Dopo aver cliccato su “Crea ruolo” pulsante, ti verrà visualizzata la seguente interfaccia. Seleziona il “Servizio AWS” opzione tra le seguenti opzioni poiché la allegheremo Ruolo dell'IAM con la funzione lambda:

Nel 'Caso d'uso' sezione, cerca il Servizio Lambda e selezionarlo. Colpire il ' Prossimo ' nella parte inferiore dell'interfaccia per procedere ulteriormente:

Sul interfaccia successiva , cerca il nome del Nome della politica che abbiamo configurato in precedenza. Dai risultati visualizzati, seleziona il nome della polizza:

Clicca il ' Prossimo ' pulsante nella parte inferiore del interfaccia per procedere ulteriormente:

Fornire un identificativo unico per il tuo Ruolo dell'IAM nel seguente campo evidenziato:

Mantenere il il resto delle impostazioni come predefinite , clicca sul “Crea ruolo” pulsante scorrendo verso il basso fino alla parte inferiore dell'interfaccia:

Il ruolo è stato con successo creato:

Per ulteriori informazioni sulla creazione di un ruolo IAM in AWS, fare riferimento a questo articolo: 'Come creare ruoli IAM in AWS' .

Passaggio 4: crea una funzione Lambda

Il passaggio successivo è creare la funzione Lambda. Questa funzione lambda conterrà il ruolo IAM e otterrà il valore dei segreti una volta eseguita. Per accedere al servizio Lambda, cerca ' Lambda 'nella barra di ricerca del Console di gestione AWS . Fai clic sul nome del servizio dal risultato per visitare la console:

Nell'interfaccia iniziale del servizio Lambda, fare clic su “Crea funzione” pulsante:

Verrà visualizzato il file “Crea funzione” interfaccia. Seleziona il “Autore da zero” opzione e procedere ulteriormente fornendo il nome per il file Funzione Lambda nel campo evidenziato:

Nel Campo di esecuzione , seleziona il ' Pitone 3.9 ' ambiente:

Sotto il Sezione Runtime , c'è un 'Modifica ruolo di esecuzione predefinito' sezione. Seleziona il 'Utilizza un ruolo esistente' opzione e quindi specificare il ruolo nel file “Ruolo esistente” campo:

Sulla stessa interfaccia, tocca “Crea funzione” pulsante nella parte inferiore dell'interfaccia:

Per ulteriori informazioni sulla creazione di una funzione Lambda, fare riferimento a questo articolo: 'Come creare una funzione Lambda con Pyhton Runtime' .

La funzione Lambda è stata creata. Il passaggio successivo consiste nel fornire il codice alla funzione Lambda. Quando questo codice viene eseguito, verranno visualizzati i valori di Direttore segreto:

importare json
importare boto3
importare base64
dal botocore. eccezioni importare Errore cliente

def gestore_lambda ( evento , contesto ) :
ambiente = evento [ 'env' ]
nome_segreto = 'shmaster19/%s/chiave' % ambiente
nome_regione = 'ap-sud-est-1'

sessione = boto3. sessione . Sessione ( )
cliente = sessione. cliente (
Nome di Servizio = 'gestore dei segreti' ,
nome_regione = nome_regione
)

Tentativo :
risposta_valore_segreto = cliente. ottieni_valore_segreto (
ID segreto = nome_segreto
)
tranne ClientError come errore :
stampa ( errore )
altro :
Se 'Stringa segreta' In risposta_valore_segreto :
segreto = json. carichi ( risposta_valore_segreto [ 'Stringa segreta' ] )
ritorno segreto
altro :
decodificato_binario_segreto = base64. decodifica b64 ( valore_segreto_Risposta [ 'Binario segreto' ] )
ritorno decodificato_binario_segreto
  • importa json: utilizzato per eseguire operazioni JSON.
  • importa boto3: è l'SDK per la comunicazione tra AWS e Python.
  • importa base64: Utilizzato per eseguire funzioni di codifica e decodifica su dati binari come Base64.
  • import ClientError: Ciò consente agli utenti di gestire le eccezioni nel codice scritto.
  • nome_segreto: In questa variabile, fornisci il nome del tuo segreto. Tieni presente che questo segreto contiene '%S' . Questo è quando un utente ha più chiavi di un formato simile. Ad esempio, se un utente ha creato due segreti, ad esempio “apikey/sviluppo/chiave” E “apikey/prod/chiave” . Poi nel '%S' , se l'utente fornisce ' dev ”, la funzione Lambda fornirà il file chiave di sviluppo (apikey/dev/key) e viceversa.
  • boto. sessione.Sessione(): consente agli utenti di creare client di servizio e risposte.
  • nome_regione: Fornisci il nome della regione in cui è configurato il tuo segreto AWS.
  • Risposta_valore_segreto: In questa variabile, stiamo usando il ' client.get_secret_value ” che restituirà il valore del segreto.
  • Decoded_binary_secert: Dopo aver acquisito il valore del segreto, verrà ulteriormente decodificato formato base 64 .

Dopo aver incollato il codice nella funzione Lambda, fai clic sul pulsante ' Distribuire ' per salvare e applicare le modifiche:

Passaggio 5: testare il codice

In questa sezione del blog verificheremo se il codice funziona o meno. A questo scopo, fare clic sul pulsante “ Test ' dopo aver distribuito con successo le modifiche alla funzione Lambda:

Nell'interfaccia successiva, fornire il file nome per il test evento nel 'Nome dell'evento' campo:

Scorri verso il basso fino a Sezione JSON evento , specificare la ' ambiente ' e fornire il valore nel formato JSON. IL ' valore ' della chiave verrà passata '%S' . Poiché i segreti che abbiamo specificato contengono il “ dev ' valore, il ' dev Il valore ' viene passato al ' ambiente 'variabile. La funzione Lambda identificherà il segreto quando il codice viene eseguito poiché l'identificatore del segreto specifico viene fornito nel codice. Dopo aver specificato i dettagli, fare clic su ' Salva pulsante ':

Una volta creato l'evento con successo, fare clic sul pulsante ' Test pulsante ':

Ecco, abbiamo ottenuto con successo il valore del nostro segreto specificato:

Questo è tutto da questa guida.

Conclusione

Per accedere alle chiavi API in Secret Manager utilizzando Lambda, crea innanzitutto un segreto API, una policy IAM, un ruolo e una funzione Lambda ed esegui il codice della funzione. Le funzioni Lambda possono essere richiamate per ottenere i valori di AWS Secret Manager specificando l'identificatore del segreto durante l'esecuzione del codice. Questo articolo fornisce linee guida dettagliate su come accedere alle chiavi API in AWS Secret Manager utilizzando AWS Lambda.