Come posso risolvere gli errori di accesso alla chiave AWS KMS dopo aver provato a recuperare un segreto crittografato di Secrets Manager?
Ho provato a recuperare o accedere a un segreto crittografato di AWS Secrets Manager, ma ho ricevuto un errore di accesso alla chiave AWS Key Management Service (AWS KMS).
Risoluzione
Se non riesci a recuperare o accedere a un segreto di Secrets Manager a causa di problemi di autorizzazione della chiave di AWS KMS, potresti ricevere uno degli errori seguenti:
- "You can't access a secret from a different AWS account if you encrypt the secret with the default KMS service key."
- "Access to KMS is not allowed"
- "InternalFailure"
- "Si è verificato un errore sconosciuto"
- "Access to KMS is not allowed. This version of secret is not encrypted with the current KMS key."
Per risolvere questo problema, aggiorna la policy della chiave AWS KMS con le autorizzazioni corrette per recuperare il segreto crittografato. Quindi crittografa nuovamente il segreto con la chiave AWS KMS aggiornata.
Nota: se ricevi messaggi di errore durante l'esecuzione dei comandi dell'interfaccia della linea di comando AWS (AWS CLI), consulta la sezione Troubleshoot AWS CLI errors. Inoltre, assicurati di utilizzare la versione più recente di AWS CLI.
Chiavi gestite AWS KMS
Per accedere al segreto da un altro account, verifica che il segreto non sia crittografato con una chiave gestita AWS KMS. Non puoi accedere a un segreto crittografato con chiave gestita AWS KMS da un altro account.
Poiché sono di sola lettura, non puoi modificare le policy delle chiavi gestite da AWS. Pertanto non puoi concedere autorizzazioni multi-account per le policy delle chiavi gestite da AWS.
Accesso multi-account
Per i multi-account, verifica che la policy basata sull'identità e la policy basata sulle risorse consentano al principale di accedere alla chiave AWS KMS.
Esempio di policy basata sull'identità che consente al principale di accedere alla chiave AWS KMS:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "kms:Decrypt", "Resource": "arn:aws:kms:Region:AccountID:key/EncryptionKey" } ] }
Esempio di policy basata sulle risorse che consente al principale di accedere alla chiave AWS KMS:
{ "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::AccountID:user/UserName", "arn:aws:iam::AccountID:role/RoleName" ] }, "Action": [ "kms:Decrypt", "kms:DescribeKey" ], "Resource": "*" }
Crittografa nuovamente il segreto con la chiave AWS KMS aggiornata
Usa la console Secrets Manager o AWS CLI per crittografare nuovamente il segreto con la chiave AWS KMS aggiornata.
Console Secrets Manager
Nota: se usi la console Secrets Manager, Secrets Manager crea una nuova versione del segreto e lo crittografa con la chiave aggiornata. Assicurati che le applicazioni che utilizzano il segreto abbiano l'autorizzazione per decrittografare il segreto con la chiave aggiornata. Per ulteriori informazioni, consulta Secret encryption and decryption in AWS Secrets Manager.
- Apri la console Secrets Manager.
- In Nome del segreto scegli il tuo segreto.
- Scegli Operazioni e quindi Modifica la chiave di crittografia.
- Seleziona Create new version of secret with new encryption key (Crea nuova versione del segreto con una nuova chiave di crittografia), quindi scegli Salva.
AWS CLI
Completa i passaggi 1-3 dall'account di origine in cui si trova il segreto e il passaggio 4 dall'altro account:
-
Esegui il comando get-secret-value per ottenere il valore del segreto:
aws secretsmanager get-secret-value --secret-id arn:aws:secretsmanager:us-east-1:123456789012:secret:cross-account --query SecretString --output text {"CrossAccount":"DefaultEncryption"}
-
Crea un file denominato creds.txt:
cat creds.txt {"CrossAccount":"DefaultEncryption"}
-
Esegui il comando update-secret per crittografare nuovamente la chiave di crittografia:
aws secretsmanager update-secret --secret-id arn:aws:secretsmanager:us-east-1:123456789012:secret:cross-account --secret-string file://creds.txt { "ARN": "arn:aws:secretsmanager:us-east-1:123456789012:cross-account", "Name": "cross-account", "VersionId": "f68246e8-1cfb-4c3b-952b-17c9298d3462" }
Nota: se utilizzi una chiave gestita dal cliente, devi disporre anche delle autorizzazioni kms:GenerateDataKey e kms:Decrypt sulla chiave.
-
Esegui il comando get-secret-value dall'altro account:
aws secretsmanager get-secret-value --secret-id arn:aws:secretsmanager:us-east-1:123456789012:secret:cross-account --version-stage AWSCURRENT --profile {"CrossAccount":"DefaultEncryption"}
Informazioni correlate
Come posso condividere i segreti AWS Secrets Manager tra account AWS?
Video correlati
Contenuto pertinente
- AWS UFFICIALEAggiornata un anno fa
- AWS UFFICIALEAggiornata 3 anni fa
- AWS UFFICIALEAggiornata un anno fa
- AWS UFFICIALEAggiornata un anno fa