Mendaftarkan lokasi - Amazon Simple Storage Service

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

Mendaftarkan lokasi

Setelah membuat instans Amazon S3 Access Grants di akun Anda, Anda dapat mendaftarkan lokasi S3 Wilayah AWS dalam instance tersebut. Lokasi adalah sumber daya S3 yang berisi data yang ingin Anda berikan akses. Anda dapat mendaftarkan lokasi defaults3://, yang merupakan semua bucket Anda di Wilayah AWS, dan kemudian mempersempit cakupan akses nanti, saat Anda membuat hibah akses individual. Anda juga dapat mendaftarkan bucket tertentu atau bucket dan prefiks sebagai lokasi.

Anda harus terlebih dahulu mendaftarkan setidaknya satu lokasi dengan instans S3 Access Grants Anda sebelum Anda dapat membuat pemberian akses. Saat mendaftarkan lokasi, Anda juga harus menentukan peran AWS Identity and Access Management (IAM) yang diasumsikan oleh S3 Access Grants untuk memenuhi permintaan runtime untuk lokasi dan cakupan izin hingga pemberian tertentu saat runtime.

URI S3 Peran IAM Deskripsi
s3:// Default-IAM-role

Lokasi default, s3://, mencakup semua bucket di file Wilayah AWS.

s3://DOC-EXAMPLE-BUCKET1/ IAM-role-For-bucket

Lokasi ini mencakup semua objek dalam bucket yang ditentukan.

Sebelum Anda dapat mendaftarkan lokasi, pastikan Anda melakukan hal berikut ini:

  • Buat satu atau beberapa bucket yang berisi data yang ingin Anda berikan akses. Bucket ini harus ditempatkan Wilayah AWS sama dengan instance S3 Access Grants Anda. Untuk informasi selengkapnya, lihat Membuat bucket.

    Untuk menambahkan prefiks ke bucket, lihat Membuat nama kunci objek.

  • Buat peran IAM dan berikan akses pengguna utama layanan S3 Access Grants ke peran ini dalam file kebijakan sumber daya. Untuk melakukannya, Anda dapat membuat file JSON yang berisi pernyataan berikut ini. Untuk menambahkan kebijakan sumber daya ke akun Anda, lihat Membuat dan melampirkan kebijakan yang dikelola pelanggan pertama Anda.

    TestRolePolicy.json

    { "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt1234567891011", "Action": ["sts:AssumeRole", "sts:SetSourceIdentity", "sts:SetContext"], "Effect": "Allow", "Principal": {"Service":"access-grants.s3.amazonaws.com"} } ] }
  • Buat kebijakan IAM untuk melampirkan izin Amazon S3 ke peran IAM. Lihat file contoh iam-policy.json berikut ini, dan ganti user input placeholders dengan informasi Anda sendiri.

    catatan
    • Jika Anda menggunakan enkripsi sisi server dengan kunci AWS Key Management Service (AWS KMS) untuk mengenkripsi data Anda, contoh berikut menyertakan AWS KMS izin yang diperlukan untuk peran IAM dalam kebijakan. Jika Anda tidak menggunakan fitur ini, Anda dapat menghapus izin ini dari kebijakan IAM Anda.

    • Anda dapat membatasi peran IAM untuk mengakses data S3 hanya jika kredensialnya dijual oleh S3 Access Grants. Contoh ini menunjukkan cara menambahkan Condition pernyataan untuk instance S3 Access Grants tertentu. Untuk melakukan ini, ganti ARN instance S3 Access Grants dalam pernyataan kondisi dengan ARN instance S3 Access Grants Anda, yang memiliki format: arn:aws:s3:region:accountId:access-grants/default

    iam-policy.json

    { "Version":"2012-10-17", "Statement": [ { "Sid": "ObjectLevelReadPermissions", "Effect":"Allow", "Action":[ "s3:GetObject", "s3:GetObjectVersion", "s3:GetObjectAcl", "s3:GetObjectVersionAcl", "s3:ListMultipartUploadParts" ], "Resource":[ "arn:aws:s3:::*" ], "Condition":{ "StringEquals": { "aws:ResourceAccount": "accountId" }, "ArnEquals": { "s3:AccessGrantsInstanceArn": ["arn:aws:s3:region:accountId:access-grants/default"] } } }, { "Sid": "ObjectLevelWritePermissions", "Effect":"Allow", "Action":[ "s3:PutObject", "s3:PutObjectAcl", "s3:PutObjectVersionAcl", "s3:DeleteObject", "s3:DeleteObjectVersion", "s3:AbortMultipartUpload" ], "Resource":[ "arn:aws:s3:::*" ], "Condition":{ "StringEquals": { "aws:ResourceAccount": "accountId" }, "ArnEquals": { "s3:AccessGrantsInstanceArn": ["arn:aws:s3:Wilayah AWS:accountId:access-grants/default"] } } }, { "Sid": "BucketLevelReadPermissions", "Effect":"Allow", "Action":[ "s3:ListBucket" ], "Resource":[ "arn:aws:s3:::*" ], "Condition":{ "StringEquals": { "aws:ResourceAccount": "accountId" }, "ArnEquals": { "s3:AccessGrantsInstanceArn": ["arn:aws:s3:Wilayah AWS:accountId:access-grants/default"] } } }, { "Sid": "KMSPermissions", "Effect":"Allow", "Action":[ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource":[ "*" ] } ] }

Anda dapat mendaftarkan lokasi di instans S3 Access Grants menggunakan konsol Amazon S3,AWS CLI(), AWS Command Line Interface Amazon S3 REST API, atau SDK. AWS

Sebelum Anda dapat memberikan akses ke data S3 Anda dengan S3 Access Grants, Anda harus memiliki setidaknya satu lokasi terdaftar.

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

  2. Pada panel navigasi di sebelah kiri, pilih Access Grants.

  3. Pada halaman S3 Access Grants, pilih Region yang berisi instance S3 Access Grants yang ingin Anda gunakan.

    Jika Anda menggunakan instans S3 Access Grants untuk pertama kalinya, pastikan Anda telah menyelesaikan Langkah 1-buat instans S3 Access Grants dan navigasikan ke Langkah 2 dari wizard instans Set up Access Grants. Jika Anda sudah memiliki instans S3 Access Grants, pilih Lihat detail, lalu dari tab Lokasi, pilih Daftar lokasi.

    1. Untuk lingkup Lokasi, pilih Jelajahi S3 atau masukkan jalur URI S3 ke lokasi yang ingin Anda daftarkan. Untuk format URI S3, lihat tabel format lokasi. Setelah memasukkan URI, Anda dapat memilih Lihat untuk menelusuri lokasi.

    2. Untuk Peran IAM, pilih salah satu hal berikut ini:

      • Pilih dari peran IAM yang ada

        Pilih peran IAM dari daftar dropdown. Setelah Anda memilih peran, pilih Lihat untuk memastikan bahwa peran ini memiliki izin yang diperlukan untuk mengelola lokasi yang Anda daftarkan. Secara kustom, pastikan bahwa peran ini memberikan S3 Access memberikan izin sts:AssumeRole dan sts:SetSourceIdentity.

      • Masukkan ARN peran IAM

        Arahkan ke Konsol IAM. Salin Nama Sumber Daya Amazon (ARN) dari peran IAM dan tempel di kotak ini.

    3. Untuk menyelesaikan, pilih Berikutnya atau Daftar lokasi.

  4. Pemecahan Masalah:

    Tidak dapat mendaftarkan lokasi
    • Lokasi mungkin sudah terdaftar.

      Anda mungkin tidak memiliki s3:CreateAccessGrantsLocation izin untuk mendaftarkan lokasi. Menghubungi administrator akun Anda.

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

Anda dapat mendaftarkan lokasi default, s3://, atau lokasi kustom di instans S3 Access Grants Anda. Pastikan Anda terlebih dahulu membuat peran IAM dengan akses pengguna utama ke lokasi, lalu pastikan Anda memberikan izin S3 Access Grants untuk mengambil peran ini.

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

contoh Buat kebijakan sumber daya

Buat kebijakan yang memungkinkan S3 Access Grants untuk mengambil peran IAM. Untuk melakukannya, Anda dapat membuat file JSON yang berisi pernyataan berikut ini. Untuk menambahkan kebijakan sumber daya ke akun Anda, lihat Membuat dan melampirkan kebijakan yang dikelola pelanggan pertama Anda.

TestRolePolicy.json

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt1234567891011", "Action": ["sts:AssumeRole", "sts:SetSourceIdentity"], "Effect": "Allow", "Principal": {"Service":"access-grants.s3.amazonaws.com"} } ] }
contoh Buat peran

Jalankan perintah IAM berikut untuk membuat peran.

aws iam create-role --role-name accessGrantsTestRole \ --region us-east-2 \ --assume-role-policy-document file://TestRolePolicy.json

Menjalankan create-role perintah mengembalikan kebijakan:

{ "Role": { "Path": "/", "RoleName": "accessGrantsTestRole", "RoleId": "AROASRDGX4WM4GH55GIDA", "Arn": "arn:aws:iam::111122223333:role/accessGrantsTestRole", "CreateDate": "2023-05-31T18:11:06+00:00", "AssumeRolePolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt1685556427189", "Action": [ "sts:AssumeRole", "sts:SetSourceIdentity" ], "Effect": "Allow", "Principal": { "Service":"access-grants.s3.amazonaws.com" } } ] } } }

Buat kebijakan IAM untuk melampirkan izin Amazon S3 ke peran IAM. Lihat file contoh iam-policy.json berikut ini, dan ganti user input placeholders dengan informasi Anda sendiri.

catatan

Jika Anda menggunakan enkripsi sisi server dengan kunci AWS Key Management Service (AWS KMS) untuk mengenkripsi data, contoh berikut akan menambahkan AWS KMS izin yang diperlukan untuk peran IAM dalam kebijakan. Jika Anda tidak menggunakan fitur ini, Anda dapat menghapus izin ini dari kebijakan IAM Anda.

Untuk memastikan bahwa peran IAM hanya dapat digunakan untuk mengakses data di S3 jika kredensialnya dijual oleh S3 Access Grants, contoh ini menunjukkan cara menambahkan pernyataan Condition pernyataan yang menentukan instans S3 Access Grants (s3:AccessGrantsInstance: InstanceArn) dalam kebijakan IAM Anda. Saat menggunakan contoh kebijakan berikut, ganti user input placeholders dengan informasi Anda sendiri.

iam-policy.json

{ "Version":"2012-10-17", "Statement": [ { "Sid": "ObjectLevelReadPermissions", "Effect":"Allow", "Action":[ "s3:GetObject", "s3:GetObjectVersion", "s3:GetObjectAcl", "s3:GetObjectVersionAcl", "s3:ListMultipartUploadParts" ], "Resource":[ "arn:aws:s3:::*" ], "Condition":{ "StringEquals": { "aws:ResourceAccount": "accountId" }, "ArnEquals": { "s3:AccessGrantsInstanceArn": ["arn:aws:s3:region:accountId:access-grants/default"] } } }, { "Sid": "ObjectLevelWritePermissions", "Effect":"Allow", "Action":[ "s3:PutObject", "s3:PutObjectAcl", "s3:PutObjectVersionAcl", "s3:DeleteObject", "s3:DeleteObjectVersion", "s3:AbortMultipartUpload" ], "Resource":[ "arn:aws:s3:::*" ], "Condition":{ "StringEquals": { "aws:ResourceAccount": "accountId" }, "ArnEquals": { "s3:AccessGrantsInstanceArn": ["arn:aws:s3:Wilayah AWS:accountId:access-grants/default"] } } }, { "Sid": "BucketLevelReadPermissions", "Effect":"Allow", "Action":[ "s3:ListBucket" ], "Resource":[ "arn:aws:s3:::*" ], "Condition":{ "StringEquals": { "aws:ResourceAccount": "accountId" }, "ArnEquals": { "s3:AccessGrantsInstanceArn": ["arn:aws:s3:Wilayah AWS:accountId:access-grants/default"] } } }, { "Sid": "KMSPermissions", "Effect":"Allow", "Action":[ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource":[ "*" ] } ] }

Jalankan perintah berikut:

aws iam put-role-policy \ --role-name accessGrantsTestRole \ --policy-name accessGrantsTestRole \ --policy-document file://iam-policy.json
contoh Daftarkan lokasi default
aws s3control create-access-grants-location \ --account-id 111122223333 \ --location-scope s3:// \ --iam-role-arn arn:aws:iam::111122223333:role/accessGrantsTestRole

Respons:

{"CreatedAt": "2023-05-31T18:23:48.107000+00:00", "AccessGrantsLocationId": "default", "AccessGrantsLocationArn": "arn:aws:s3:us-east-2:111122223333:access-grants/default/location/default", "LocationScope": "s3://” "IAMRoleArn": "arn:aws:iam::111122223333:role/accessGrantsTestRole" }
contoh Daftarkan lokasi kustom
aws s3control create-access-grants-location \ --account-id 111122223333 \ --location-scope s3://DOC-BUCKET-EXAMPLE/ \ --iam-role-arn arn:aws:iam::123456789012:role/accessGrantsTestRole

Respons:

{"CreatedAt": "2023-05-31T18:23:48.107000+00:00", "AccessGrantsLocationId": "635f1139-1af2-4e43-8131-a4de006eb456", "AccessGrantsLocationArn": "arn:aws:s3:us-east-2: 111122223333:access-grants/default/location/635f1139-1af2-4e43-8131-a4de006eb888", "LocationScope": "s3://DOC-BUCKET-EXAMPLE/", "IAMRoleArn": "arn:aws:iam::111122223333:role/accessGrantsTestRole" }

Untuk informasi tentang dukungan API REST Amazon S3 untuk mengelola instans S3 Access Grants, lihat bagian berikut di Referensi API Amazon Simple Storage Service:

Bagian ini memberikan contoh cara mendaftarkan lokasi dengan menggunakan AWS SDK.

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

Java

Anda dapat mendaftarkan lokasi default, s3://, atau lokasi kustom di instans S3 Access Grants Anda. Pastikan Anda terlebih dahulu membuat peran IAM dengan akses pengguna utama ke lokasi, lalu pastikan Anda memberikan izin S3 Access Grants untuk mengambil peran ini.

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

contoh Daftarkan lokasi default

Permintaan:

public void createAccessGrantsLocation() { CreateAccessGrantsLocationRequest createRequest = CreateAccessGrantsLocationRequest.builder() .accountId("111122223333") .locationScope("s3://") .iamRoleArn("arn:aws:iam::123456789012:role/accessGrantsTestRole") .build(); CreateAccessGrantsLocationResponse createResponse = s3Control.createAccessGrantsLocation(createRequest); LOGGER.info("CreateAccessGrantsLocationResponse: " + createResponse); }

Respons:

CreateAccessGrantsLocationResponse( CreatedAt=2023-06-07T04:35:11.027Z, AccessGrantsLocationId=default, AccessGrantsLocationArn=arn:aws:s3:us-east-2:111122223333:access-grants/default/location/default, LocationScope=s3://, IAMRoleArn=arn:aws:iam::111122223333:role/accessGrantsTestRole )
contoh Daftarkan lokasi kustom

Permintaan:

public void createAccessGrantsLocation() { CreateAccessGrantsLocationRequest createRequest = CreateAccessGrantsLocationRequest.builder() .accountId("111122223333") .locationScope("s3://DOC-BUCKET-EXAMPLE/") .iamRoleArn("arn:aws:iam::111122223333:role/accessGrantsTestRole") .build(); CreateAccessGrantsLocationResponse createResponse = s3Control.createAccessGrantsLocation(createRequest); LOGGER.info("CreateAccessGrantsLocationResponse: " + createResponse); }

Respons:

CreateAccessGrantsLocationResponse( CreatedAt=2023-06-07T04:35:10.027Z, AccessGrantsLocationId=18cfe6fb-eb5a-4ac5-aba9-8d79f04c2012, AccessGrantsLocationArn=arn:aws:s3:us-east-2:111122223333:access-grants/default/location/18cfe6fb-eb5a-4ac5-aba9-8d79f04c2666, LocationScope= s3://test-bucket-access-grants-user123/, IAMRoleArn=arn:aws:iam::111122223333:role/accessGrantsTestRole )