Akses lintas akun di Athena ke ember Amazon S3 - Amazon Athena

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Akses lintas akun di Athena ke ember Amazon S3

Skenario Amazon Athena yang umum memberikan akses ke pengguna di akun yang berbeda dari pemilik bucket sehingga mereka dapat melakukan kueri. Dalam kasus ini, gunakan kebijakan bucket untuk memberikan akses.

catatan

Untuk informasi tentang akses lintas akun ke katalog AWS Glue data dari Athena, lihat. Akses lintas akun ke katalog AWS Glue data

Contoh kebijakan bucket berikut, dibuat dan diterapkan ke buckets3://DOC-EXAMPLE-BUCKEToleh pemilik bucket, memberikan akses ke semua pengguna dalam akun123456789123, yang merupakan akun yang berbeda.

{ "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/*" ] } ] }

Untuk memberikan akses ke pengguna tertentu di akun, gantiPrincipalkunci dengan kunci yang menentukan pengguna bukanroot. Misalnya, untuk profil penggunaDave, gunakanarn:aws:iam::123456789123:user/Dave.

Akses lintas akun ke bucket yang dienkripsi dengan kunci khusus AWS KMS

Jika Anda memiliki bucket Amazon S3 yang dienkripsi dengan kunci kustom AWS Key Management Service (AWS KMS), Anda mungkin perlu memberikan akses ke bucket Amazon S3 dari akun Amazon Web Services lainnya.

Memberikan akses ke bucket AWS KMS-enkripsi di Akun A kepada pengguna di Akun B memerlukan izin berikut:

  • Kebijakan bucket di Akun A harus memberikan akses ke peran yang diambil oleh Akun B.

  • Kebijakan AWS KMS utama di Akun A harus memberikan akses ke peran yang diambil oleh pengguna di Akun B.

  • Peran AWS Identity and Access Management (IAM) yang diasumsikan oleh Akun B harus memberikan akses ke bucket dan kunci di Akun A.

Prosedur berikut menjelaskan cara memberikan izin masing-masing.

Untuk memberikan akses ke bucket di akun a ke pengguna di akun b
  • Dari Akun A,meninjau kebijakan bucket S3dan konfirmasikan bahwa ada pernyataan yang memungkinkan akses dari ID akun Akun B.

    Misalnya, kebijakan bucket berikut mengizinkan s3:GetObject akses ke ID akun111122223333:

    { "Id": "ExamplePolicy1", "Version": "2012-10-17", "Statement": [ { "Sid": "ExampleStmt1", "Action": [ "s3:GetObject" ], "Effect": "Allow", "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*", "Principal": { "AWS": [ "111122223333" ] } } ] }
Untuk memberikan akses ke pengguna di akun b dari kebijakan AWS KMS kunci di akun a
  1. Dalam kebijakan AWS KMS utama untuk Akun A, berikan peran yang diasumsikan oleh izin Akun B untuk tindakan berikut:

    • kms:Encrypt

    • kms:Decrypt

    • kms:ReEncrypt*

    • kms:GenerateDataKey*

    • kms:DescribeKey

    Contoh berikut memberikan akses kunci ke hanya satu peran 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. Dari Akun A, tinjau kebijakan utama menggunakan tampilan AWS Management Console kebijakan.

  3. Dalam kebijakan kunci, verifikasi bahwa pernyataan berikut mencantumkan akun B sebagai utama.

    "Sid": "Allow use of the key"
  4. Jika"Sid": "Allow use of the key"Pernyataan tidak ada, lakukan langkah-langkah berikut:

    1. Beralih untuk melihat kebijakan kunci menggunakan tampilan default konsol.

    2. Tambahkan ID akun akun B sebagai akun eksternal dengan akses ke kunci.

Untuk memberikan akses ke bucket dan kunci di akun a dari peran IAM yang diasumsikan oleh akun b
  1. Dari Akun B, buka konsol IAM dihttps://console.aws.amazon.com/iam/.

  2. Buka peran IAM yang terkait dengan pengguna di Akun B.

  3. Tinjau daftar kebijakan izin yang diterapkan pada peran IAM.

  4. Pastikan bahwa kebijakan diterapkan yang memberikan akses ke bucket.

    Contoh pernyataan berikut memberikan akses peran IAM ke s3:GetObject dan s3:PutObject operasi di bucket: 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. Pastikan bahwa kebijakan diterapkan yang memberikan akses ke kunci.

    catatan

    Jika peran IAM yang diasumsikan oleh Akun B sudah memiliki akses administrator, maka Anda tidak perlu memberikan akses ke kunci dari kebijakan IAM pengguna.

    Pernyataan contoh berikut memberikan akses peran IAM untuk menggunakan kunci. 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" } ] }

Akses lintas akun ke objek bucket

Objek yang di-upload oleh akun (Account C) selain bucket memiliki akun (Account A) mungkin memerlukan eksplisit objek level ACL yang memberikan akses baca ke akun kueri (Account B). Untuk menghindari persyaratan ini, Akun C harus berperan dalam Akun A sebelum menempatkan objek di bucket Akun A. Untuk informasi selengkapnya, lihatBagaimana cara memberikan akses lintas akun ke objek yang ada di bucket Amazon S3?.