Izin Amazon ECR - AWS HealthOmics

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

Izin Amazon ECR

Sebelum HealthOmics layanan dapat menjalankan alur kerja dalam wadah dari repositori Amazon ECR pribadi Anda, Anda membuat kebijakan sumber daya untuk repositori. Kebijakan memberikan izin kepada HealthOmics layanan untuk menggunakan kontainer. Anda menambahkan kebijakan sumber daya ini ke setiap repositori pribadi yang direferensikan oleh alur kerja.

catatan

Repositori pribadi dan alur kerja harus berada di wilayah yang sama.

Jika AWS akun yang berbeda memiliki alur kerja dan repositori, Anda perlu mengonfigurasi izin lintas akun.

Anda tidak perlu memberikan akses repositori tambahan untuk alur kerja bersama. Namun, Anda dapat membuat kebijakan yang mengizinkan atau menolak akses alur kerja tertentu ke gambar kontainer.

Untuk menggunakan fitur cache Amazon ECR pull through, Anda perlu membuat kebijakan izin registri.

Bagian berikut menjelaskan cara mengonfigurasi izin sumber daya Amazon ECR untuk skenario ini. Untuk informasi selengkapnya tentang izin di Amazon ECR, lihat Izin registri pribadi di Amazon ECR.

Membuat kebijakan sumber daya untuk repositori Amazon ECR

Buat kebijakan sumber daya untuk memungkinkan HealthOmics layanan menjalankan alur kerja menggunakan wadah di repositori. Kebijakan ini memberikan izin kepada kepala HealthOmics layanan untuk mengakses tindakan ECR Amazon yang diperlukan.

Ikuti langkah-langkah ini untuk membuat kebijakan:

  1. Buka halaman repositori pribadi di konsol Amazon ECR dan pilih repositori yang Anda berikan akses.

  2. Dari navigasi bilah samping, pilih Izin.

  3. Pilih Edit.

  4. Pilih Edit kebijakan JSON.

  5. Tambahkan pernyataan kebijakan berikut, lalu pilih Simpan.

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Sid": "omics workflow access", "Effect": "Allow", "Principal": { "Service": "omics.amazonaws.com" }, "Action": [ "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage", "ecr:BatchCheckLayerAvailability" ], "Resource": "*" } ] }

Menjalankan alur kerja dengan kontainer lintas akun

Jika AWS akun yang berbeda memiliki alur kerja dan penampung, Anda perlu mengonfigurasi izin lintas akun berikut:

  1. Perbarui kebijakan Amazon ECR untuk repositori untuk secara eksplisit memberikan izin ke akun yang memiliki alur kerja.

  2. Perbarui peran layanan untuk akun yang memiliki alur kerja untuk memberinya akses ke image kontainer.

Contoh berikut menunjukkan kebijakan sumber daya Amazon ECR yang memberikan akses ke akun yang memiliki alur kerja.

Dalam contoh ini:

  • ID akun alur kerja: 111122223333

  • ID akun repositori kontainer: 444455556666

  • Nama wadah: samtools

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "omics.amazonaws.com" }, "Action": [ "ecr:BatchCheckLayerAvailability", "ecr:BatchGetImage", "ecr:GetDownloadUrlForLayer" ], "Resource": "*" }, { "Sid": "AllowAccessToTheServiceRoleOfTheAccountThatOwnsTheWorkflow", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/DemoCustomer" }, "Action": [ "ecr:BatchCheckLayerAvailability", "ecr:BatchGetImage", "ecr:GetDownloadUrlForLayer" ], "Resource": "*" } ] }

Untuk menyelesaikan penyiapan, tambahkan pernyataan kebijakan berikut ke peran layanan akun yang memiliki alur kerja. Kebijakan memberikan izin untuk peran layanan untuk mengakses image kontainer “samtools”. Pastikan untuk mengganti nomor akun, nama kontainer, dan wilayah dengan nilai Anda sendiri.

{ "Sid": "CrossAccountEcrRepoPolicy", "Effect": "Allow", "Action": ["ecr:BatchCheckLayerAvailability", "ecr:BatchGetImage", "ecr:GetDownloadUrlForLayer"], "Resource": "arn:aws:ecr:us-west-2:444455556666:repository/samtools" }

Kebijakan Amazon ECR untuk alur kerja bersama

catatan

HealthOmics secara otomatis memungkinkan alur kerja bersama untuk mengakses repositori Amazon ECR di akun pemilik alur kerja, sementara alur kerja berjalan di akun pelanggan. Anda tidak perlu memberikan akses repositori tambahan untuk alur kerja bersama. Untuk informasi selengkapnya lihat Berbagi HealthOmics alur kerja.

Secara default, pelanggan tidak memiliki akses ke repositori Amazon ECR untuk menggunakan container yang mendasarinya. Secara opsional, Anda dapat menyesuaikan akses ke repositori Amazon ECR dengan menambahkan kunci kondisi ke kebijakan sumber daya repositori. Bagian berikut memberikan contoh kebijakan.

Batasi akses ke alur kerja tertentu

Anda dapat mencantumkan alur kerja individual dalam pernyataan kondisi, sehingga hanya alur kerja ini yang dapat menggunakan kontainer dalam repositori. Kunci SourceArnkondisi menentukan ARN dari alur kerja bersama. Contoh berikut memberikan izin untuk alur kerja yang ditentukan untuk menggunakan repositori ini.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "OmicsAccessPrincipal", "Effect": "Allow", "Principal": { "Service": "omics.amazonaws.com" }, "Action": [ "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage", "ecr:BatchCheckLayerAvailability" ], "Resource": "*", "Condition": { "StringEquals": { "aws:SourceArn": "arn:aws:omics:us-east-1:111122223333:workflow/1234567" } } } ] }

Batasi akses ke akun tertentu

Anda dapat mencantumkan akun pelanggan dalam pernyataan kondisi, sehingga hanya akun ini yang memiliki izin untuk menggunakan kontainer di repositori. Kunci SourceAccountkondisi menentukan Akun AWS pelanggan. Contoh berikut memberikan izin untuk akun yang ditentukan untuk menggunakan repositori ini.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "OmicsAccessPrincipal", "Effect": "Allow", "Principal": { "Service": "omics.amazonaws.com" }, "Action": [ "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage", "ecr:BatchCheckLayerAvailability" ], "Resource": "*", "Condition": { "StringEquals": { "aws:SourceAccount": "111122223333" } } } ] }

Anda juga dapat menolak izin Amazon ECR untuk pelanggan tertentu, seperti yang ditunjukkan dalam contoh kebijakan berikut.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "OmicsAccessPrincipal", "Effect": "Allow", "Principal": { "Service": "omics.amazonaws.com" }, "Action": [ "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage", "ecr:BatchCheckLayerAvailability" ], "Resource": "*", "Condition": { "StringNotEquals": { "aws:SourceAccount": "111122223333" } } } ] }

Kebijakan untuk Amazon ECR menarik cache

Untuk menggunakan cache pull through Amazon ECR, Anda membuat kebijakan izin registri. Anda juga membuat template pembuatan repositori, yang mendefinisikan izin untuk repositori yang dibuat oleh Amazon ECR pull through cache.

Bagian berikut mencakup contoh kebijakan ini. Untuk informasi selengkapnya tentang pull through cache, lihat Menyinkronkan registri upstream dengan registri pribadi Amazon ECR di Panduan Pengguna Amazon Elastic Container Registry.

Kebijakan izin registri

Untuk menggunakan Amazon ECR pull through cache, buat kebijakan izin registri. Kebijakan izin registri memberikan kontrol atas replikasi dan menarik izin cache.

Untuk replikasi lintas akun, Anda harus secara eksplisit mengizinkan masing-masing Akun AWS yang dapat mereplikasi repositori ke registri Anda.

Secara default, saat Anda membuat aturan cache pull through, prinsipal IAM apa pun yang memiliki izin untuk menarik gambar dari registri pribadi juga dapat menggunakan aturan pull through cache. Anda dapat menggunakan izin registri untuk mempersempit cakupan izin ini hanya ke repositori tertentu.

Tambahkan kebijakan izin registri ke akun yang memiliki gambar kontainer.

Dalam contoh berikut, kebijakan memungkinkan HealthOmics layanan untuk membuat repositori untuk setiap registri upstream dan untuk memulai permintaan tarik upstream dari repositori yang dibuat.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "AllowPTCinRegPermissions", "Effect": "Allow", "Principal": { "Service": "omics.amazonaws.com" }, "Action": [ "ecr:CreateRepository", "ecr:BatchImportUpstreamImage" ], "Resource": [ "arn:aws:ecr:us-east-1:123456789012:repository/ecr-public/*", "arn:aws:ecr:us-east-1:123456789012:repository/docker-hub/*" ] } ] }

Templat pembuatan repositori

Untuk menggunakan cache pull through HealthOmics, repositori Amazon ECR harus memiliki template pembuatan repositori. Template mendefinisikan pengaturan konfigurasi untuk repositori pribadi yang dibuat untuk registri upstream.

Setiap template berisi awalan namespace repositori, yang digunakan Amazon ECR untuk mencocokkan repositori baru dengan templat tertentu. Template dapat menentukan konfigurasi untuk semua pengaturan repositori termasuk kebijakan akses berbasis sumber daya, kekekalan tag, enkripsi, dan kebijakan siklus hidup. Untuk informasi selengkapnya, lihat Templat pembuatan repositori di Panduan Pengguna Amazon Elastic Container Registry.

Dalam contoh berikut, kebijakan memungkinkan HealthOmics layanan untuk memulai permintaan tarik upstream dari repositori upstream.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "PTCRepoCreationTemplate", "Effect": "Allow", "Principal": { "Service": "omics.amazonaws.com" }, "Action": [ "ecr:BatchGetImage", "ecr:GetDownloadUrlForLayer" ], "Resource": "*" } ] }

Kebijakan untuk akses ECR Amazon lintas akun

Untuk akses lintas akun, pemilik repositori pribadi memperbarui kebijakan izin registri dan templat pembuatan repositori untuk mengizinkan akses ke akun lain dan peran jalankan akun tersebut.

Dalam kebijakan izin registri, tambahkan pernyataan kebijakan untuk mengizinkan peran jalankan akun lain mengakses tindakan ECR Amazon:

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "AllowCrossAccountPTCinRegPermissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:role/RUN_ROLE"}, "Action": [ "ecr:CreateRepository", "ecr:BatchGetImage", "ecr:BatchImportUpstreamImage" ], "Resource": "arn:aws:ecr:us-east-1:123456789012:repository/path/*" } ] }

Dalam template pembuatan repositori, tambahkan pernyataan kebijakan untuk mengizinkan peran jalankan akun lain mengakses gambar kontainer baru. Secara opsional, Anda dapat menambahkan pernyataan kondisi untuk membatasi akses ke alur kerja tertentu:

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "AllowCrossAccountPTCinRepoCreationTemplate", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RUN_ROLE"}, "Action": [ "ecr:BatchGetImage", "ecr:GetDownloadUrlForLayer" ], "Resource": "*", "Condition": { "StringEquals": { "aws:SourceArn": "arn:aws:omics:us-east-1:444455556666:workflow/WORKFLOW_ID", "aws:SourceAccount": "111122223333" } } } ] }

Tambahkan izin untuk dua tindakan tambahan (CreateRepository dan BatchImportUpstreamImage) dalam peran run dan tentukan sumber daya yang dapat diakses oleh peran run.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "CrossAccountPTCRunRolePolicy", "Effect": "Allow", "Action": [ "ecr:CreateRepository", "ecr:BatchImportUpstreamImage", "ecr:BatchCheckLayerAvailability", "ecr:BatchGetImage", "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage" ], "Resource": "arn:aws:ecr:us-east-1:123456789012::repository/{path}/*" } ] }