Pourquoi les utilisateurs entre comptes reçoivent-ils des refus d'accès lorsqu'ils tentent d'accéder à des objets S3 chiffrés par une clé AWS KMS personnalisée ?

Date de la dernière mise à jour : 22/06/2021

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 corriger 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 à la fois au compartiment et à la clé dans le compte A.

Pour résoudre les refus d'accès, vérifiez que ces autorisations sont définies correctement.

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

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 du compte B doit accorder à l'utilisateur l'accès au compartiment et à la clé du 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.    Parmi les stratégies appliquées, vérifiez qu'il y en a au moins une qui accorde l'accès au compartiment et à la clé.

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é 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 stratégie IAM du compte B doit accorder à l'utilisateur l'accès au compartiment et à la clé 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.


Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?