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

  • Identitas IAM 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 kredensyal 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 kredensyal 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 kredensyal sementara jika ada hibah yang memberikan akses akun kedua ke data Amazon S3 Anda. Untuk informasi selengkapnya, lihat Membuat pemberian.

  3. Pengguna atau aplikasi di akun kedua (B) menggunakan kredensyal 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 izin IAM untuk IAM Principal di akun kedua 444455556666 untuk meminta kredensyal dari instans S3 Access Grants di akun Anda. 111122223333

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

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 Membuat 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 pengguna AWS Identity and Access Management (IAM) atau peran dari orang lain Akun AWS ke instans Hibah Akses S3 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:GetDataAccess— pengguna, peran, atau aplikasi dapat meminta kredensyal 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 instans 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 identitas IAM tertentu di akun Anda111122223333, misalnya, dengan menggunakan aws:PrincipalArn kondisi, tetapi Anda tidak harus melakukannya dengan Hibah Akses S3. Sebagai gantinya, dalam instance S3 Access Grants Anda, Anda dapat membuat hibah untuk identitas IAM individual 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 dengan menggunakan operasi S3 Access Grants API 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 perintah put-access-grants-instance-resource-policy CLI.

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 ARN instance S3 Access Grants Anda sebagaiResource, dan akun kedua sebagai. 444455556666 Principal Untuk menggunakan contoh berikut, ganti placeholder input pengguna 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 ],\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\"],\"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 ARN instance S3 Access Grants Anda sebagaiResource, dan akun kedua sebagai. 444455556666 Principal Untuk menggunakan contoh berikut, ganti placeholder input pengguna 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 API untuk mengonfigurasi kebijakan.

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

Bagian ini memberi Anda contoh AWS SDK tentang 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 ARN instance S3 Access Grants Anda sebagaiResource, dan akun kedua sebagai. 444455556666 Principal Untuk menggunakan contoh berikut, ganti placeholder input pengguna 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" ], "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"],"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 identitas IAM di 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 pengguna atau peran IAM-nya, dan pemilik harus memberi mereka akses ke instans 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

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

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 berbasis identitas IAM, lihat Mengedit kebijakan IAM dalam panduan.AWS Identity and Access Management

Langkah 4: Buat hibah di instance S3 Access Grants dari akun Anda yang memberikan identitas IAM 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 identitas IAM di akun kedua 444455556666 ke beberapa data S3 di akun Anda. Anda dapat melakukannya dengan menggunakan Konsol Amazon S3, CLI, API, dan SDK. Untuk informasi selengkapnya, lihat Membuat pemberian.

Dalam hibah, tentukan AWS ARN identitas IAM dari akun kedua, dan tentukan lokasi mana dalam data S3 Anda (ember, awalan, atau objek) yang Anda berikan akses. 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 perintah CLI 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: