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. Untuk izin IAM yang perlu dijalankan aplikasi Anda, lihat. Tugas peran IAM

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

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

    • sedang menarik gambar kontainer dari repositori pribadi Amazon ECR.

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

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

  • Tugas Anda di-host di salah satu AWS Fargate atau instans Amazon EC2 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 AmazonECSTaskExecutionRolePolicy yang berisi izin yang diperlukan oleh kasus penggunaan umum yang dijelaskan di atas. Mungkin perlu menambahkan kebijakan sebaris ke peran eksekusi tugas Anda untuk kasus penggunaan khusus yang diuraikan di bawah ini.

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

Peran eksekusi tugas Amazon ECS dapat dibuat untuk Anda di konsol Amazon ECS; namun, Anda harus secara manual melampirkan kebijakan IAM terkelola untuk tugas agar Amazon ECS 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 pencarian konsol IAM di panduan pengguna IAM.

Membuat peran eksekusi tugas (ecsTaskExecutionRole)

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

AWS Management Console
Untuk membuat peran IAM eksekusi tugas ()AWS Management Console
  1. Buka konsol IAM di https://console.aws.amazon.com/iam/.

  2. Dalam panel navigasi, pilih Roles (Peran), lalu Create role (Buat peran).

  3. Di bagian Jenis entitas tepercaya, pilih AWS layanan, Layanan Kontainer Elastis.

  4. Untuk kasus penggunaan, pilih Elastic Container Service Task, dan kemudian pilih Berikutnya.

  5. Di bagian Tambahkan izin, lakukan hal berikut:

    1. Cari AmazonECS, TaskExecutionRolePolicy lalu pilih kebijakan.

    2. Di bawah Setel batas izin - opsional, pilih Buat peran tanpa batas izin.

    3. Pilih Berikutnya.

  6. Di bawah Nama, tinjau, dan buat, lakukan hal berikut:

    1. Untuk Nama Peran, ketik ecsTaskExecutionRole.

    2. Untuk Tambahkan tag (opsional), tentukan tag kustom apa pun yang akan dikaitkan dengan kebijakan.

  7. Pilih Buat peran.

AWS CLI

Ganti semua input pengguna 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

Izin IAM yang diperlukan untuk otentikasi registri pribadi

Peran eksekusi tugas Amazon ECS diperlukan untuk menggunakan fitur ini. Hal ini mengizinkan agen kontainer untuk menarik citra kontainer.

Untuk memberikan akses ke rahasia yang Anda buat, tambahkan izin berikut sebagai kebijakan inline ke peran eksekusi tugas. Untuk informasi selengkapnya, lihat Menambahkan dan Menghapus Kebijakan IAM.

  • secretsmanager:GetSecretValue

  • kms:Decrypt—Diperlukan hanya jika kunci 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 IAM yang diperlukan untuk rahasia Amazon ECS

Untuk menggunakan fitur rahasia Amazon ECS, Anda harus memiliki peran eksekusi tugas Amazon ECS dan mereferensikannya dalam definisi tugas Anda. Hal ini memungkinkan agen kontainer untuk menarik sumber daya Secrets Manager yang diperlukan AWS Systems Manager atau Secrets. Untuk informasi selengkapnya, lihat Meneruskan data sensitif ke wadah.

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 peluncuran EC2, 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" ] } ] }

Izin IAM opsional untuk tugas Fargate yang menarik gambar Amazon ECR melalui 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.

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

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

penting

Tindakan ecr:GetAuthorizationToken API tidak dapat memiliki aws:sourceVpc atau aws:sourceVpce kunci-kunci kondisi yang diterapkan padanya karena panggilan GetAuthorizationToken API melewati elastic network interface yang dimiliki oleh AWS Fargate daripada elastic network interface dari tugas tersebut.

{ "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" } } } ] }