Configura l'accesso tra account in Athena ai bucket Amazon S3 - Amazon Athena

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Configura l'accesso tra account in Athena ai bucket Amazon S3

Uno scenario comune di Amazon Athena è la concessione dell'accesso agli utenti in un account diverso da quello del proprietario del bucket, in modo che possano eseguire le query. In questo caso, occorre utilizzare una policy dei bucket per concedere l'accesso.

Nota

Per informazioni sull'accesso tra account diversi a AWS Glue cataloghi di dati di Athena, vedi. Configurare l'accesso tra account ai cataloghi di AWS Glue dati

La seguente policy dei bucket di esempio, creata e applicata al bucket s3://amzn-s3-demo-bucket dal proprietario del bucket, concede l'accesso a tutti gli utenti nell'account 123456789123, che è un account diverso.

{ "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:::amzn-s3-demo-bucket", "arn:aws:s3:::amzn-s3-demo-bucket/*" ] } ] }

Per concedere l'accesso a un determinato utente in un account, occorre sostituire la chiave Principal con una chiave che specifica l'utente anziché root. Ad esempio, per il profilo utente Dave, è necessario utilizzare arn:aws:iam::123456789123:user/Dave.

Configura l'accesso tra account a un bucket crittografato con un codice personalizzato AWS KMS Chiave

Se disponi di un bucket Amazon S3 crittografato con un codice personalizzato AWS Key Management Service (AWS KMS) chiave, potrebbe essere necessario concedere l'accesso agli utenti di un altro account Amazon Web Services.

Concedere l'accesso a un AWS KMS-bucket criptato nell'Account A a un utente nell'Account B richiede le seguenti autorizzazioni:

  • La policy del bucket nell'Account A deve concedere l'accesso al ruolo assunto dall'Account B.

  • Il AWS KMS una politica chiave nell'Account A deve concedere l'accesso al ruolo assunto dall'utente nell'Account B.

  • Il AWS Identity and Access Management (IAM) il ruolo assunto dall'Account B deve consentire l'accesso sia al bucket che alla chiave nell'Account A.

Nelle procedure seguenti viene descritto come concedere ciascuna di queste autorizzazioni.

Per concedere l'accesso al bucket nell'Account A all'utente nell'Account B
  • Nell'Account A, esaminare la policy del bucket S3 e verificare che sia presente un'istruzione che consenta l'accesso dall'ID dell'Account B.

    Ad esempio, la seguente policy del bucket consente l'accesso s3:GetObject all'ID 111122223333 dell'account:

    { "Id": "ExamplePolicy1", "Version": "2012-10-17", "Statement": [ { "Sid": "ExampleStmt1", "Action": [ "s3:GetObject" ], "Effect": "Allow", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*", "Principal": { "AWS": [ "111122223333" ] } } ] }
Per concedere l'accesso all'utente nell'account b dal AWS KMS politica chiave nell'account a
  1. Nel AWS KMS politica chiave per l'Account A, concedi al ruolo assunto dalle autorizzazioni dell'Account B le seguenti azioni:

    • kms:Encrypt

    • kms:Decrypt

    • kms:ReEncrypt*

    • kms:GenerateDataKey*

    • kms:DescribeKey

    L'esempio seguente concede l'accesso con chiave a un IAM solo ruolo.

    { "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. Dall'Account A, esamina la politica chiave utilizzando il AWS Management Console visualizzazione della politica.

  3. Nella policy della chiave, verificare che l'istruzione seguente elenchi l'Account B come principal.

    "Sid": "Allow use of the key"
  4. Se l'istruzione "Sid": "Allow use of the key" non è presente, attenersi alla seguente procedura:

    1. Visualizzare la policy della chiave utilizzando la visualizzazione predefinita della console.

    2. Aggiungere l'ID dell'Account B come account esterno con accesso alla chiave.

Per concedere l'accesso al bucket e alla chiave nell'account a dal IAM ruolo assunto dall'account b
  1. Dall'account B, apri la IAM console all'indirizzo https://console.aws.amazon.com/iam/.

  2. Apri il IAM ruolo associato all'utente nell'Account B.

  3. Consulta l'elenco delle politiche di autorizzazione applicate al IAM ruolo.

  4. Assicurarsi che venga applicata una policy che conceda l'accesso al bucket.

    L'istruzione di esempio seguente concede al IAM ruolo l'accesso alle s3:PutObject operazioni s3:GetObject e sul bucket: amzn-s3-demo-bucket

    { "Version": "2012-10-17", "Statement": [ { "Sid": "ExampleStmt2", "Action": [ "s3:GetObject", "s3:PutObject" ], "Effect": "Allow", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*" } ] }
  5. Assicurarsi che venga applicata una policy che consenta l'accesso alla chiave.

    Nota

    Se il IAM ruolo assunto dall'account B dispone già dell'accesso da amministratore, non è necessario concedere l'accesso alla chiave dalle politiche dell'IAMutente.

    L'istruzione di esempio seguente concede al IAM ruolo l'accesso all'utilizzo della chiavearn: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" } ] }

Configura l'accesso tra account agli oggetti bucket

Gli oggetti caricati da un account (Account C) diverso dall'account proprietario del bucket (Account A) potrebbero richiedere un livello di oggetto esplicito ACLs che conceda l'accesso in lettura all'account che esegue la query (Account B). Per evitare questo requisito, l'Account C deve assumere un ruolo nell'Account A prima di collocare gli oggetti nel bucket dell'Account A. Per ulteriori informazioni, consulta Come posso fornire l'accesso tra account agli oggetti che si trovano nei bucket Amazon S3?.