Berikan izin untuk penyimpanan Amazon S3 lintas akun - Amazon SageMaker

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

Berikan izin untuk penyimpanan Amazon S3 lintas akun

Saat menyiapkan SageMaker domain atau profil pengguna bagi pengguna untuk mengakses SageMaker Canvas, Anda menentukan lokasi penyimpanan Amazon S3 untuk artefak Canvas. Artefak ini termasuk salinan yang disimpan dari kumpulan data input Anda, artefak model, prediksi, dan data aplikasi lainnya. Anda dapat menggunakan bucket Amazon S3 default yang SageMaker dibuat, atau Anda dapat menyesuaikan lokasi penyimpanan dan menentukan bucket Anda sendiri untuk menyimpan data aplikasi Canvas.

Anda dapat menentukan bucket Amazon S3 di AWS akun lain untuk menyimpan data Canvas, tetapi pertama-tama Anda harus memberikan izin lintas akun agar Canvas dapat mengakses bucket.

Bagian berikut menjelaskan cara memberikan izin ke Canvas untuk mengunggah dan mengunduh objek ke dan dari bucket Amazon S3 di akun lain. Ada izin tambahan saat bucket Anda dienkripsi. AWS KMS

Persyaratan

Sebelum Anda mulai, tinjau persyaratan berikut:

  • Bucket Amazon S3 lintas akun (dan kunci AWS KMS terkait) harus berada di Wilayah AWS yang sama dengan domain pengguna Canvas atau profil pengguna.

  • Amazon S3 terakhir URI untuk folder pelatihan di lokasi penyimpanan Canvas Anda harus 128 karakter atau kurang. S3 terakhir URI terdiri dari jalur bucket Anda s3://<your-bucket-name>/<folder-name>/ ditambah jalur yang ditambahkan Canvas ke bucket Anda:Canvas/<user-profile-name>/Training. Misalnya, jalur yang dapat diterima yang kurang dari 128 karakter adalahs3://<amzn-s3-demo-bucket>/<machine-learning>/Canvas/<user-1>/Training.

Izin untuk bucket Amazon S3 lintas akun

Bagian berikut menguraikan langkah-langkah dasar untuk memberikan izin yang diperlukan sehingga Canvas dapat mengakses bucket Amazon S3 Anda di akun lain. Untuk petunjuk selengkapnya, lihat Contoh 2: Pemilik bucket yang memberikan izin bucket lintas akun di Panduan Pengguna Amazon S3.

  1. Buat bucket Amazon S3,bucketA, di Akun A.

  2. Pengguna Canvas ada di akun lain yang disebut Akun B. Pada langkah-langkah berikut, kita mengacu pada IAM peran pengguna Canvas seperti roleB pada Akun B.

    Berikan IAM peran roleB di Akun B izin untuk mengunduh (GetObject) dan mengunggah (PutObject) objek ke dan dari bucketA Akun A dengan melampirkan IAM kebijakan.

    Untuk membatasi akses ke folder bucket tertentu, tentukan nama folder di elemen sumber daya, sepertiarn:aws:s3:::<bucketA>/FolderName/*. Untuk informasi selengkapnya, lihat Bagaimana cara menggunakan IAM kebijakan untuk memberikan akses khusus pengguna ke folder tertentu?

    catatan

    Tindakan tingkat ember, seperti GetBucketCors dan, harus ditambahkan pada sumber daya tingkat emberGetBucketLocation, bukan folder.

    Contoh IAM kebijakan berikut memberikan izin yang diperlukan roleB untuk mengakses objek di: bucketA

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject", "s3:DeleteObject" ], "Resource": [ "arn:aws:s3:::bucketA/FolderName/*", ] }, { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetBucketCors", "s3:GetBucketLocation" ], "Resource": [ "arn:aws:s3:::bucketA", ] } ] }
  3. Konfigurasikan kebijakan bucket bucketA di Akun A untuk memberikan izin ke IAM peran roleB di Akun B.

    catatan

    Admin juga harus menonaktifkan Blokir semua akses publik di bawah bagian Izin bucket.

    Berikut ini adalah contoh kebijakan bucket bucketA untuk memberikan izin yang diperlukan untukroleB:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::accountB:role/roleB" }, "Action": [ "s3:DeleteObject", "s3:GetObject", "s3:PutObject" ], "Resource": "arn:aws:s3:::bucketA/FolderName/*" }, { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::accountB:role/roleB" }, "Action": [ "s3:ListBucket", "s3:GetBucketCors", "s3:GetBucketLocation" ], "Resource": "arn:aws:s3:::bucketA" } ] }

Setelah mengonfigurasi izin sebelumnya, profil pengguna Canvas Anda di Akun B sekarang dapat menggunakan bucket Amazon S3 di Akun A sebagai lokasi penyimpanan artefak Canvas.

Izin untuk bucket Amazon S3 lintas akun yang dienkripsi AWS KMS

Prosedur berikut menunjukkan cara memberikan izin yang diperlukan agar Canvas dapat mengakses bucket Amazon S3 Anda di akun lain yang dienkripsi. AWS KMS Langkah-langkahnya mirip dengan prosedur di atas, tetapi dengan izin tambahan. Untuk informasi selengkapnya tentang pemberian akses KMS kunci lintas akun, lihat Mengizinkan pengguna di akun lain menggunakan KMS kunci di Panduan AWS KMS Pengembang.

  1. Buat bucket Amazon S3bucketA, dan kunci Amazon KMS S3 s3KmsInAccountA di Akun A.

  2. Pengguna Canvas ada di akun lain yang disebut Akun B. Pada langkah-langkah berikut, kita mengacu pada IAM peran pengguna Canvas seperti roleB pada Akun B.

    Berikan IAM peran roleB di Akun B izin untuk melakukan hal berikut:

    • Unduh (GetObject) dan unggah (PutObject) objek ke dan dari bucketA di Akun A.

    • Akses AWS KMS kunci s3KmsInAccountA di Akun A.

    Contoh IAM kebijakan berikut memberikan izin yang diperlukan roleB untuk mengakses objek bucketA dan menggunakan kunci: KMS s3KmsInAccountA

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject", "s3:DeleteObject" ], "Resource": [ "arn:aws:s3:::bucketA/FolderName/*" ] }, { "Effect": "Allow", "Action": [ "s3:GetBucketCors", "s3:GetBucketLocation" ], "Resource": [ "arn:aws:s3:::bucketA" ] }, { "Action": [ "kms:DescribeKey", "kms:CreateGrant", "kms:RetireGrant", "kms:GenerateDataKey", "kms:GenerateDataKeyWithoutPlainText", "kms:Decrypt" ], "Effect": "Allow", "Resource": "arn:aws:kms:{region}:accountA:key/s3KmsInAccountA" } ] }
  3. Konfigurasikan kebijakan bucket untuk bucketA dan kebijakan utama s3KmsInAccountA di Akun A untuk memberikan izin ke IAM peran roleB di Akun B.

    Berikut ini adalah contoh kebijakan bucket bucketA untuk memberikan izin yang diperlukan untukroleB:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::accountB:role/roleB" }, "Action": [ "s3:DeleteObject", "s3:GetObject", "s3:PutObject" ], "Resource": "arn:aws:s3:::bucketA/FolderName/*" }, { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::accountB:role/roleB" }, "Action": [ "s3:GetBucketCors", "s3:GetBucketLocation" ], "Resource": "arn:aws:s3:::bucketA" } ] }

    Contoh berikut adalah kebijakan kunci yang Anda lampirkan ke KMS kunci s3KmsInAccountA di Akun A untuk memberikan roleB akses. Untuk informasi selengkapnya tentang cara membuat dan melampirkan pernyataan kebijakan utama, lihat Membuat kebijakan kunci di Panduan AWS KMS Pengembang.

    { "Sid": "Allow use of the key", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::accountB:role/roleB" ] }, "Action": [ "kms:DescribeKey", "kms:CreateGrant", "kms:RetireGrant", "kms:GenerateDataKey", "kms:GenerateDataKeyWithoutPlainText", "kms:Decrypt" ], "Resource": "*" }

Setelah mengonfigurasi izin sebelumnya, profil pengguna Canvas Anda di Akun B sekarang dapat menggunakan bucket Amazon S3 terenkripsi di Akun A sebagai lokasi penyimpanan artefak Canvas.