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. 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 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 TaskExecutionRolePolicy AmazonECS yang berisi izin yang diperlukan oleh kasus penggunaan umum yang dijelaskan di atas. Untuk informasi selengkapnya, lihat AmazonECS di Panduan TaskExecutionRolePolicy Referensi Kebijakan Terkelola.AWS 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 batas kecepatan tarik Docker Hub. 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 Selanjutnya.

  6. Di bagian Tambahkan izin, cari TaskExecutionRolePolicyAmazonECS, lalu pilih kebijakan.

  7. Pilih Selanjutnya.

  8. Untuk nama Peran, masukkan ecsTaskExecutionPeran.

  9. Tinjau peran lalu 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

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

Fitur

Izin tambahan

Gunakan kredensyal Secrets Manager untuk mengakses repositori pribadi image container Anda

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 mengonfigurasi Wawasan Kontainer untuk melihat peristiwa siklus hidup Amazon ECS

Melihat peristiwa siklus hidup Amazon ECS di Wawasan Kontainer

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

Izin otentikasi registri pribadi

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 Secrets Manager atau Systems Manager

Izin untuk mengizinkan agen kontainer untuk 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 merujuk 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" ] } ] }

Tugas Fargate menarik gambar Amazon ECR melalui izin titik akhir antarmuka

Ketika ada titik akhir VPC untuk ecr.dkr dan ecr.api di VPC yang sama dengan tugas Fargate, titik akhir menggunakan titik akhir. Jika tidak ada titik akhir VPC, tugas menggunakan antarmuka yang dimiliki Fargate.

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

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 Menentukan Izin dalam Kebijakan 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:::DOC-EXAMPLE-BUCKET/folder_name/config_file_name" ] }, { "Effect": "Allow", "Action": [ "s3:GetBucketLocation" ], "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET" ] } ] }

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

Izin berikut diperlukan dalam peran tugas untuk mengonfigurasi peristiwa siklus hidup:

  • peristiwa: PutRule

  • peristiwa: PutTargets

  • log: CreateLogGroup

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "events:PutRule", "events:PutTargets", "logs:CreateLogGroup" ], "Resource": "*" } ] }

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

Izin berikut diperlukan untuk melihat peristiwa siklus hidup. Tambahkan izin berikut sebagai kebijakan inline ke peran eksekusi tugas. Untuk informasi selengkapnya, lihat Menambahkan dan Menghapus Kebijakan IAM.

  • peristiwa: DescribeRule

  • peristiwa: ListTargetsByRule

  • log: DescribeLogGroups

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "events:DescribeRule", "events:ListTargetsByRule", "logs:DescribeLogGroups" ], "Resource": "*" } ] }