Pourquoi les utilisateurs intercomptes reçoivent-ils des erreurs d'accès refusé lorsqu'ils tentent d'accéder à des objets S3 que j'ai chiffrés avec une clé gérée par le client AWS KMS ?

Lecture de 5 minute(s)
0

Mon compartiment Amazon Simple Storage Service (Amazon S3) est chiffré avec une clé gérée par le client AWS Key Management Service (AWS KMS). Lorsque des utilisateurs d'un autre compte AWS tentent d'accéder aux objets de mon compartiment, ils reçoivent le message d'erreur « Accès refusé ».

Brève description

Pour accorder l'accès à un compartiment chiffré par AWS KMS du compte A à un utilisateur du compte B, vous devez appliquer les autorisations suivantes :

  • La politique de compartiment Amazon S3 du compte A doit autoriser l'accès au compte B.
  • La clé gérée AWS du compte A doit se trouver dans la même région AWS que le compartiment S3 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 Gestion des identités et des accès AWS (AWS IAM) du compte B doit accorder à l'utilisateur l'accès au compartiment et à la clé du compte A.

Pour résoudre l’erreur Accès Refusé, vérifiez que ces autorisations sont correctement configurées.

Important : dans le cas des stratégies de clés gérées par le client, il est uniquement possible de modifier la stratégie de clé à partir du compte qui a créé la stratégie.

Vous devez utiliser un ARN de clé KMS complet pour le paramètre de chiffrement du compartiment. Si vous utilisez un alias de clé KMS, AWS KMS peut uniquement résoudre la clé dans le compte propriétaire du compartiment (compte A).

Voici un exemple d'ARN de clé AWS KMS complet qui est utilisé pour le chiffrement des compartiments :

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

Voici un exemple d'alias de clé AWS KMS qui n'est pas utilisé pour le chiffrement des compartiments :

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

Résolution

La politique de compartiment du compte A doit accorder l'accès à l'utilisateur du compte B

À partir du compte A, examinez la politique du compartiment pour vérifier la présence d'une déclaration autorisant l'accès à partir de l'ID du compte B.

Par exemple, la politique 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 du compte A doit accorder l'accès à l'utilisateur du compte B

La stratégie de clé AWS KMS doit accorder à l'utilisateur du compte B des autorisations pour l'action kms:Decrypt. Par exemple, pour accorder un accès à la clé à un seul utilisateur ou rôle IAM, utilisez une stratégie de clé basée sur l’exemple suivant :

{
    "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, utilisez la vue des politiques de la console de gestion AWS pour consulter la stratégie de clé. Dans la stratégie de clé, recherchez « Sid » : « Allow use of the key ». Vérifiez ensuite que l'utilisateur du compte B est répertorié en tant que principal dans cette déclaration.

Si vous ne trouvez pas la déclaration ** « Sid » : « Allow use of the key »**, utilisez alors la vue par défaut de la console de gestion AWS pour consulter la stratégie de clé. Ajoutez ensuite l'ID du compte B en tant que compte externe ayant accès à la clé.

La politique utilisateur IAM du compte B doit autoriser l'utilisateur à accéder à la fois au compartiment et à la clé du compte A

À partir du compte B, effectuez les étapes suivantes :

  1. Ouvrez la console IAM.
  2. Ouvrez l'utilisateur ou le rôle IAM associé à l'utilisateur dans le compte B.
  3. Consultez la liste des politiques d'autorisations appliquées à l'utilisateur ou au rôle IAM.
  4. Vérifiez que des politiques autorisant l'accès à la fois au compartiment et à la clé sont bien appliquées.
    Remarque : si l'utilisateur ou le rôle IAM du compte B dispose déjà d'un accès administrateur, vous n'avez pas besoin d'accorder un accès à la clé. L'exemple de politique suivant permet à l'utilisateur IAM du compte B d'accéder 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"
            }
        ]
    }

Pour obtenir plus d'informations sur la façon d'ajouter ou de corriger les autorisations d'un utilisateur IAM, consultez la page Modification des autorisations pour un utilisateur IAM.

Informations connexes

Générateur de politiques AWS

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