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 à mon compartiment, l'erreur « Access Denied » (« Accès refusé ») s'affiche sur leur écran. Comment résoudre ce problème ?

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 accordées :

  • 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 d'utilisateur 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 « Access Denied » (« Accès refusé »), vérifiez que ces autorisations ont bien été configurées.  

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

Depuis le 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 de compte 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:::awsexamplebucket/*",
      "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 les actions suivantes : kms:Encrypt, kms:Decrypt, kms:ReEncrypt*, kms:GenerateDataKey* et kms:DescribeKey. Par exemple, si vous souhaitez accorder l'accès à la clé à un seul utilisateur ou rôle IAM, l'instruction de stratégie de clé doit être similaire à ce qui suit :  

{
   "Sid": "Allow use of the key",
   "Effect": "Allow",
   "Principal": {
     "AWS": [
       "arn:aws:iam::111122223333:role/role_name",
     ]
   },
   "Action": [
     "kms:Encrypt",
     "kms:Decrypt",
     "kms:ReEncrypt*",
     "kms:GenerateDataKey*",
     "kms:DescribeKey"
   ],
   "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 de compte du compte B en tant que compte externe avec 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.

Depuis le compte B, ouvrez la console IAM, puis l'utilisateur ou le rôle IAM associé à l'utilisateur dans le compte B.

Consultez 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 d'accorder l'accès à la clé à partir des stratégies d'utilisateur IAM.

À titre d'exemple d'instruction pour l'accès à un compartiment, l'instruction suivante accorde à l'utilisateur IAM l'accès à s3:GetObject et s3:PutObject sur awsexamplebucket :

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "ExampleStmt2",
      "Action": [
        "s3:GetObject",
        "s3:PutObject"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::awsexamplebucket/*"
    }
  ]
}

À titre d'exemple d'instruction pour l'accès à une clé, l'instruction suivante accorde l'accès à l'utilisateur IAM à la clé (arn:aws:kms:example-region-1:123456789098:key/111aa2bb-333c-4d44-5555-a111bb2c33dd) :

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "ExampleStmt3",
      "Action": [
        "kms:Decrypt",
        "kms:DescribeKey",
        "kms:Encrypt",
        "kms:GenerateDataKey",
        "kms:ReEncrypt*"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:kms:example-region-1:123456789098:key/111aa2bb-333c-4d44-5555-a111bb2c33dd"
    }
  ]
}

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


Cette page vous a-t-elle été utile ? Oui | Non

Retour au Centre de connaissances AWS Support

Vous avez besoin d'aide ? Consultez le site du Centre AWS Support.

Date de publication : 25/03/2019