Come posso risolvere i problemi di accesso a un segreto crittografato di AWS Secrets Manager?

4 minuti di lettura
0

Desidero recuperare o accedere a un segreto di AWS Secrets Manager, ma ricevo un errore.

Risoluzione

Se non riesci a recuperare o accedere a un segreto di Secrets Manager, potresti visualizzare uno dei seguenti errori: 

  • "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 uno di questi errori, completa i passaggi seguenti.

Nota: se si verificano errori durante l'esecuzione dei comandi dell’Interfaccia della linea di comando AWS (AWS CLI), assicurati di utilizzare la versione più recente di AWS CLI.

Verifica che il segreto non sia crittografato con una chiave gestita AWS KMS quando accedi a un segreto in un altro account.

Le policy delle chiavi gestite da AWS non possono essere modificate perché sono di sola lettura. Tuttavia, puoi visualizzare le policy delle chiavi gestite da AWS Key Management Service (AWS KMS) e le policy delle chiavi gestite dal cliente. Poiché le policy delle chiavi gestite da AWS KMS non possono essere modificate, non è possibile concedere autorizzazioni multi-account per queste policy. I segreti di Secrets Manager crittografati utilizzando una chiave gestita AWS KMS non sono accessibili da altri account AWS.

Per gli account incrociati, verifica che la policy basata sull'identità e la policy basata sulle risorse consentano al committente di accedere alla chiave AWS KMS.

La policy di identità dovrebbe consentire al principale di accedere alla chiave AWS KMS, in modo simile alla seguente:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "kms:Decrypt",
      "Resource": "arn:aws:kms:Region:AccountID:key/EncryptionKey"
    }
  ]
}

La policy basata sulle risorse dovrebbe consentire al committente di accedere alla chiave AWS KMS, in modo simile alla seguente:

{
  "Effect": "Allow",
  "Principal": {
    "AWS": [
      "arn:aws:iam::AccountID:user/UserName",
      "arn:aws:iam::AccountID:role/RoleName"
    ]
  },
  "Action": [
    "kms:Decrypt",
    "kms:DescribeKey"
  ],
  "Resource": "*"
}

Dopo l'aggiornamento della chiave AWS KMS, verifica che il segreto sia crittografato con la nuova chiave AWS KMS.

L'aggiornamento della chiave AWS KMS associata a un segreto di Secrets Manager tramite l'interfaccia della linea di comando di AWS non crittografa nuovamente le versioni correnti o precedenti del segreto con la nuova chiave KMS. Ciò significa che gli account esterni, chiamati anche mulit-account, non possono accedere al segreto perché il segreto non è stato nuovamente crittografato con la nuova chiave AWS KMS. È necessario crittografare nuovamente il segreto utilizzando la nuova chiave AWS KMS per recuperare il valore segreto dal multi-account.

Nota: l'utilizzo della console Secrets Manager per modificare la chiave AWS KMS associata a un segreto, per impostazione predefinita, crea una nuova versione del segreto e la crittografa con la nuova chiave AWS KMS. Per ulteriori informazioni, Secret encryption and decryption in AWS Secrets Manager.

Crittografare nuovamente il segreto con la nuova chiave AWS KMS.

Segui questi passaggi per crittografare nuovamente il segreto con la nuova chiave AWS KMS utilizzando la Console di gestione AWS o l'interfaccia a riga di comando AWS.

Console di gestione AWS

1.    Apri la console Secrets Manager.

2.    In Nome del segreto, scegli il tuo segreto.

3.    Scegli Azioni, quindi scegli l'elenco a discesa, seleziona la chiave AWS KMS, seleziona la casella di controllo Crea nuova versione del segreto con una nuova chiave di crittografia, quindi scegli Salva.

AWS CLI

Segui questi passaggi dall'account di origine in cui risiede il segreto.

1.    Esegui il comando AWS CLI get-secret-value in modo simile al seguente:

$ aws secretsmanager get-secret-value --secret-id arn:aws:secretsmanager:us-east-1:123456789012:secret:cross-account --query SecretString --output text

    {"CrossAccount":"DefaultEncryption"}

2.    Crea un file denominato creds.txt.

$ cat creds.txt

    {"CrossAccount":"DefaultEncryption"}

3.    Esegui il comando AWS CLI update-secret per crittografare nuovamente la chiave di crittografia in modo simile al seguente:

.    Nota: se utilizzi una chiave gestita dal cliente, devi disporre anche delle autorizzazioni kms:GenerateDataKey e kms:Decrypt sulla chiave.

$ 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"
    }

4.    Esegui il comando AWS CLI get-secret-value dal multi-account in modo simile al seguente:

$ 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

How to use resource-based policies in the AWS Secrets Manager console to securely access secrets across AWS accounts

Come posso condividere i segreti AWS Secrets Manager tra account AWS?

Permissions to AWS Secrets Manager secrets for users in a different account

AWS UFFICIALE
AWS UFFICIALEAggiornata 2 anni fa