Comment partager les secrets d'AWS Secrets Manager entre des comptes AWS ?

Lecture de 4 minute(s)
0

Je souhaite partager mon secret AWS Secrets Manager avec un autre compte AWS.

Brève description

Dans cet exemple, l'utilisateur Security_Account gère les informations d'identification dans le compte A, et les développeurs utilisent l'utilisateur Dev_Account dans le compte B. Un utilisateur AWS Identity and Access Management (IAM) ou une application s'exécute dans l'instance Amazon Elastic Compute Cloud (Amazon EC2) de votre Dev_Account. Cet utilisateur ou cette application récupère des secrets dans le compte utilisateur Security_Account.

Utilisez une politique basée sur les ressources pour un secret qui permet d'associer une politique d'autorisations au secret. Utilisez cette politique pour permettre à une entité IAM de votre compte Dev_Account d'accéder au secret de votre compte Security_Account.

Un secret nommé DevSecret dans votre Security_Account (compte A) est chiffré avec une clé AWS Key Management Service (AWS KMS) DevSecretKMS. Ensuite, le secret est partagé avec votre Dev_Account (compte B).

Remarque : vous ne pouvez pas utiliser la clé par défaut d'AWS KMS pour le compte. La clé par défaut d'AWS KMS est créée, gérée et utilisée en votre nom par un service AWS qui s'exécute sur AWS Key Management Service. La clé par défaut d'AWS KMS est propre à un compte AWS et à une région AWS. Seul le service créateur de la clé gérée par AWS peut l'utiliser. Pour plus d'informations, consultez la section Clé AWS KMS.

Résolution

Configurer Security_Account (compte A)

Exécutez les étapes suivantes dans le Security_Account (compte A) dans la région de votre secret.

1.Si vous n'avez pas de secret, suivez les instructions pour créer un secret. Spécifiez l'Amazon Resource Name (ARN) dans le paramètre d'ID de clé AWS KMS pour le secret.

2.Si vous avez un secret existant qui utilise un alias, suivez les instructions pour modifier un secret. Spécifiez l'ARN de la clé AWS KMS dans le paramètre d'ID de clé AWS KMS pour le secret.

**Remarque :**vous devez utiliser l'ARN complet de la clé AWS KMS pour accéder à un secret à partir d'un autre compte AWS.

3.Accordez des autorisations dans la stratégie de clé de la clé AWS KMS. Secrets Manager chiffre les secrets par défaut. Les identités qui récupèrent ces secrets ont besoin d'un accès pour les déchiffrer. DevSecret étant chiffré par DevSecretKMS, vous devez modifier la stratégie de clé. Pour ce faire, ajoutez les autorisations suivantes

Remarque : remplacez your-region par votre région 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-??????"
    }
  }
}

Cette politique accorde à SecretsUser du compte Dev_Account (compte B) l'autorisation d'utiliser DevSecretKMS dans le compte Security_Account (compte A).

4.Autorisez l'entité IAM à accéder au secret. À partir du Security_Account, associez une stratégie basée sur les ressources qui autorise l'utilisateur SecretsUser à récupérer DevSecret.

Remarque : remplacez l'ARN principal par l'ARN de l’utilisateur ou rôle IAM.

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

Configurer le Dev_Account (compte B)

Effectuez les étapes suivantes dans le compte Dev_Account (compte B).

1.Attachez des autorisations à l'identité IAM dont vous souhaitez récupérer le secret. Utilisez une stratégie similaire à la suivante :

Remarque : remplacez your-region par votre région 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"
      ]
    }
  ]
}

L'utilisateur SecretsUser doit avoir l'autorisation d'accéder à secretsmanager:GetSecretValue pour l'utilisateur IAM SecretsUser dans Dev_Account pour récupérer le secret. Les autorisations de déchiffrement AWS sont requises pour SecretsUser, car DevSecret est chiffré avec la DevSecretKey.

2.Récupérez le secret sous le nom SecretsUser, comme suit :

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

Remarque : remplacez your-region par la région AWS du secret.

Utilisez ces instructions pour toutes les entités IAM. Par exemple, pour un profil d'instance Amazon EC2 ou un rôle, remplacez ou ajoutez l'ARN dans la politique de ressources. Modifiez ensuite les autorisations associées à l'entité IAM.

Informations connexes

Comment accéder aux secrets des comptes AWS en y attachant les politiques basées sur les ressources

Comment résoudre les problèmes d'accès à un code secret chiffré d'AWS Secrets Manager ?

Autorisations relatives aux secrets d'AWS Secrets Manager pour les utilisateurs d'un autre compte

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a 8 mois