Accès inter-comptes aux compartiments Simple Storage Service (Amazon S3) dans Athena - Amazon Athena

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Accès inter-comptes aux compartiments Simple Storage Service (Amazon S3) dans Athena

Un scénario courant d'Amazon Athena consiste à accorder l'accès à des utilisateurs dans un compte différent de celui du propriétaire du compartiment afin qu'ils puissent effectuer des requêtes. Dans ce cas, utilisez une politique de compartiment pour accorder l'accès.

Note

Pour plus d'informations sur l'accès inter-comptes aux catalogues de données AWS Glue depuis Athena, voir Accès entre comptes aux catalogues de données AWS Glue.

L'exemple suivant de politique de compartiment, créée et appliquée au compartiment s3://DOC-EXAMPLE-BUCKET par le propriétaire du compartiment, accorde l'accès à tous les utilisateurs du compte 123456789123, qui est un compte différent.

{ "Version": "2012-10-17", "Id": "MyPolicyID", "Statement": [ { "Sid": "MyStatementSid", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789123:root" }, "Action": [ "s3:GetBucketLocation", "s3:GetObject", "s3:ListBucket", "s3:ListBucketMultipartUploads", "s3:ListMultipartUploadParts", "s3:AbortMultipartUpload" ], "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET", "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*" ] } ] }

Pour accorder l'accès à un utilisateur particulier d'un compte, remplacez la clé Principal par une clé qui spécifie l'utilisateur à la place de root. Par exemple, pour le profil utilisateur Dave, utilisez arn:aws:iam::123456789123:user/Dave.

Accès inter-comptes à un compartiment chiffré avec une clé AWS KMS personnalisée

Si vous disposez d'un compartiment Simple Storage Service (Amazon S3) chiffré avec une clé AWS Key Management Service (AWS KMS) personnalisée, vous devrez peut-être en accorder l'accès aux utilisateurs d'un autre compte Amazon Web Services.

L'octroi d'un accès à un compartiment AWS KMS chiffré dans le compte A à un utilisateur dans le compte B nécessite les autorisations suivantes :

  • La politique de compartiment du compte A doit accorder l'accès au rôle assumé par le compte B.

  • La politique de clé AWS KMS du compte A doit accorder l'accès au rôle assumé par l'utilisateur dans le compte B.

  • Le rôle (IAM) AWS Identity and Access Management assumé par le compte B doit accorder l'accès à la fois au compartiment et à la clé du compte A.

Les procédures suivantes décrivent comment accorder chacune de ces autorisations.

Pour accorder l'accès au compartiment dans le compte A à l'utilisateur dans le compte B
  • Dans le compte A, consultez la politique de compartiment S3 et confirmez qu'il existe une instruction qui autorise l'accès à partir de l'ID de compte du compte B.

    Par exemple, la politique de compartiment suivante permet à s3:GetObject d'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" ] } } ] }
Pour accorder l'accès à l'utilisateur dans le compte B à partir de la politique de clé AWS KMS dans le compte A
  1. Dans la politique de clé AWS KMS du compte A, accordez au rôle assumé par le compte B des autorisations pour les actions suivantes :

    • kms:Encrypt

    • kms:Decrypt

    • kms:ReEncrypt*

    • kms:GenerateDataKey*

    • kms:DescribeKey

    L'exemple suivant accorde l'accès à la clé à un seul rôle IAM.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowUseOfTheKey", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/role_name" }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*" } ] }
  2. Depuis le compte A, révisez la politique de clé en utilisant la vue de la politique AWS Management Console.

  3. Dans la politique de clé, vérifiez que l'instruction suivante indique le compte B en tant que principal.

    "Sid": "Allow use of the key"
  4. Si l'instruction "Sid": "Allow use of the key" n'est pas présente, effectuez les opérations suivantes :

    1. Basculez pour afficher la politique de clé à l'aide de la vue par défaut de la console.

    2. Ajoutez l'ID de compte du compte B en tant que compte externe avec accès à la clé.

Accorder l'accès au compartiment et à la clé du compte A à partir du rôle IAM assumé par le compte B
  1. Depuis le compte B, ouvrez la console IAM à l'adresse https://console.aws.amazon.com/iam/.

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

  3. Consultez la liste des politiques d'autorisation appliquées au rôle IAM.

  4. Assurez-vous qu'une politique est appliquée qui accorde l'accès au compartiment.

    L'exemple d'instruction suivant accorde au rôle IAM l'accès aux opérations s3:GetObject et s3:PutObject dans le compartiment DOC-EXAMPLE-BUCKET :

    { "Version": "2012-10-17", "Statement": [ { "Sid": "ExampleStmt2", "Action": [ "s3:GetObject", "s3:PutObject" ], "Effect": "Allow", "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*" } ] }
  5. Assurez-vous qu'une politique est appliquée qui accorde l'accès à la clé.

    Note

    Si le rôle IAM assumé par le compte B dispose déjà d'un accès administrateur, il n'est pas nécessaire d'accorder l'accès à la clé à partir des politiques IAM de l'utilisateur.

    L'exemple d'instruction suivant accorde au rôle IAM l'accès à la clé arn:aws:kms:us-west-2: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:us-west-2:123456789098:key/111aa2bb-333c-4d44-5555-a111bb2c33dd" } ] }

Accès inter-comptes aux objets de compartiment

Les objets qui sont téléchargés par un compte (compte C) autre que le compte propriétaire du compartiment (compte A) peuvent nécessiter des ACL explicites de niveau objet qui accordent un accès en lecture au compte d'interrogation (compte B). Pour éviter cette exigence, le compte C doit assumer un rôle dans le compte A avant de placer des objets dans le compartiment de ce dernier. Pour plus d'informations, consultez Comment puis-je fournir un accès inter-comptes aux objets stockés dans des compartiments Simple Storage Service (Amazon S3) ?.