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 Wilayah AWS di akun Anda, Anda mendaftarkan lokasi S3 dalam instance tersebut. Lokasi S3 Access Grants memetakan lokasi default S3 (s3://), bucket, atau awalan ke peran AWS Identity and Access Management (). IAM S3 Access Grants mengasumsikan IAM peran ini untuk menjual kredensil sementara kepada penerima hibah yang mengakses lokasi tertentu. Anda harus terlebih dahulu mendaftarkan setidaknya satu lokasi di instans S3 Access Grants sebelum Anda dapat membuat hibah akses.

Kasus penggunaan yang disarankan

Kami menyarankan Anda mendaftarkan lokasi default (s3://) dan memetakannya ke IAM peran. Lokasi di jalur S3 default (s3://) mencakup akses ke semua bucket S3 Anda di akun Anda Wilayah AWS . Saat membuat hibah akses, Anda dapat mempersempit cakupan hibah menjadi bucket, awalan, atau objek di dalam lokasi default.

Kasus penggunaan manajemen akses yang kompleks

Kasus penggunaan manajemen akses yang lebih kompleks mungkin mengharuskan Anda untuk mendaftar lebih dari lokasi default. Beberapa contoh kasus penggunaan tersebut adalah:

  • Anggaplah bahwa amzn-s3-demo-bucket adalah lokasi terdaftar di instance S3 Access Grants Anda dengan IAM peran yang dipetakan padanya, tetapi IAM peran ini ditolak akses ke awalan tertentu di dalam bucket. Dalam hal ini, Anda dapat mendaftarkan awalan yang tidak dapat diakses IAM peran sebagai lokasi terpisah dan memetakan lokasi tersebut ke IAM peran yang berbeda dengan akses yang diperlukan.

  • Misalkan Anda ingin membuat hibah yang membatasi akses hanya ke pengguna dalam titik akhir virtual private cloud (VPC). Dalam hal ini, Anda dapat mendaftarkan lokasi untuk bucket di mana IAM peran membatasi akses ke titik VPC akhir. Kemudian, ketika penerima hibah meminta kredensil S3 Access Grants, S3 Access Grants mengasumsikan peran lokasi untuk menjual kredenal sementara. IAM Kredensi ini akan menolak akses ke bucket tertentu kecuali penelepon berada dalam titik akhir. VPC Izin penolakan ini diterapkan selain izin regulerREAD,WRITE, atau READWRITE yang ditentukan dalam hibah.

Saat mendaftarkan lokasi, Anda juga harus menentukan IAM peran yang diasumsikan oleh S3 Access Grants untuk menjual kredensi sementara dan untuk mencakup izin untuk hibah tertentu.

Jika kasus penggunaan Anda mengharuskan Anda mendaftarkan beberapa lokasi di instans S3 Access Grants, Anda dapat mendaftarkan salah satu dari berikut ini:

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

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

s3://amzn-s3-demo-bucket1/ IAM-role-For-bucket

Lokasi ini mencakup semua objek dalam bucket yang ditentukan.

s3://amzn-s3-demo-bucket1/prefix-name IAM-role-For-prefix

Lokasi ini mencakup semua objek dalam bucket dengan nama kunci objek yang dimulai dengan awalan ini.

Sebelum Anda dapat mendaftarkan bucket atau awalan tertentu, pastikan Anda melakukan hal berikut:

  • 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.

    Menambahkan awalan adalah langkah opsional. Awalan adalah string di awal nama kunci objek. Anda dapat menggunakannya untuk mengatur objek di bucket Anda serta untuk manajemen akses. Untuk menambahkan prefiks ke bucket, lihat Membuat nama kunci objek.

  • Buat IAM peran yang memiliki izin untuk mengakses data S3 Anda di file. Wilayah AWS Untuk informasi selengkapnya, lihat Membuat IAM peran di panduan AWS IAM Identity Center pengguna.

  • Dalam kebijakan kepercayaan IAM peran, berikan akses utama layanan S3 Access Grants (access-grants.s3.amazonaws.com) ke IAM peran yang Anda buat. Untuk melakukannya, Anda dapat membuat JSON file yang berisi pernyataan berikut. Untuk menambahkan kebijakan kepercayaan ke akun Anda, lihat Membuat peran menggunakan kebijakan kepercayaan khusus.

    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"}, "Condition":{ "StringEquals":{ "aws:SourceAccount":"accountId", "aws:SourceArn":"arn:aws:s3:region:accountId:access-grants/default" } //Optionally, for an IAM Identity Center use case, add: "ForAnyValue:StringEquals": { "aws:RequestContextProvider":"arn:aws:iam::aws:contextProvider/IdentityCenter" } } } ] }
  • Buat IAM kebijakan untuk melampirkan izin Amazon S3 ke IAM peran yang Anda buat. 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 menyertakan AWS KMS izin yang diperlukan untuk peran tersebut dalam IAM kebijakan. Jika Anda tidak menggunakan fitur ini, Anda dapat menghapus izin ini dari IAM kebijakan Anda.

    • Anda dapat membatasi IAM peran 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 menggunakan iniCondition, ganti instance S3 Access Grants ARN dalam Condition pernyataan dengan instance S3 Access Grants AndaARN, 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"] } } }, //Optionally add the following section if you use SSE-KMS encryption { "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, atau. REST API AWS SDKs

catatan

Setelah Anda mendaftarkan lokasi pertama di instans S3 Access Grants, instans Anda masih tidak memiliki hibah akses individual di dalamnya. Untuk membuat hibah akses, lihatMembuat pemberian.

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 URI jalur S3 ke lokasi yang ingin Anda daftarkan. Untuk URI format S3, lihat tabel format lokasi. Setelah Anda memasukkanURI, Anda dapat memilih Lihat untuk menelusuri lokasi.

    2. Untuk IAMperan tersebut, pilih salah satu dari yang berikut ini:

      • Pilih dari IAM peran yang ada

        Pilih IAM peran 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 IAM peran ARN

        Arahkan ke IAMKonsol. Salin Nama Sumber Daya Amazon (ARN) IAM peran 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 IAM peran dengan akses 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 JSON file yang berisi pernyataan berikut. 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 IAM perintah 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 IAM kebijakan 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 tersebut dalam IAM kebijakan. Jika Anda tidak menggunakan fitur ini, Anda dapat menghapus izin ini dari IAM kebijakan Anda.

Untuk memastikan bahwa IAM peran hanya dapat digunakan untuk mengakses data di S3 jika kredensialnya dijual oleh S3 Access Grants, contoh ini menunjukkan cara menambahkan Condition pernyataan yang menentukan instance () S3 Access Grants () dalam kebijakan Anda. s3:AccessGrantsInstance: InstanceArn IAM 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 REST API dukungan Amazon S3 untuk mengelola instans S3 Access Grants, lihat bagian berikut di Referensi Layanan Penyimpanan Sederhana Amazon: API

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

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 IAM peran dengan akses 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 )