Autorizzazioni del ruolo di esecuzione della funzione di rotazione Lambda per AWS Secrets Manager - AWS Secrets Manager

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Autorizzazioni del ruolo di esecuzione della funzione di rotazione Lambda per AWS Secrets Manager

InfattiRotazione tramite funzione Lambda, quando Secrets Manager utilizza una funzione Lambda per ruotare un segreto, Lambda assume un ruolo di esecuzione IAM e fornisce tali credenziali al codice della funzione Lambda. Per istruzioni su come impostare la rotazione automatica, consulta:

Negli esempi seguenti vengono illustrate le policy in linea per i ruoli di esecuzione della funzione di rotazione Lambda. Per creare un ruolo di esecuzione e allegare una policy di autorizzazione, vedere Ruolo di esecuzione di AWS Lambda.

Policy per un ruolo di esecuzione della funzione di rotazione Lambda

La seguente policy di esempio consente alla funzione di rotazione di:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "secretsmanager:DescribeSecret", "secretsmanager:GetSecretValue", "secretsmanager:PutSecretValue", "secretsmanager:UpdateSecretVersionStage" ], "Resource": "SecretARN" }, { "Effect": "Allow", "Action": [ "secretsmanager:GetRandomPassword" ], "Resource": "*" }, { "Action": [ "ec2:CreateNetworkInterface", "ec2:DeleteNetworkInterface", "ec2:DescribeNetworkInterfaces", "ec2:DetachNetworkInterface" ], "Resource": "*", "Effect": "Allow" } ] }

Istruzione della policy per una chiave gestita dal cliente

Se il segreto è crittografato con una chiave KMS diversa da Chiave gestita da AWS aws/secretsmanager, allora è necessario concedere l'autorizzazione per utilizzare la chiave al ruolo di esecuzione Lambda. È possibile utilizzare il contesto di crittografia SecretARN per limitare l'uso della funzione di decrittografia, in modo che il ruolo della funzione di rotazione sia autorizzato ad accedere soltanto per decrittografare il segreto della cui rotazione è responsabile. Nell'esempio seguente viene illustrata un'istruzione da aggiungere alla policy del ruolo di esecuzione per decrittografare il segreto utilizzando la chiave KMS.

{ "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:DescribeKey", "kms:GenerateDataKey" ], "Resource": "KMSKeyARN" "Condition": { "StringEquals": { "kms:EncryptionContext:SecretARN": "SecretARN" } } }

Per utilizzare la funzione di rotazione per più segreti crittografati con una chiave gestita dal cliente, aggiungi un'istruzione come l'esempio seguente per consentire al ruolo di esecuzione di decrittografare il segreto.

{ "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:DescribeKey", "kms:GenerateDataKey" ], "Resource": "KMSKeyARN" "Condition": { "StringEquals": { "kms:EncryptionContext:SecretARN": [ "arn1", "arn2" ] } } }

Istruzione della policy per la strategia a utenti alternati

Per informazioni sulla strategia di rotazione a utenti alternati, consulta la sezione Strategie di rotazione delle funzioni Lambda.

Per un segreto che contiene credenziali Amazon RDS, se utilizzi la strategia degli utenti alternati e il segreto del superutente è gestito da Amazon RDS, devi anche consentire alla funzione di rotazione di chiamare le API di sola lettura su Amazon RDS in modo che possa ottenere le informazioni di connessione per il database. Ti consigliamo di allegare la politica AWS gestita ReadOnlyAccessAmazonRDS.

La seguente policy di esempio consente alla funzione di:

  • Eseguire le operazioni di Gestione dei segreti per SecretARN.

  • Recupera le credenziali nel segreto del superutente. Gestione dei segreti utilizza le credenziali presenti nel segreto del superutente per aggiornare le credenziali nel segreto che viene ruotato.

  • Creare una nuova password.

  • Impostare la configurazione richiesta se il database o il servizio è in esecuzione in un VPC. Per ulteriori informazioni, consulta Configurazione di una funzione Lambda per accedere alle risorse in un VPC.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "secretsmanager:DescribeSecret", "secretsmanager:GetSecretValue", "secretsmanager:PutSecretValue", "secretsmanager:UpdateSecretVersionStage" ], "Resource": "SecretARN" }, { "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": "SuperuserSecretARN" }, { "Effect": "Allow", "Action": [ "secretsmanager:GetRandomPassword" ], "Resource": "*" }, { "Action": [ "ec2:CreateNetworkInterface", "ec2:DeleteNetworkInterface", "ec2:DescribeNetworkInterfaces", "ec2:DetachNetworkInterface" ], "Resource": "*", "Effect": "Allow" } ] }