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

4 minuti di lettura
0

Desidero condividere il mio segreto AWS Secrets Manager con un altro account AWS.

Breve descrizione

In questo esempio, l'utente Security_Account gestisce le credenziali nell'account A e l'utente Dev_Account viene utilizzato dagli sviluppatori nell'account B. Un utente AWS Identity and Access Management (IAM) o un'applicazione in esecuzione nell'istanza Amazon Elastic Compute Cloud (Amazon EC2) del Dev_Account recupera i segreti nell'account utente Security_Account. Questo utente o applicazione recupera i segreti nell'account utente Security_Account.

Puoi utilizzare una policy basata sulle risorse per un segreto, che consente di collegare una policy di autorizzazioni al segreto. Puoi utilizzare questa policy per consentire a un'entità IAM del Dev_Account di accedere al segreto del Security_Account.

Un segreto chiamato DevSecret nel Security_Account (account A) è crittografato utilizzando una chiave DevSecretKMS Servizio di gestione delle chiavi AWS (AWS KMS). Quindi, il segreto viene condiviso con il Dev_Account (account B).

Nota: non puoi utilizzare la chiave AWS KMS predefinita per l'account. La chiave AWS KMS predefinita viene creata, gestita e utilizzata per tuo conto da un servizio AWS eseguito sul Servizio di gestione delle chiavi AWS. La chiave AWS KMS predefinita è unica per il tuo account AWS e la tua Regione AWS. Solo il servizio che ha creato la chiave gestita da AWS può utilizzarla. Per ulteriori informazioni, consulta AWS KMS keys.

Risoluzione

Configura Security_Account (account A)

Segui questi passaggi nel Security_Account (account A), nella regione in cui si trova il segreto.

1.    Se non hai un segreto, segui le istruzioni per la creazione di un segreto. Assicurati di specificare il nome della risorsa Amazon (ARN) nel parametro ID chiave AWS KMS per il segreto.

2.    Se disponi di un segreto esistente che utilizza un alias, segui le istruzioni per modificare un segreto. Assicurati di specificare l'ARN della chiave AWS KMS nel parametro ID chiave AWS KMS per il segreto.

Nota: devi utilizzare l'ARN completo della chiave AWS KMS per accedere a un segreto da un altro account AWS.

3.    Concedi le autorizzazioni nella policy della chiave AWS KMS. Secrets Manager crittografa i segreti per impostazione predefinita. Le identità che recuperano questi segreti richiedono l'accesso per la decrittografia. Poiché devSecret è crittografato con DevSecretKMS, è necessario modificare la policy della chiave. Per fare ciò, aggiungi le seguenti autorizzazioni

Nota: sostituisci your-region con la tua Regione AWS.

{  "Sid": "AllowUseOfTheKey",
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::Dev_Account:user/SecretsUser"
  },
  "Action": [
    "kms:Decrypt"
  ],
  "Resource": "*",
  "Condition": {
    "StringEquals": {
      "kms:ViaService": "secretsmanager.your-region.amazonaws.com"
    },
    "StringLike": {
      "kms:EncryptionContext:SecretARN": "arn:aws:secretsmanager:your-region:Security_Account:secret:DevSecret-??????"
    }
  }
}

Questa policy concede a SecretsUser nel Dev_Account (account B) l'autorizzazione per utilizzare DevSecretKMS nel Security_Account (account A).

4.    Consenti all'entità IAM di accedere al segreto. Dal Security_Account, collega una policy basata sulle risorse che autorizza SecretsUser a recuperare DevSecret.

Nota: Sostituisci l'ARN Principal con l'ARN del tuo utente o ruolo IAM.

{  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::Dev_Account:user/SecretsUser"
      },
      "Action": "secretsmanager:GetSecretValue",
      "Resource": "*"
    }
  ]

Configura il Dev_Account ( account B)

Segui questi passaggi nel Dev_Account (account B).

1.    Collega le autorizzazioni all'identità IAM che deve recuperare il segreto. Utilizza una policy simile alla seguente:

Nota: sostituisci your-region con la tua Regione AWS.

{  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AllowGetSecretValue",
      "Effect": "Allow",
      "Action": [
        "secretsmanager:GetSecretValue"
      ],
      "Resource": [
        "arn:aws:secretsmanager:your-region:Security_Account:secret:DevSecret-??????"
      ]
    },
    {
      "Sid": "AllowKMSDecrypt",
      "Effect": "Allow",
      "Action": [
        "kms:Decrypt"
      ],
      "Resource": [
        "arn:aws:kms:your-region:Security_Account:key/DevSecretKMS_id"
      ]
    }
  ]
}

Affinché l'utente IAM SecretsUser nel Dev_Account possa recuperare il segreto, SecretsUser deve disporre dell'autorizzazione per secretsmanager:GetSecretValue. Le autorizzazioni di decrittografia AWS sono necessarie per SecretsUser, poiché DevSecret è crittografato utilizzando DevSecretKey.

2.    Recupera il segreto come SecretsUser, in modo simile al seguente:

$ aws secretsmanager get-secret-value --secret-id arn:aws:secretsmanager:your-region:Security_Account:secret:DevSecret --version-stage AWSCURRENT --region your-region

Nota: sostituisci your-region con la Regione AWS in cui si trova il segreto.

Puoi utilizzare queste istruzioni per tutte le entità IAM. Ad esempio, per un profilo o un ruolo dell'istanza Amazon EC2, sostituisci o aggiungi l'ARN nella policy delle risorse. Quindi, modifica le autorizzazioni allegate all'entità IAM.

Informazioni correlate

How to access secrets across AWS accounts by attaching resource-based policies

How can I resolve issues accessing an encrypted AWS Secrets Manager secret?

Autorizzazioni ai segreti di AWS Secrets Manager per gli utenti di un altro account

AWS UFFICIALE
AWS UFFICIALEAggiornata un anno fa