Peran IAM eksekusi tugas Amazon ECS - Amazon Elastic Container Service

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

Peran IAM eksekusi tugas Amazon ECS

Peran eksekusi tugas memberikan izin kepada kontainer Amazon ECS dan agen Fargate untuk melakukan panggilan AWS API atas nama Anda. IAM role eksekusi tugas diperlukan sesuai dengan persyaratan tugas Anda. Anda dapat memiliki beberapa peran eksekusi tugas untuk berbagai tujuan dan layanan yang terkait dengan akun Anda.

catatan

Izin ini tidak dapat diakses oleh kontainer dalam tugas. Untuk izin IAM yang perlu dijalankan aplikasi Anda, lihat. Peran IAM tugas Amazon ECS

Berikut ini adalah kasus penggunaan umum untuk peran IAM eksekusi tugas:

  • Tugas Anda di-host pada AWS Fargateatau pada instans eksternal dan:

    • menarik gambar kontainer dari repositori pribadi Amazon ECR.

    • menarik gambar kontainer dari repositori pribadi Amazon ECR di akun yang berbeda dari akun yang menjalankan tugas.

    • mengirim log kontainer ke CloudWatch Log menggunakan driver awslogs log. Untuk informasi selengkapnya, lihat Kirim log Amazon ECS ke CloudWatch .

  • Tugas Anda di-host di salah satu AWS Fargate atau EC2 instans Amazon dan:

catatan

Peran eksekusi tugas didukung oleh agen penampung Amazon ECS versi 1.16.0 dan yang lebih baru.

Amazon ECS menyediakan kebijakan terkelola bernama Amazon ECSTask ExecutionRolePolicy yang berisi izin yang diperlukan oleh kasus penggunaan umum yang dijelaskan di atas. Untuk informasi selengkapnya, lihat Amazon ECSTask ExecutionRolePolicy di Panduan Referensi Kebijakan AWS Terkelola. Mungkin perlu menambahkan kebijakan sebaris ke peran eksekusi tugas Anda untuk kasus penggunaan khusus

Konsol Amazon ECS membuat peran eksekusi tugas. Anda dapat secara manual melampirkan kebijakan IAM terkelola untuk tugas agar Amazon ECS dapat menambahkan izin untuk fitur dan penyempurnaan future saat diperkenalkan. Anda dapat menggunakan pencarian konsol IAM untuk mencari ecsTaskExecutionRole dan melihat apakah akun Anda sudah memiliki peran eksekusi tugas. Untuk informasi selengkapnya, lihat penelusuran konsol IAM di panduan pengguna IAM.

Jika Anda menarik gambar sebagai pengguna yang diautentikasi, Anda cenderung tidak terpengaruh oleh perubahan yang terjadi pada Docker Hubpenggunaan dan batasan. Untuk informasi selengkapnya lihat, Autentikasi registri pribadi untuk instance kontainer.

Dengan menggunakan Amazon ECR dan Amazon ECR Public, Anda dapat menghindari batasan yang diberlakukan oleh Docker. Jika Anda menarik gambar dari Amazon ECR, ini juga membantu mempersingkat waktu tarik jaringan dan mengurangi perubahan transfer data saat lalu lintas meninggalkan VPC Anda.

Saat Anda menggunakan Fargate, Anda harus mengautentikasi ke registri gambar pribadi menggunakan. repositoryCredentials Tidak mungkin menyetel variabel lingkungan agen penampung Amazon ECS ECS_ENGINE_AUTH_TYPE ECS_ENGINE_AUTH_DATA atau memodifikasi ecs.config file untuk tugas yang dihosting di Fargate. Untuk informasi selengkapnya, lihat Autentikasi registri pribadi untuk tugas.

Membuat peran eksekusi tugas

Jika akun Anda belum memiliki peran eksekusi tugas, gunakan langkah-langkah berikut untuk membuat peran tersebut.

AWS Management Console
Untuk membuat peran layanan untuk Elastic Container Service (konsol IAM)
  1. Masuk ke AWS Management Console dan buka konsol IAM di https://console.aws.amazon.com/iam/.

  2. Di panel navigasi konsol IAM, pilih Peran, dan lalu pilih Buat peran.

  3. Untuk jenis entitas Tepercaya, pilih Layanan AWS.

  4. Untuk Service atau use case, pilih Elastic Container Service, lalu pilih kasus penggunaan Elastic Container Service Task.

  5. Pilih Berikutnya.

  6. Di bagian Tambahkan izin, cari Amazon ECSTask ExecutionRolePolicy, lalu pilih kebijakan.

  7. Pilih Berikutnya.

  8. Untuk nama Peran, masukkan ecsTaskExecutionPeran.

  9. Tinjau peran lalu pilih Buat peran.

AWS CLI

Ganti semua user input dengan informasi Anda sendiri.

  1. Buat file bernama ecs-tasks-trust-policy.json yang berisi kebijakan kepercayaan yang akan digunakan untuk peran IAM. File tersebut harus berisi hal berikut:

    { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "ecs-tasks.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
  2. Buat peran IAM bernama ecsTaskExecutionRole menggunakan kebijakan kepercayaan yang dibuat pada langkah sebelumnya.

    aws iam create-role \ --role-name ecsTaskExecutionRole \ --assume-role-policy-document file://ecs-tasks-trust-policy.json
  3. Lampirkan AmazonECSTaskExecutionRolePolicy kebijakan yang AWS dikelola ke ecsTaskExecutionRole peran.

    aws iam attach-role-policy \ --role-name ecsTaskExecutionRole \ --policy-arn arn:aws:iam::aws:policy/service-role/AmazonECSTaskExecutionRolePolicy

Setelah Anda membuat peran, tambahkan izin tambahan ke peran untuk fitur berikut.

Fitur Izin tambahan

Tarik gambar kontainer dari pendaftar pribadi di luar AWS (seperti Docker Hub, Quay.io, atau registri pribadi Anda sendiri) menggunakan kredensil Secrets Manager

Izin otentikasi registri pribadi

Lulus data sensitif dengan Systems Manager atau Secrets Manager

Izin Secrets Manager atau Systems Manager

Minta tugas Fargate menarik gambar Amazon ECR melalui titik akhir antarmuka

Tugas Fargate menarik gambar Amazon ECR melalui izin titik akhir antarmuka

Host file konfigurasi dalam bucket Amazon S3

Izin penyimpanan file Amazon S3

Konfigurasikan Wawasan Kontainer untuk melihat peristiwa siklus hidup Amazon ECS

Izin diperlukan untuk mengaktifkan peristiwa siklus hidup Amazon ECS dalam Container Insights

Melihat peristiwa siklus hidup Amazon ECS di Wawasan Kontainer

Izin diperlukan untuk melihat peristiwa siklus hidup Amazon ECS di Wawasan Kontainer

Izin otentikasi registri pribadi

Autentikasi registri pribadi memungkinkan tugas Amazon ECS Anda menarik gambar kontainer dari pendaftar pribadi di luar AWS (seperti Docker Hub, Quay.io, atau registri pribadi Anda sendiri) yang memerlukan kredensi otentikasi. Fitur ini menggunakan Secrets Manager untuk menyimpan kredenal registri Anda dengan aman, yang kemudian direferensikan dalam definisi tugas Anda menggunakan parameter. repositoryCredentials

Untuk informasi selengkapnya tentang mengonfigurasi autentikasi registri pribadi, lihat Menggunakan gambar AWS non-kontainer di Amazon ECS.

Untuk menyediakan akses ke rahasia yang berisi kredensil registri pribadi Anda, tambahkan izin berikut sebagai kebijakan inline ke peran eksekusi tugas. Untuk informasi selengkapnya, lihat Menambahkan dan Menghapus Kebijakan IAM.

  • secretsmanager:GetSecretValue—Diperlukan untuk mengambil kredensi registri pribadi dari Secrets Manager.

  • kms:Decrypt—Wajib hanya jika rahasia Anda menggunakan kunci KMS khusus dan bukan kunci default. Nama Sumber Daya Amazon (ARN) untuk kunci kustom Anda harus ditambahkan sebagai sumber daya.

Berikut ini adalah contoh kebijakan inline yang menambahkan izin.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:Decrypt", "secretsmanager:GetSecretValue" ], "Resource": [ "arn:aws:secretsmanager:<region>:<aws_account_id>:secret:secret_name", "arn:aws:kms:<region>:<aws_account_id>:key/key_id" ] } ] }

Izin Secrets Manager atau Systems Manager

Izin untuk mengizinkan agen kontainer menarik sumber daya Secrets Manager yang diperlukan AWS Systems Manager atau Secrets. Untuk informasi selengkapnya, lihat Meneruskan data sensitif ke wadah Amazon ECS.

Menggunakan Secrets Manager

Untuk memberikan akses ke rahasia Secrets Manager yang Anda buat, tambahkan izin berikut secara manual ke peran eksekusi tugas. Untuk informasi tentang cara mengelola izin, lihat Menambahkan dan Menghapus izin identitas IAM di Panduan Pengguna IAM.

  • secretsmanager:GetSecretValue— Diperlukan jika Anda mereferensikan rahasia Secrets Manager. Menambahkan izin untuk mengambil rahasia dari Secrets Manager.

Contoh kebijakan berikut menambahkan izin yang diperlukan.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": [ "arn:aws:secretsmanager:region:aws_account_id:secret:secret_name" ] } ] }

Menggunakan Systems Manager

penting

Untuk tugas yang menggunakan tipe EC2 peluncuran, Anda harus menggunakan variabel konfigurasi agen ECS ECS_ENABLE_AWSLOGS_EXECUTIONROLE_OVERRIDE=true untuk menggunakan fitur ini. Anda dapat menambahkannya ke file ./etc/ecs/ecs.config selama pembuatan instans kontainer atau Anda dapat menambahkannya ke instans yang ada, lalu memulai ulang agen ECS. Untuk informasi selengkapnya, lihat Konfigurasi agen kontainer Amazon ECS.

Untuk memberikan akses ke parameter Penyimpanan Parameter Systems Manager yang Anda buat, tambahkan izin berikut secara manual sebagai kebijakan ke peran eksekusi tugas. Untuk informasi tentang cara mengelola izin, lihat Menambahkan dan Menghapus izin identitas IAM di Panduan Pengguna IAM.

  • ssm:GetParameters— Diperlukan jika Anda mereferensikan parameter Systems Manager Parameter Store dalam definisi tugas. Menambahkan izin untuk mengambil parameter Systems Manager.

  • secretsmanager:GetSecretValue— Diperlukan jika Anda mereferensikan rahasia Secrets Manager baik secara langsung atau jika parameter Parameter Store Systems Manager Anda mereferensikan rahasia Secrets Manager dalam definisi tugas. Menambahkan izin untuk mengambil rahasia dari Secrets Manager.

  • kms:Decrypt— Diperlukan hanya jika rahasia Anda menggunakan kunci yang dikelola pelanggan dan bukan kunci default. ARN untuk kunci khusus Anda harus ditambahkan sebagai sumber daya. Menambahkan izin untuk mendekripsi kunci yang dikelola pelanggan.

Contoh kebijakan berikut menambahkan izin yang diperlukan:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:GetParameters", "secretsmanager:GetSecretValue", "kms:Decrypt" ], "Resource": [ "arn:aws:ssm:region:aws_account_id:parameter/parameter_name", "arn:aws:secretsmanager:region:aws_account_id:secret:secret_name", "arn:aws:kms:region:aws_account_id:key/key_id" ] } ] }

Tugas Fargate menarik gambar Amazon ECR melalui izin titik akhir antarmuka

Saat meluncurkan tugas yang menggunakan tipe peluncuran Fargate yang menarik gambar dari Amazon ECR saat Amazon ECR dikonfigurasi untuk menggunakan titik akhir VPC antarmuka, Anda dapat membatasi akses tugas ke titik akhir VPC atau VPC tertentu. Lakukan ini dengan membuat peran eksekusi tugas untuk tugas yang akan digunakan yang menggunakan kunci kondisi IAM.

Gunakan kunci kondisi global IAM berikut untuk membatasi akses ke titik akhir VPC atau VPC tertentu. Untuk informasi selengkapnya, lihat Kunci Konteks Syarat Global AWS.

  • aws:SourceVpc—Membatasi akses ke VPC tertentu. Anda dapat membatasi VPC ke VPC yang menampung tugas dan titik akhir.

  • aws:SourceVpce—Membatasi akses ke titik akhir VPC tertentu.

Kebijakan peran eksekusi tugas berikut memberikan contoh untuk menambahkan kunci syarat:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ecr:GetAuthorizationToken", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ecr:BatchCheckLayerAvailability", "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage" ], "Resource": "*", "Condition": { "StringEquals": { "aws:sourceVpce": "vpce-xxxxxx", "aws:sourceVpc": "vpc-xxxxx" } } } ] }

Izin Amazon ECR

Izin berikut diperlukan saat Anda perlu menarik gambar kontainer dari repositori pribadi Amazon ECR. Peran eksekusi tugas harus memiliki izin ini untuk memungkinkan penampung Amazon ECS dan agen Fargate menarik gambar kontainer atas nama Anda. Untuk implementasi ECS dasar, izin ini harus ditambahkan ke peran eksekusi tugas daripada peran IAM tugas.

Kebijakan terkelola peran eksekusi tugas Amazon ECS (AmazonECSTaskExecutionRolePolicy) menyertakan izin yang diperlukan untuk menarik gambar dari Amazon ECR. Jika menggunakan kebijakan terkelola, Anda tidak perlu menambahkan izin ini secara terpisah.

Jika Anda membuat kebijakan khusus, sertakan izin berikut untuk mengizinkan pengambilan gambar dari Amazon ECR:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ecr:BatchGetImage", "ecr:GetDownloadUrlForLayer", "ecr:GetAuthorizationToken" ], "Resource": "*" } ] }

Perhatikan bahwa izin ini berbeda dari izin yang mungkin diperlukan dalam peran IAM tugas jika kode aplikasi Anda perlu berinteraksi dengan Amazon ECR secara langsung. APIs Untuk informasi tentang izin peran IAM tugas untuk Amazon ECR, lihat. Izin Amazon ECR

Izin penyimpanan file Amazon S3

Saat Anda menentukan file konfigurasi yang di-host di Amazon S3, peran eksekusi tugas harus menyertakan s3:GetObject izin untuk file konfigurasi dan s3:GetBucketLocation izin di bucket Amazon S3 tempat file tersebut berada. Untuk informasi selengkapnya, lihat Tindakan kebijakan untuk Amazon S3 di Panduan Pengguna Layanan Penyimpanan Sederhana Amazon.

Kebijakan contoh berikut menambahkan izin yang diperlukan untuk mengambil file dari Amazon S3. Tentukan nama bucket Amazon S3 dan nama file konfigurasi Anda.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket/folder_name/config_file_name" ] }, { "Effect": "Allow", "Action": [ "s3:GetBucketLocation" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket" ] } ] }