Come posso creare una funzione di rotazione con un dato segreto di AWS Secrets Manager per un database non supportato?

5 minuti di lettura
0

Come posso creare una funzione AWS Lambda per ruotare dati segreti di AWS Secrets Manager per altri database o servizi di terze parti?

Breve descrizione

I dati segreti di Secrets Manager creati con i database supportati da Amazon Relational Database Service (Amazon RDS) e altri servizi di supporto AWS creano automaticamente la rotazione Lambda. Per i database e i servizi AWS non supportati, puoi creare manualmente la funzione Lambda.

Soluzione

Usa il modello di funzione di rotazione generico per ruotare i dati segreti. Prima di attivare la rotazione di un dato segreto per un altro database o servizio, devi creare il codice per la funzione di rotazione Lambda.

Importante:

Crea un set di modifiche di AWS CloudFormation basato sul modello di funzione di rotazione generico

Esegui il comando AWS CLI create-cloud-formation-change-set per questi valori:

--stack-name: il nome dello stack AWS CloudFormation per il quale crei un set di modifiche.

--parameter-override: gli endpoint regionali di AWS Secrets Manager per la tua regione e il nome della funzione di rotazione Lambda creata dal modello.

aws serverlessrepo create-cloud-formation-change-set --application-id arn:aws:serverlessrepo:us-east-1:297356227824:applications/SecretsManagerRotationTemplate --stack-name MyLambdaCreationStack --parameter-overrides Name=endpoint,Value=https://secretsmanager.REGION.amazonaws.com Name=functionName,Value=MySecretsManagerRotationFunction --capabilities CAPABILITY_IAM CAPABILITY_RESOURCE_POLICY

Nota: assicurati di utilizzare il nome della risorsa Amazon (ARN) di arn:aws:serverlessrepo:us-east-1:297356227824:applications/SecretsManagerRotationTemplate esattamente come mostrato.

Viene creato un set di modifiche di AWS CloudFormation per il modello. Il nome dello stack AWS CloudFormation inizia con aws-serverless-repository- e il codice di stato dello stack è impostato su REVIEW_IN_PROGRESS.

Aggiorna uno stack utilizzando il set di modifiche

Il comando create-cloud-formation-change-set restituisce ApplicationId, ChangeSetId, SemanticVersion e StackId. Per aggiornare lo stato dello stack, è necessario fornire il ChangeSetId al change-set-name. Il change-set-name non produce alcun output e modifica il codice di stato dello stack in CREATE_COMPLETE. Lo stack AWS CloudFormation crea la funzione Lambda e un ruolo IAM collegato alla funzione Lambda con le autorizzazioni richieste.

Esegui il seguente comando execute-change-set di AWS CLI in modo simile al seguente:

aws cloudformation execute-change-set --change-set-name arn:aws:cloudformation:region:123456789012:changeSet/EXAMPLE1-90ab-cdef-fedc-ba987EXAMPLE/EXAMPLE2-90ab-cdef-fedc-ba987EXAMPLE

Verifica che le funzioni Lambda siano state create

Esegui il seguente comando AWS CLI:

aws lambda list-functions

Output
{
    ...
    "FunctionName": "MySecretsManagerRotationFunction",
    ...
    "FunctionArn": "arn:aws:lambda:region:123456789012:function:MySecretsManagerRotationFunction",
    ...
}

Nota: il nome della funzione Lambda è il valore del nome della funzione specificato in --parameter-overrides.

Configurazione della funzione Lambda per l'accesso ad Amazon Virtual Private Cloud (Amazon VPC)

Se il tuo database o servizio risiede in un Amazon VPC, esegui il comando update-function-configuration in modo simile al seguente. Il comando update-function-configuration configura la funzione di rotazione Lambda per l'esecuzione nel VPC. Assicurati di fornire gli ID della sottorete VPC e gli ID dei gruppi di sicurezza. Per ulteriori informazioni, consultaConfigurazione di una funzione Lambda per accedere alle risorse in un VPC.

Nota: se il tuo database o servizio non risiede in un Amazon VPC, salta questo passaggio.

$ aws lambda update-function-configuration --function-name your-lambda-function \
--vpc-config SubnetIds=subnet-076c28105d486f3bd,subnet-0af00c796ccdc725f,SecurityGroupIds=sg-0aed64f81acc4c037

Crea un endpoint VPC per il servizio Secrets Manager

Se il VPC con il tuo database o servizio e la funzione di rotazione Lambda non dispongono di accesso a Internet, crea un endpoint VPC. Configura il VPC con un endpoint di servizio privato per accedere a Secrets Manager e attivare la funzione di rotazione su un endpoint all'interno del VPC. Esegui il comando create-vpc-endpoint in modo simile al seguente:

Nota: se il tuo database o servizio non risiede in un Amazon VPC, salta questo passaggio.

$ aws ec2 create-vpc-endpoint --vpc-id  vpc-0abb11f5a28a8abe7 --vpc-endpoint-type Interface \
--service-name com.amazonaws.your-region.secretsmanager  --subnet-ids subnet-076c28105d486f3bd subnet-0af00c796ccdc725f \
--security-group-ids sg-0bacf4bbed67e4df5

Configurare la connettività di rete tra la funzione Lambda e il database o il servizio

Assicurati che la funzione Lambda possa essere indirizzata al tuo database o servizio tramite le porte di rete richieste. Questo varia a seconda del database o del servizio e della configurazione VPC associata.

Nota: se il tuo database o servizio non risiede in un Amazon VPC, salta questo passaggio.

Personalizza la funzione di rotazione in base al tuo caso d'uso

Il modello di rotazione implementa i passaggi createSecret e finishSecret per te. I passaggi setSecret e testSecret richiedono un'implementazione manuale per il tuo caso d'uso e il tuo database. Per ulteriori informazioni, consulta Come funziona la rotazione.

Attiva la rotazione per il tuo dato segreto

Specifica il numero di giorni tra una rotazione e l'altra con i parametri --rotation-rules e AutomaticallyAfterDays:

aws secretsmanager rotate-secret --secret-id production/MyAwesomeAppSecret --rotation-lambda-arn arn:aws:lambda:region:123456789012:function:MySecretsManagerRotationFunction --rotation-rules AutomaticallyAfterDays=7

Per ulteriori informazioni, consulta Ruotare i segreti di AWS Secrets Manager.


Informazioni correlate

Modelli di funzione di rotazione di AWS Secrets Manager

Come connettersi al servizio AWS Secrets Manager all'interno di un cloud privato virtuale

AWS UFFICIALE
AWS UFFICIALEAggiornata un anno fa