Come posso creare una funzione di rotazione con un dato segreto di AWS Secrets Manager per un database non supportato?
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:
- prima di iniziare, assicurati di aver installato e configurato l'interfaccia della linea di comando AWS (AWS CLI).
- Se ricevi errori durante l'esecuzione dei comandi dell'interfaccia della linea di comando di AWS, assicurati di utilizzare la versione più recente di AWS CLI.
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
Contenuto pertinente
- AWS UFFICIALEAggiornata 3 anni fa
- AWS UFFICIALEAggiornata un anno fa
- AWS UFFICIALEAggiornata 3 anni fa