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à.
Risolvi i problemi AWS Secrets Manager di rotazione
Per molti servizi, Secrets Manager utilizza una funzione Lambda per ruotare i segreti. Per ulteriori informazioni, consulta Rotazione tramite funzione Lambda. La funzione di rotazione Lambda interagisce con il database o il servizio a cui appartiene il segreto e con Gestione dei segreti. Quando la rotazione non funziona come previsto, è necessario innanzitutto controllare i CloudWatch registri.
Nota
Alcuni servizi possono gestire i segreti per te, tra cui la gestione della rotazione automatica. Per ulteriori informazioni, consulta Rotazione gestita per AWS Secrets Manager i segreti.
Per visualizzare i CloudWatch log della funzione Lambda
Apri la console Secrets Manager all'indirizzo https://console.aws.amazon.com/secretsmanager/
. -
Scegli il tuo segreto e quindi nella pagina dei dettagli, nella sezione Rotation configuration (Configurazione della rotazione), scegli la funzione di rotazione Lambda. Si apre la console Lambda.
-
Nella scheda Monitor, scegli Registri, quindi scegli Visualizza accessi. CloudWatch
La CloudWatch console si apre e visualizza i registri relativi alla tua funzione.
Interpretazione dei registri
- Nessuna attività dopo "Found credentials in environment variables" (Trovate credenziali nelle variabili di ambiente)
- Nessuna attività dopo "» createSecret
- Errore: «L'accesso a non KMS è consentito»
- Errore: «La chiave non è presente nel segreto» JSON
- Errore: "setSecret: impossibile accedere al database»
- Errore: "Unable to import module 'lambda_function'"
- Aggiornare una funzione di rotazione esistente da Python 3.7 a 3.9
Nessuna attività dopo "Found credentials in environment variables" (Trovate credenziali nelle variabili di ambiente)
Se non si verifica alcuna attività dopo la visualizzazione del messaggio "Found credentials in environment variables" (Trovate credenziali nelle variabili di ambiente) e la durata del processo è lunga (ad esempio, il timeout predefinito di Lambda è 30.000 ms), è possibile che il timeout della funzione Lambda si verifichi durante il tentativo di raggiungere l'endpoint di Gestione dei segreti.
La funzione di rotazione Lambda deve essere in grado di accedere a un endpoint di Secrets Manager. Se la funzione Lambda può accedere a Internet, è possibile utilizzare un endpoint pubblico. Per trovare un endpoint, consulta AWS Secrets Manager endpoint.
Se la tua funzione Lambda viene eseguita in un ambiente VPC che non dispone di accesso a Internet, ti consigliamo di configurare gli endpoint privati del servizio Secrets Manager all'interno del tuo. VPC VPCÈ quindi possibile intercettare le richieste indirizzate all'endpoint pubblico regionale e reindirizzarle all'endpoint privato. Per ulteriori informazioni, consulta Endpoint VPC.
In alternativa, puoi abilitare la funzione Lambda per accedere a un endpoint pubblico di Secrets Manager aggiungendo un NATgateway o un gateway Internet al tuoVPC, che consente al traffico proveniente dal tuo di VPC raggiungere l'endpoint pubblico. Ciò espone VPC a maggiori rischi, in quanto l'indirizzo IP del gateway può essere attaccato dalla rete Internet pubblica.
Nessuna attività dopo "» createSecret
Di seguito sono riportati i problemi che possono causare l'interruzione della rotazione dopocreateSecret:
- La VPC rete ACLs non consente il HTTPS traffico in entrata e in uscita.
-
Per ulteriori informazioni, consulta Controllare il traffico verso le sottoreti utilizzando Network ACLs nella Amazon VPC User Guide.
- La configurazione del timeout della funzione Lambda è troppo breve per eseguire il processo.
-
Per ulteriori informazioni, consulta Configurazione delle opzioni della funzione Lambda nella Guida per gli sviluppatori di AWS Lambda .
- L'VPCendpoint Secrets Manager non consente l'VPCCIDRsaccesso ai gruppi di sicurezza assegnati.
-
Per ulteriori informazioni, consulta Controllare il traffico verso le risorse utilizzando i gruppi di sicurezza nella Amazon VPC User Guide.
- La policy degli VPC endpoint di Secrets Manager non consente a Lambda di utilizzare l'VPCendpoint.
-
Per ulteriori informazioni, consulta Utilizzo di un endpoint VPC AWS Secrets Manager.
- Il segreto utilizza la rotazione alternata degli utenti, il segreto del superutente è gestito da Amazon RDS e la funzione Lambda non può accedere a. RDS API
-
Per la rotazione alternata degli utenti in cui il segreto del superutente è gestito da un altro AWS servizio, la funzione di rotazione Lambda deve essere in grado di chiamare l'endpoint del servizio per ottenere le informazioni di connessione al database. Si consiglia di configurare un VPC endpoint per il servizio di database. Per ulteriori informazioni, consultare:
Amazon RDS API e gli VPC endpoint di interfaccia nella Amazon RDS User Guide.
Utilizzo VPC degli endpoint nella Amazon Redshift Management Guide.
Errore: «L'accesso a non KMS è consentito»
Se vediClientError: An error occurred (AccessDeniedException) when calling the GetSecretValue operation: Access to KMS is not allowed
, la funzione di rotazione non è autorizzata a decrittografare il segreto utilizzando la KMS chiave utilizzata per crittografarlo. La policy delle autorizzazioni potrebbe contenere una condizione che limita il contesto di crittografia a un segreto specifico. Per informazioni sulle autorizzazioni richieste, consulta la sezione Istruzione della policy per una chiave gestita dal cliente.
Errore: «La chiave non è presente nel segreto» JSON
Una funzione di rotazione Lambda richiede che il valore segreto si trovi in una struttura specificaJSON. Se visualizzi questo errore, è possibile che manchi una chiave a cui la funzione di rotazione ha cercato di accedere. JSON Per informazioni sulla JSON struttura di ogni tipo di segreto, vedereStruttura dei segreti JSON AWS Secrets Manager.
Errore: "setSecret: impossibile accedere al database»
Di seguito sono riportati i problemi che possono causare questo errore:
- La funzione di rotazione non può accedere al database.
-
Se la durata del processo è lunga, ad esempio oltre 5.000 ms, la funzione di rotazione Lambda potrebbe non essere in grado di accedere al database tramite la rete.
Se il tuo database o servizio è in esecuzione su un'EC2istanza Amazon in aVPC, ti consigliamo di configurare la funzione Lambda per l'esecuzione nella stessa. VPC Quindi la funzione di rotazione può comunicare direttamente con il servizio. Per ulteriori informazioni, consulta Configurazione dell'accesso VPC.
Per consentire alla funzione Lambda di accedere al database o al servizio, è necessario assicurarsi che i gruppi di sicurezza collegati alla funzione di rotazione Lambda consentano connessioni in uscita al database o al servizio. Inoltre, è necessario accertarsi che i gruppi di sicurezza collegati al database o al servizio consentano le connessioni in entrata dalla funzione di rotazione Lambda.
- Le credenziali nel segreto non sono corrette.
Se la durata del processo è breve, la funzione di rotazione Lambda potrebbe non essere in grado di autenticarsi con le credenziali segrete. Controlla le credenziali accedendo manualmente con le informazioni contenute nelle
AWSPREVIOUS
versioniAWSCURRENT
e nelle versioni del segreto utilizzando il comando. AWS CLIget-secret-value
- Il database utilizza
scram-sha-256
per crittografare le password. Se il database è Aurora Postgre SQL versione 13 o successiva e utilizza
scram-sha-256
per crittografare le password, ma la funzione di rotazione utilizza lalibpq
versione 9 o precedente che non supportascram-sha-256
, la funzione di rotazione non può connettersi al database.Per determinare quali utenti del database utilizzano la crittografia
scram-sha-256
Per determinare quale versione di
libpq
viene utilizzata dalla funzione di rotazioneIn un computer basato su Linux, sulla console Lambda, accedi alla funzione di rotazione e scarica il pacchetto di implementazione. Decomprimi il file zip in una directory di lavoro.
-
Nella riga di comando, nella directory di lavoro, esegui:
readelf -a libpq.so.5 | grep RUNPATH
Se vedi la stringa
, o qualsiasi versione principale inferiore a 10, quindi la funzione di rotazione non supporta.SQLPostgre 9.4.x
scram-sha-256
-
Output per una funzione di rotazione che non supporta
scram-sha-256
:0x000000000000001d (RUNPATH) Library runpath: [/local/p4clients/pkgbuild-a1b2c/workspace/build/PostgreSQL/
PostgreSQL-9.4.x
_client_only.123456.0/AL2_x86_64/DEV.STD.PTHREAD/build/private/tmp/brazil-path/build.libfarm/lib:/local/p4clients/pkgbuild-a1b2c/workspace/src/PostgreSQL/build/private/install/lib] -
Output per una funzione di rotazione che supporta
scram-sha-256
:0x000000000000001d (RUNPATH) Library runpath: [/local/p4clients/pkgbuild-a1b2c/workspace/build/PostgreSQL/
PostgreSQL-10.x
_client_only.123456.0/AL2_x86_64/DEV.STD.PTHREAD/build/private/tmp/brazil-path/build.libfarm/lib:/local/p4clients/pkgbuild-a1b2c/workspace/src/PostgreSQL/build/private/install/lib]
-
Nota
Se hai impostato la rotazione automatica del segreto prima del 30 dicembre 2021, la funzione di rotazione conteneva nel bundle una versione precedente di
libpq
che non supportascram-sha-256
. Per supportarescram-sha-256
, è necessario ricreare la funzione di rotazione.- Il database richiede SSL TLS /access.
-
Se il database richiede una TLS connessioneSSL/, ma la funzione di rotazione utilizza una connessione non crittografata, la funzione di rotazione non può connettersi al database. Le funzioni di rotazione per Amazon RDS (eccetto Oracle e Db2) e Amazon DocumentDB utilizzano automaticamente Secure Socket Layer SSL () o Transport Layer Security TLS () per connettersi al database, se disponibile. Altrimenti usano una connessione non crittografata.
Nota
Se hai impostato la rotazione segreta automatica prima del 20 dicembre 2021, la tua funzione di rotazione potrebbe essere basata su un modello precedente che non SSL supportava/. TLS Per supportare le connessioni che utilizzanoSSL/TLS, devi ricreare la funzione di rotazione.
Per determinare quando è stata creata la funzione di rotazione
-
Nella console Secrets Manager https://console.aws.amazon.com/secretsmanager/
, apri il tuo segreto. Nella sezione Configurazione della rotazione, in Funzione di rotazione Lambda, viene visualizzata la funzione LambdaARN, ad esempio. arn:aws:lambda:
Copia il nome della funzione dalla fine diARN, in questo esempio.aws-region
:123456789012
:function:SecretsManagerMyRotationFunction
SecretsManagerMyRotationFunction
-
Nella AWS Lambda console https://console.aws.amazon.com/lambda/
, in Funzioni, incolla il nome della funzione Lambda nella casella di ricerca, scegli Invio, quindi scegli la funzione Lambda. -
Nella pagina dei dettagli della funzione, nella scheda Configuration (Configurazione), in Tag, copia il valore accanto alla chiave aws:cloudformation:stack-name.
-
Nella AWS CloudFormation console https://console.aws.amazon.com/cloudformation
, in Stacks, incolla il valore della chiave nella casella di ricerca, quindi scegli Invio. -
L'elenco degli stack filtra in modo che venga visualizzato solo lo stack che ha creato la funzione di rotazione Lambda. Nella colonna Created date (Data di creazione), visualizza la data di creazione dello stack. Questa è la data di creazione della funzione di rotazione Lambda.
-
Errore: "Unable to import module 'lambda_function'"
Potresti ricevere questo errore se stai eseguendo una funzione Lambda precedente che è stata aggiornata automaticamente da Python 3.7 a una versione più recente di Python. Per risolvere l'errore, puoi modificare la versione della funzione Lambda in Python 3.7 e quindi Aggiornare una funzione di rotazione esistente da Python 3.7 a 3.9. Per ulteriori informazioni, consulta la sezione Perché la rotazione della mia funzione Lambda di Secrets Manager non è riuscita con un errore "pg module not found"?
Aggiornare una funzione di rotazione esistente da Python 3.7 a 3.9
Alcune funzioni di rotazione create prima di novembre 2022 utilizzavano Python 3.7. The AWS SDK for Python ha smesso di supportare Python 3.7 a dicembre 2023. Per ulteriori informazioni, consulta Aggiornamenti della politica di supporto di Python per AWS SDKs e strumenti
Per scoprire quali funzioni di rotazione Lambda usano Python 3.7
Accedi a AWS Management Console e apri la AWS Lambda console all'indirizzo https://console.aws.amazon.com/lambda/
. Nell'elenco delle funzioni, filtra per
SecretsManager
.Nell'elenco filtrato delle funzioni, in Runtime, cerca Python 3.7.
Per eseguire l'aggiornamento a Python 3.9:
Opzione 1: ricrea la funzione di rotazione usando AWS CloudFormation
Quando si utilizza la console Secrets Manager per attivare la rotazione, Secrets Manager crea AWS CloudFormation le risorse necessarie, inclusa la funzione di rotazione Lambda. Se hai utilizzato la console per attivare la rotazione o hai creato la funzione di rotazione utilizzando una AWS CloudFormation pila, puoi utilizzare lo stesso AWS CloudFormation stack per ricreare la funzione di rotazione con un nuovo nome. La nuova funzione utilizza la versione più recente di Python.
Per trovare lo AWS CloudFormation stack che ha creato la funzione di rotazione
Nella pagina dei dettagli della funzione Lambda, nella sezione Configurazione scegli Tag. Visualizza il ARN successivo a aws:cloudformation:stack-id.
Il nome dello stack è incorporato in, come mostrato nell'esempio seguente. ARN
ARN:
arn:aws:cloudformation:us-west-2:408736277230:stack/
SecretsManagerRDSMySQLRotationSingleUser5c2-SecretRotationScheduleHostedRotationLambda
-3CUDHZMDMBO8/79fc9050-2eef-11ed-80f0-021fb13c0537Nome stack:
SecretsManagerRDSMySQLRotationSingleUser5c2-SecretRotationScheduleHostedRotationLambda
Per ricreare una funzione di rotazione (AWS CloudFormation)
-
In AWS CloudFormation, cerca lo stack per nome, quindi scegli Aggiorna.
Se viene visualizzata una finestra di dialogo che consiglia di aggiornare lo stack principale, scegli Vai allo stack principale, quindi scegli Aggiorna.
Nella pagina Update stack, in Prepara modello, scegli Modifica in Application Composer, quindi in Modifica modello in Application Composer, scegli il pulsante Modifica in Application Composer.
In Application Composer, effettuate le seguenti operazioni:
Nel codice del modello, in
SecretRotationScheduleHostedRotationLambda
, sostituisci il valore for"functionName": "SecretsManagerTestRotationRDS"
con un nuovo nome di funzione, ad esempio inJSON,"functionName": "SecretsManagerTestRotationRDSupdated"
Scegli Aggiorna modello.
Nella AWS CloudFormation finestra di dialogo Continua a, scegli Conferma e continua con AWS CloudFormation.
Continua con il flusso di lavoro AWS CloudFormation dello stack, quindi scegli Invia.
Opzione 2: aggiorna il runtime per la funzione di rotazione esistente utilizzando AWS CloudFormation
Quando si utilizza la console Secrets Manager per attivare la rotazione, Secrets Manager crea AWS CloudFormation le risorse necessarie, inclusa la funzione di rotazione Lambda. Se hai utilizzato la console per attivare la rotazione o hai creato la funzione di rotazione utilizzando uno AWS CloudFormation stack, puoi utilizzare lo stesso AWS CloudFormation stack per aggiornare il runtime della funzione di rotazione.
Per trovare lo AWS CloudFormation stack che ha creato la funzione di rotazione
Nella pagina dei dettagli della funzione Lambda, nella sezione Configurazione scegli Tag. Visualizza il ARN successivo a aws:cloudformation:stack-id.
Il nome dello stack è incorporato in, come mostrato nell'esempio seguente. ARN
ARN:
arn:aws:cloudformation:us-west-2:408736277230:stack/
SecretsManagerRDSMySQLRotationSingleUser5c2-SecretRotationScheduleHostedRotationLambda
-3CUDHZMDMBO8/79fc9050-2eef-11ed-80f0-021fb13c0537Nome stack:
SecretsManagerRDSMySQLRotationSingleUser5c2-SecretRotationScheduleHostedRotationLambda
Per aggiornare il runtime per una funzione di rotazione (AWS CloudFormation)
-
In AWS CloudFormation, cerca lo stack per nome, quindi scegli Aggiorna.
Se viene visualizzata una finestra di dialogo che consiglia di aggiornare lo stack principale, scegli Vai allo stack principale, quindi scegli Aggiorna.
Nella pagina Update stack, in Prepara modello, scegli Modifica in Application Composer, quindi in Modifica modello in Application Composer, scegli il pulsante Modifica in Application Composer.
In Application Composer, effettuate le seguenti operazioni:
Nel modelloJSON, per, sotto
SecretRotationScheduleHostedRotationLambda
, sottoProperties
Parameters
, aggiungi"runtime": "python3.9"
.Scegli Aggiorna modello.
Nella AWS CloudFormation finestra di dialogo Continua a, scegli Conferma e continua con AWS CloudFormation.
Continua con il flusso di lavoro AWS CloudFormation dello stack, quindi scegli Invia.
Opzione 3: per AWS CDK gli utenti, aggiorna la libreria CDK
Se hai utilizzato la versione AWS CDK precedente alla v2.94.0 per impostare la rotazione per il tuo segreto, puoi aggiornare la funzione Lambda eseguendo l'aggiornamento alla versione 2.94.0 o successiva. Per ulteriori informazioni, consulta la Guida per gli sviluppatori v2 di AWS Cloud Development Kit (AWS CDK).