Akses S3 memberikan akses lintas akun - Amazon Simple Storage Service

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

Akses S3 memberikan akses lintas akun

Dengan S3 Access Grants, Anda dapat memberikan akses data Amazon S3 ke hal-hal berikut:

  • AWS Identity and Access Management (IAM) identitas dalam akun Anda

  • IAMidentitas di akun lain AWS

  • Pengguna direktori atau grup dalam AWS IAM Identity Center instans Anda

Pertama, konfigurasikan akses lintas akun untuk akun lain. Ini termasuk memberikan akses ke instans S3 Access Grants Anda dengan menggunakan kebijakan sumber daya. Kemudian, berikan akses ke data S3 Anda (bucket, awalan, atau objek) dengan menggunakan hibah.

Setelah Anda mengonfigurasi akses lintas akun, akun lain dapat meminta kredenal akses sementara ke data Amazon S3 Anda dari S3 Access Grants. Gambar berikut menunjukkan alur pengguna untuk akses S3 lintas akun melalui S3 Access Grants:

Akses S3 Memberikan alur pengguna lintas akun
  1. Pengguna atau aplikasi di akun kedua (B) meminta kredensil dari instans S3 Access Grants di akun Anda (A), tempat data Amazon S3 disimpan. Untuk informasi selengkapnya, lihat Minta akses ke data Amazon S3 melalui S3 Access Grants.

  2. Instans S3 Access Grants di akun Anda (A) mengembalikan kredensi sementara jika ada hibah yang memberikan akses akun kedua ke data Amazon S3 Anda. Untuk informasi lebih lanjut tentang hibah akses, lihatBekerja dengan hibah di S3 Access Grants.

  3. Pengguna atau aplikasi di akun kedua (B) menggunakan kredensil yang dijual oleh S3 Access Grants untuk mengakses data S3 di akun Anda (A).

Mengkonfigurasi Akses S3 Memberikan akses lintas akun

Untuk memberikan akses S3 lintas akun melalui S3 Access Grants, ikuti langkah-langkah berikut:

  • Langkah 1: Konfigurasikan instance S3 Access Grants di akun Anda, misalnya, ID akun111122223333, tempat data S3 disimpan.

  • Langkah 2: Konfigurasikan kebijakan sumber daya untuk instans S3 Access Grants di akun Anda 111122223333 untuk memberikan akses ke akun kedua, misalnya, ID akun. 444455556666

  • Langkah 3: Konfigurasikan IAM izin untuk IAM Principal di akun kedua 444455556666 untuk meminta kredensil dari instans S3 Access Grants di akun Anda. 111122223333

  • Langkah 4: Buat hibah di akun Anda 111122223333 yang memberi IAM Principal di akun kedua 444455556666 akses ke beberapa data S3 di akun 111122223333 Anda.

Langkah 1: Konfigurasikan instance S3 Access Grants di akun Anda

Pertama, Anda harus memiliki instans S3 Access Grants di akun Anda 111122223333 untuk mengelola akses ke data Amazon S3 Anda. Anda harus membuat instance S3 Access Grants di setiap Wilayah AWS tempat data S3 yang ingin Anda bagikan disimpan. Jika Anda berbagi data di lebih dari satu Wilayah AWS, ulangi setiap langkah konfigurasi ini untuk masing-masing Wilayah AWS. Jika Anda sudah memiliki instance S3 Access Grants di Wilayah AWS tempat penyimpanan data S3 Anda, lanjutkan ke langkah berikutnya. Jika Anda belum mengonfigurasi instance S3 Access Grants, lihat Bekerja dengan instans S3 Access Grants untuk menyelesaikan langkah ini.

Langkah 2: Konfigurasikan kebijakan sumber daya untuk instans S3 Access Grants Anda untuk memberikan akses lintas akun

Setelah Anda membuat instans S3 Access Grants di akun Anda 111122223333 untuk akses lintas akun, konfigurasikan kebijakan berbasis sumber daya untuk instans S3 Access Grants di akun Anda untuk memberikan akses lintas akun. 111122223333 Instans S3 Access Grants sendiri mendukung kebijakan berbasis sumber daya. Dengan kebijakan berbasis sumber daya yang benar, Anda dapat memberikan akses untuk AWS Identity and Access Management (IAM) pengguna atau peran dari orang lain Akun AWS ke instans S3 Access Grants Anda. Akses lintas akun hanya memberikan izin (tindakan) ini:

  • s3:GetAccessGrantsInstanceForPrefix— pengguna, peran, atau aplikasi dapat mengambil instance S3 Access Grants yang berisi awalan tertentu.

  • s3:ListAccessGrants

  • s3:ListAccessLocations

  • s3:ListCallerAccessGrants

  • s3:GetDataAccess— pengguna, peran, atau aplikasi dapat meminta kredensil sementara berdasarkan akses yang diberikan kepada Anda melalui Hibah Akses S3. Gunakan kredensial ini untuk mengakses data S3 yang telah diberikan akses kepada Anda.

Anda dapat memilih izin mana yang akan disertakan dalam kebijakan sumber daya. Kebijakan sumber daya pada instance S3 Access Grants ini adalah kebijakan berbasis sumber daya normal dan mendukung semua yang didukung oleh bahasa kebijakan. IAM Dalam kebijakan yang sama, Anda dapat memberikan akses ke IAM identitas tertentu di akun Anda111122223333, misalnya, dengan menggunakan aws:PrincipalArn kondisi, tetapi Anda tidak harus melakukannya dengan S3 Access Grants. Sebagai gantinya, dalam instance S3 Access Grants Anda, Anda dapat membuat hibah untuk IAM identitas individu dari akun Anda, serta untuk akun lainnya. Dengan mengelola setiap hibah akses melalui S3 Access Grants, Anda dapat menskalakan izin Anda.

Jika Anda sudah menggunakan AWS Resource Access Manager(AWS RAM), Anda dapat menggunakannya untuk membagikan s3:AccessGrantssumber daya Anda dengan akun lain atau di dalam organisasi Anda. Lihat Bekerja dengan AWS sumber daya bersama untuk informasi selengkapnya. Jika tidak digunakan AWS RAM, Anda juga dapat menambahkan kebijakan sumber daya menggunakan API operasi S3 Access Grants atau AWS Command Line Interface ()AWS CLI.

Kami menyarankan Anda menggunakan AWS Resource Access Manager (AWS RAM) Konsol untuk membagikan s3:AccessGrants sumber daya Anda dengan akun lain atau di dalam organisasi Anda. Untuk membagikan akun lintas akun S3 Access Grants, lakukan hal berikut:

Untuk mengonfigurasi kebijakan sumber daya instans S3 Access Grants:
  1. Masuk ke AWS Management Console dan buka konsol Amazon S3 di. https://console.aws.amazon.com/s3/

  2. Pilih Wilayah AWS dari Wilayah AWS pemilih.

  3. Dari panel navigasi kiri, pilih Access Grants.

  4. Pada halaman instance Access Grants, di bagian Instans di akun ini, pilih Bagikan instance. Ini akan mengarahkan Anda ke AWS RAM Konsol.

  5. Pilih Buat berbagi sumber daya.

  6. Ikuti AWS RAM langkah-langkah untuk membuat pembagian sumber daya. Untuk informasi selengkapnya, lihat Membuat pembagian sumber daya di AWS RAM.

Untuk menginstal AWS CLI, lihat Menginstal AWS CLI di Panduan AWS Command Line Interface Pengguna.

Anda dapat menambahkan kebijakan sumber daya dengan menggunakan put-access-grants-instance-resource-policy CLI perintah.

Jika Anda ingin memberikan akses lintas akun untuk instans S3 Access Grants ada di akun Anda 111122223333 ke akun kedua444455556666, kebijakan sumber daya untuk instance S3 Access Grants di akun Anda 111122223333 harus memberikan 444455556666 izin akun kedua untuk melakukan tindakan berikut:

  • s3:ListAccessGrants

  • s3:ListAccessGrantsLocations

  • s3:GetDataAccess

  • s3:GetAccessGrantsInstanceForPrefix

Dalam kebijakan sumber daya instans S3 Access Grants, tentukan instance S3 Access Grants sebagaiResource, dan akun kedua sebagai. ARN 444455556666 Principal Untuk menggunakan contoh berikut, ganti user input placeholders dengan informasi Anda sendiri.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "444455556666" }, "Action": [ "s3:ListAccessGrants", "s3:ListAccessGrantsLocations", "s3:GetDataAccess", "s3:GetAccessGrantsInstanceForPrefix" ], "Resource": "arn:aws:s3:us-east-2:111122223333:access-grants/default" } ] }

Untuk menambahkan atau memperbarui kebijakan sumber daya instans S3 Access Grants, gunakan perintah berikut. Bila Anda menggunakan perintah contoh berikut, ganti user input placeholders dengan informasi Anda sendiri.

contoh Menambahkan atau memperbarui kebijakan sumber daya instans S3 Access Grants
aws s3control put-access-grants-instance-resource-policy \ --account-id 111122223333 \ --policy file://resourcePolicy.json \ --region us-east-2 { "Policy": "{\n \"Version\": \"2012-10-17\",\n \"Statement\": [{\n \"Effect\": \"Allow\",\n \"Principal\": {\n \"AWS\": \"444455556666\"\n },\n \"Action\": [\n \"s3:ListAccessGrants\",\n \"s3:ListAccessGrantsLocations\",\n \"s3:GetDataAccess\",\n \"s3:GetAccessGrantsInstanceForPrefix\",\n \"s3:ListCallerAccessGrants"\n ],\n \"Resource\": \"arn:aws:s3:us-east-2:111122223333:access-grants/default\"\n }\n ]\n }\n", "CreatedAt": "2023-06-16T00:07:47.473000+00:00" }
contoh Mendapatkan kebijakan sumber daya S3 Access Grants

Anda juga dapat menggunakan CLI untuk mendapatkan atau menghapus kebijakan sumber daya untuk instance S3 Access Grants.

Untuk mendapatkan kebijakan sumber daya S3 Access Grants, gunakan perintah contoh berikut. Untuk menggunakan contoh perintah ini, ganti user input placeholders dengan informasi Anda sendiri.

aws s3control get-access-grants-instance-resource-policy \ --account-id 111122223333 \ --region us-east-2 { "Policy": "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Principal\":{\"AWS\":\"arn:aws:iam::111122223333:root\"},\"Action\":[\"s3:ListAccessGrants\",\"s3:ListAccessGrantsLocations\",\"s3:GetDataAccess\",\"s3:GetAccessGrantsInstanceForPrefix\",\"s3:ListCallerAccessGrants\"],\"Resource\":\"arn:aws: s3:us-east-2:111122223333:access-grants/default\"}]}", "CreatedAt": "2023-06-16T00:07:47.473000+00:00" }
contoh Menghapus kebijakan sumber daya S3 Access Grants

Untuk menghapus kebijakan sumber daya S3 Access Grants, gunakan perintah contoh berikut. Untuk menggunakan contoh perintah ini, ganti user input placeholders dengan informasi Anda sendiri.

aws s3control delete-access-grants-instance-resource-policy \ --account-id 111122223333 \ --region us-east-2 // No response body

Anda dapat menambahkan kebijakan sumber daya dengan menggunakan PutAccessGrantsInstanceResourcePolicy API.

Jika Anda ingin memberikan akses lintas akun untuk instans S3 Access Grants ada di akun Anda 111122223333 ke akun kedua444455556666, kebijakan sumber daya untuk instance S3 Access Grants di akun Anda 111122223333 harus memberikan 444455556666 izin akun kedua untuk melakukan tindakan berikut:

  • s3:ListAccessGrants

  • s3:ListAccessGrantsLocations

  • s3:GetDataAccess

  • s3:GetAccessGrantsInstanceForPrefix

Dalam kebijakan sumber daya instans S3 Access Grants, tentukan instance S3 Access Grants sebagaiResource, dan akun kedua sebagai. ARN 444455556666 Principal Untuk menggunakan contoh berikut, ganti user input placeholders dengan informasi Anda sendiri.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "444455556666" }, "Action": [ "s3:ListAccessGrants", "s3:ListAccessGrantsLocations", "s3:GetDataAccess", "s3:GetAccessGrantsInstanceForPrefix" ], "Resource": "arn:aws:s3:us-east-2:111122223333:access-grants/default" } ] }

Anda kemudian dapat menggunakan PutAccessGrantsInstanceResourcePolicy APIuntuk mengonfigurasi kebijakan.

Untuk informasi tentang REST API dukungan untuk memperbarui, mendapatkan, atau menghapus kebijakan sumber daya untuk instance S3 Access Grants, lihat bagian berikut di Referensi Layanan API Penyimpanan Sederhana Amazon:

Bagian ini memberi Anda AWS SDK contoh cara mengonfigurasi kebijakan sumber daya S3 Access Grants Anda untuk memberikan akses AWS akun kedua ke beberapa data S3 Anda.

Java

Tambahkan, perbarui, dapatkan, atau hapus kebijakan sumber daya untuk mengelola akses lintas akun ke instans S3 Access Grants Anda.

contoh Menambahkan atau memperbarui kebijakan sumber daya instans S3 Access Grants

Jika Anda ingin memberikan akses lintas akun untuk instans S3 Access Grants ada di akun Anda 111122223333 ke akun kedua444455556666, kebijakan sumber daya untuk instance S3 Access Grants di akun Anda 111122223333 harus memberikan 444455556666 izin akun kedua untuk melakukan tindakan berikut:

  • s3:ListAccessGrants

  • s3:ListAccessGrantsLocations

  • s3:GetDataAccess

  • s3:GetAccessGrantsInstanceForPrefix

Dalam kebijakan sumber daya instans S3 Access Grants, tentukan instance S3 Access Grants sebagaiResource, dan akun kedua sebagai. ARN 444455556666 Principal Untuk menggunakan contoh berikut, ganti user input placeholders dengan informasi Anda sendiri.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "444455556666" }, "Action": [ "s3:ListAccessGrants", "s3:ListAccessGrantsLocations", "s3:GetDataAccess", "s3:GetAccessGrantsInstanceForPrefix" ], "Resource": "arn:aws:s3:us-east-2:111122223333:access-grants/default" } ] }

Untuk menambah atau memperbarui kebijakan sumber daya instans S3 Access Grants, gunakan contoh kode berikut:

public void putAccessGrantsInstanceResourcePolicy() { PutAccessGrantsInstanceResourcePolicyRequest putRequest = PutAccessGrantsInstanceResourcePolicyRequest.builder() .accountId(111122223333) .policy(RESOURCE_POLICY) .build(); PutAccessGrantsInstanceResourcePolicyResponse putResponse = s3Control.putAccessGrantsInstanceResourcePolicy(putRequest); LOGGER.info("PutAccessGrantsInstanceResourcePolicyResponse: " + putResponse); }

Respons:

PutAccessGrantsInstanceResourcePolicyResponse( Policy={ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": { "AWS": "444455556666" }, "Action": [ "s3:ListAccessGrants", "s3:ListAccessGrantsLocations", "s3:GetDataAccess", "s3:GetAccessGrantsInstanceForPrefix", "s3:ListCallerAccessGrants" ], "Resource": "arn:aws:s3:us-east-2:111122223333:access-grants/default" }] } )
contoh Mendapatkan kebijakan sumber daya S3 Access Grants

Untuk mendapatkan kebijakan sumber daya S3 Access Grants, gunakan contoh kode berikut. Untuk menggunakan perintah contoh berikut, ganti user input placeholders dengan informasi Anda sendiri.

public void getAccessGrantsInstanceResourcePolicy() { GetAccessGrantsInstanceResourcePolicyRequest getRequest = GetAccessGrantsInstanceResourcePolicyRequest.builder() .accountId(111122223333) .build(); GetAccessGrantsInstanceResourcePolicyResponse getResponse = s3Control.getAccessGrantsInstanceResourcePolicy(getRequest); LOGGER.info("GetAccessGrantsInstanceResourcePolicyResponse: " + getResponse); }

Respons:

GetAccessGrantsInstanceResourcePolicyResponse( Policy={"Version":"2012-10-17","Statement":[{"Effect":"Allow","Principal":{"AWS":"arn:aws:iam::444455556666:root"},"Action":["s3:ListAccessGrants","s3:ListAccessGrantsLocations","s3:GetDataAccess","s3:GetAccessGrantsInstanceForPrefix","s3:ListCallerAccessGrants"],"Resource":"arn:aws:s3:us-east-2:111122223333:access-grants/default"}]}, CreatedAt=2023-06-15T22:54:44.319Z )
contoh Menghapus kebijakan sumber daya S3 Access Grants

Untuk menghapus kebijakan sumber daya S3 Access Grants, gunakan contoh kode berikut. Untuk menggunakan perintah contoh berikut, ganti user input placeholders dengan informasi Anda sendiri.

public void deleteAccessGrantsInstanceResourcePolicy() { DeleteAccessGrantsInstanceResourcePolicyRequest deleteRequest = DeleteAccessGrantsInstanceResourcePolicyRequest.builder() .accountId(111122223333) .build(); DeleteAccessGrantsInstanceResourcePolicyResponse deleteResponse = s3Control.putAccessGrantsInstanceResourcePolicy(deleteRequest); LOGGER.info("DeleteAccessGrantsInstanceResourcePolicyResponse: " + deleteResponse); }

Respons:

DeleteAccessGrantsInstanceResourcePolicyResponse()

Langkah 3: Berikan IAM identitas dalam izin akun kedua untuk memanggil instans S3 Access Grants di akun Anda

Setelah pemilik data Amazon S3 mengonfigurasi kebijakan lintas akun untuk instans S3 Access Grants di akun111122223333, pemilik akun kedua 444455556666 harus membuat kebijakan berbasis identitas untuk IAM pengguna atau perannya, dan pemilik harus memberi mereka akses ke instance S3 Access Grants. Dalam kebijakan berbasis identitas, sertakan satu atau beberapa tindakan berikut, tergantung pada apa yang diberikan dalam kebijakan sumber daya instans S3 Access Grants dan izin yang ingin Anda berikan:

  • s3:ListAccessGrants

  • s3:ListAccessGrantsLocations

  • s3:GetDataAccess

  • s3:GetAccessGrantsInstanceForPrefix

  • s3:ListCallerAccessGrants

Mengikuti pola akses AWS lintas akun, IAM pengguna atau peran di akun kedua 444455556666 harus secara eksplisit memiliki satu atau lebih izin ini. Misalnya, berikan s3:GetDataAccess izin agar IAM pengguna atau peran dapat memanggil instance S3 Access Grants di akun 111122223333 untuk meminta kredensil.

Untuk menggunakan contoh perintah ini, ganti user input placeholders dengan informasi Anda sendiri.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetDataAccess", ], "Resource": "arn:aws:s3:us-east-2:111122223333:access-grants/default" } ] }

Untuk informasi tentang mengedit kebijakan IAM berbasis identitas, lihat Mengedit IAM kebijakan dalam panduan.AWS Identity and Access Management

Langkah 4: Buat hibah di instance S3 Access Grants dari akun Anda yang memberikan IAM identitas di akun kedua akses ke beberapa data S3 Anda

Untuk langkah konfigurasi terakhir, Anda dapat membuat hibah di instans S3 Access Grants di akun 111122223333 yang memberikan akses ke IAM identitas di akun kedua 444455556666 ke beberapa data S3 di akun Anda. Anda dapat melakukan ini dengan menggunakan Konsol Amazon S3,, CLIAPI, dan. SDKs Untuk informasi selengkapnya, lihat Membuat pemberian.

Dalam hibah, tentukan IAM identitas dari akun kedua, dan tentukan lokasi mana dalam data S3 Anda (bucket, awalan, atau objek) yang Anda berikan akses. AWS ARN Lokasi ini harus sudah terdaftar dengan instans S3 Access Grants Anda. Untuk informasi selengkapnya, lihat Mendaftarkan lokasi. Anda dapat secara opsional menentukan subprefix. Misalnya, jika lokasi yang Anda berikan akses adalah bucket, dan Anda ingin membatasi akses lebih jauh ke objek tertentu di bucket tersebut, maka berikan nama kunci objek di S3SubPrefix bidang tersebut. Atau jika Anda ingin membatasi akses ke objek di bucket dengan nama kunci yang dimulai dengan awalan tertentu, seperti2024-03-research-results/, maka teruskanS3SubPrefix=2024-03-research-results/.

Berikut ini adalah contoh CLI perintah untuk membuat hibah akses untuk identitas di akun kedua. Untuk informasi selengkapnya, lihat Membuat pemberian. Untuk menggunakan contoh perintah ini, ganti user input placeholders dengan informasi Anda sendiri.

aws s3control create-access-grant \ --account-id 111122223333 \ --access-grants-location-id default \ --access-grants-location-configuration S3SubPrefix=prefixA* \ --permission READ \ --grantee GranteeType=IAM,GranteeIdentifier=arn:aws:iam::444455556666:role/data-consumer-1

Setelah mengonfigurasi akses lintas akun, pengguna atau peran di akun kedua dapat melakukan hal berikut: