Pourquoi les utilisateurs inter-comptes reçoivent-ils des erreurs Accès refusé 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 : 11/03/2021

Mon compartiment Amazon Simple Storage Service (Amazon S3) est chiffré à l'aide d'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 dans le compte A doit accorder l'accès au compte B.
  • 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 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 l'erreur « Accès refusé », vérifiez que ces autorisations ont bien été configurées.

Ré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 autoriser l'utilisateur dans le compte B à effectuer l’action kms:Decrypt. Par exemple, si vous souhaitez accorder l'accès à la clé à un seul utilisateur ou rôle IAM, l'instruction de la stratégie de clé doit ressembler à ce qui 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, consultez la stratégie de clé à l'aide de la vue de stratégie d'AWS Management Console. 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é dans le compte A.

À partir du compte B, ouvrez la console IAM , puis l'utilisateur ou le rôle IAM associé à l'utilisateur dans le compte B. Passez en revue la liste des stratégies d'autorisations appliquées à l'utilisateur ou au rôle IAM. Vérifiez ensuite qu'au moins l'une d'elles accorde l'accès à la fois au compartiment et à la clé.

Remarque : Si l'utilisateur ou le rôle IAM dans le compte B possède déjà 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 dans le compte B un accès aux objets et à la clé KMS (pour déchiffrer les objets dans 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:bucket-region:444455556666:key/1234abcd-12ab-34cd-56ef-1234567890ab"
        }
    ]
}

Pour plus d'informations sur l'ajout ou la correction des autorisations de l'utilisateur IAM, consultez la section 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 ?