Pourquoi les utilisateurs multicomptes n'ont-ils pas accès à des objets S3 chiffrés avec une clé AWS KMS personnalisée ?

Lecture de 5 minute(s)
0

Mon compartiment Amazon Simple Storage Service (Amazon S3) est chiffré avec une clé AWS Key Management Service (AWS KMS) personnalisée. Lorsque des utilisateurs d'un autre compte AWS tentent d'accéder aux objets dans mon compartiment, l'erreur « Access Denied » (« Accès refusé ») s'affiche sur leur écran. Comment puis-je résoudre ce problème ?

Brève description

Pour accorder l'accès à un compartiment chiffré par une clé AWS KMS dans un compte A à un utilisateur dans un compte B, les autorisations suivantes doivent être définies :

  • La stratégie de compartiment du compte A doit accorder l'accès au compte B.
  • La stratégie de clé AWS KMS du compte A doit accorder l'accès à l'utilisateur du compte B.
  • La stratégie AWS Identity and Access Management (IAM) dans le compte B doit accorder à l'utilisateur l'accès au compartiment et à a clé AWS KMS dans le compte A.

Pour obtenir l'accès, vérifiez que ces autorisations sont définies correctement.

Avertissement : les politiques de clé AWS KMS gérées par AWS ne peuvent pas être modifiées, car elles sont en lecture seule. Toutefois, vous pouvez toujours afficher à la fois les politiques de clés KMS gérées par AWS et celles gérées par le client. Étant donné que les politiques de clé KMS gérées par AWS ne peuvent pas être mises à jour, des autorisations entre comptes ne peuvent non plus être accordées pour ces politiques de clé. En outre, les objets chiffrés à l'aide d'une clé KMS gérée AWS ne sont pas accessibles par d'autres comptes AWS. Pour les politiques de clé KMS gérées par le client, vous pouvez modifier la politique de clé uniquement à partir du compte AWS qui a créé la politique.

Si vous spécifiez votre propre clé AWS KMS (clé KMS gérée par le client), vous devez utiliser un ARN de clé AWS KMS complet pour le paramètre de chiffrement du compartiment. Lorsque vous utilisez un alias de clé AWS KMS, l'AWS KMS résoudra la clé uniquement au sein du compte propriétaire du compartiment (compte A).

Utilisez ceci :

"arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"

N'utilisez pas :

arn:aws:kms:us-west-2:111122223333:alias/<alias-name>

Solution

La stratégie de compartiment dans le compte A doit accorder l'accès à l'utilisateur dans le compte B.

À partir du compte A, consultez la stratégie de compartiment et vérifiez qu'il existe bien une instruction autorisant l'accès à partir de l'ID du compte B.

Par exemple, la stratégie de compartiment suivante autorise s3:GetObject à accéder à l'ID de compte 111122223333 :

{
  "Id": "ExamplePolicy1",
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "ExampleStmt1",
      "Action": [
        "s3:GetObject"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*",
      "Principal": {
        "AWS": [
          "111122223333"
        ]
      }
    }
  ]
}

La stratégie de clé AWS KMS dans le compte A doit accorder l'accès à l'utilisateur dans le compte B.

La stratégie de clé AWS KMS doit accorder à l'utilisateur du compte B des autorisations sur l'action kms:Decrypt. Par exemple, pour accorder l'accès à la clé à un seul utilisateur ou rôle IAM, l'instruction de la stratégie de clé se présente comme suit :

{
  "Sid": "Allow use of the key",
  "Effect": "Allow",
  "Principal": {
    "AWS": [
      "arn:aws:iam::111122223333:role/role_name"
    ]
  },
  "Action": [
    "kms:Decrypt"
  ],
  "Resource": "*"
}

Depuis le compte A, examinez la stratégie de clé en utilisant la vue de stratégie de la console de gestion AWS. Dans la stratégie de clé, recherchez l'instruction « Sid » : « Allow use of the key » (« Sid » : « Autoriser l'utilisation de la clé »). Vérifiez ensuite que l'utilisateur dans le compte B est répertorié en tant que mandataire dans cette instruction.

Si vous ne voyez pas l'instruction « Sid » : « Allow use of the key » (« Sid » : « Autoriser l'utilisation de la clé »), consultez la stratégie de clé à l'aide de la vue par défaut de la console. Ajoutez ensuite l'ID du compte B en tant que compte externe ayant accès à la clé.

La stratégie d'utilisateur IAM dans le compte B doit accorder à l'utilisateur l'accès à la fois au compartiment et à la clé AWS KMS dans le compte A.

Depuis le compte B, effectuez les étapes suivantes :

1.    Ouvrez la console IAM.

2.    Ouvrez l'utilisateur ou le rôle IAM associé à l'utilisateur du compte B.

3.    Examinez la liste des stratégies d'autorisations appliquées à l'utilisateur ou au rôle IAM.

4.    Vérifiez ensuite qu'au moins l'une d'elles accorde l'accès à la fois au compartiment et à la clé AWS KMS.

Remarque : si l'utilisateur ou le rôle IAM du compte B dispose déjà d'un accès administrateur, il n'est pas nécessaire de lui accorder l'accès à la clé.

L'exemple de stratégie suivant accorde à l'utilisateur IAM du compte B un accès aux objets et à la clé AWS KMS (pour déchiffrer les objets d'un compartiment) :

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "ExampleStmt1",
      "Action": [
        "s3:GetObject"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"
    },
    {
      "Sid": "ExampleStmt2",
      "Action": [
        "kms:Decrypt"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:kms:us-west-2:444455556666:key/1234abcd-12ab-34cd-56ef-1234567890ab"
    }
  ]
}

Remarque :

  • La stratégie de compartiment du compte A doit accorder l'accès au compte B.
  • La clé AWS KMS du compte A doit résider dans la même région que le compartiment du compte A.
  • La stratégie de clé AWS KMS du compte A doit accorder l'accès à l'utilisateur du compte B.
  • La politique IAM du compte B doit accorder à l'utilisateur l'accès au compartiment et à la clé AWS KMS du compte A.

Pour plus d'informations sur l'ajout ou la correction des autorisations de l'utilisateur IAM, consultez Modification des autorisations pour un utilisateur IAM.


Informations connexes

Générateur de stratégie AWS

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a un an