View a markdown version of this page

Peran IAM pelaksanaan 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 pelaksanaan tugas Amazon ECS

Peran pelaksanaan tugas memberikan izin kepada kontainer Amazon ECS dan agen Fargate untuk membuat panggilan API AWS 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 tersedia untuk agen yang berjalan di instans Anda oleh Amazon ECS yang secara berkala mengirimkan kredenSIAL sementara peran tersebut, tetapi izin tersebut tidak dapat diakses secara langsung oleh kontainer dalam tugas. Untuk izin IAM yang perlu dijalankan kode aplikasi Anda di dalam wadah, lihatPeran IAM tugas Amazon ECS.

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

  • Tugas Anda dihosting di AWS Fargate, Instans Terkelola Amazon ECS, atau 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.

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

  • Tugas Anda dihosting di salah satu inst AWS Fargate ans atau Amazon EC2 dan:

catatan

Peran eksekusi tugas didukung oleh agen kontainer 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 sebelumnya. Untuk informasi selengkapnya, lihat AmazonECSTaskExecutionRolePolicy Panduan Refer AWS ensi Kebijakan Terkelola. Mungkin perlu menambahkan kebijakan sebaris ke peran eksekusi tugas Anda untuk kasus penggunaan khusus

Konsol Amazon ECS menciptakan peran eksekusi tugas. Anda dapat melampirkan kebijakan IAM terkelola secara manual untuk tugas agar Amazon ECS dapat menambahkan izin untuk fitur dan penyempurnaan di masa mendatang 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.

Jika Anda menarik gambar sebagai pengguna yang diautentikasi, Anda cenderung tidak terpengaruh oleh perubahan yang terjadi pada Docker Hub penggunaan dan batasan. Untuk informasi selengkapnya lihat, O tentikasi 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 mengotentikasi ke registri gambar pribadi menggunakan. repositoryCredentials Tidak mungkin menyetel variabel lingkungan agen kontainer Amazon ECS ECS_ENGINE_AUTH_TYPE atau ECS_ENGINE_AUTH_DATA atau memodifikasi ecs.config file untuk tugas yang dihosting di Fargate. Untuk informasi selengkapnya, lihat O tentikasi registri pribadi untuk tugas.

Membuat peran eksekusi tugas

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

Konsol Manajemen AWS
Untuk membuat peran layanan untuk Elastic Container Service (konsol IAM)
  1. Masuk ke Konsol Manajemen AWS 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 Ti pe 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 Tam bah izin, cari AmazonECSTaskExecutionRolePolicy, lalu pilih kebijakan.

  7. Pilih Berikutnya.

  8. Untuk Nama Peran, masukkan ecs TaskExecutionRole.

  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:

    JSON
    JSON
    { "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 AWS AmazonECSTaskExecutionRolePolicy kebijakan terkelola 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 registri pribadi di luar AWS (seperti Docker Hub, Quay.io, atau registri pribadi Anda sendiri) menggunakan kredentif Secrets Manager

Izin otentikasi registri pribadi

Berikan data sensitif dengan Manajer Sistem atau Manajer Rahasia

Izin Manajer Rahasia atau Manajer Sistem

Mintalah tugas Fargate menarik gambar Amazon ECR melalui titik akhir antarmuka

Tugas Fargate menarik gambar Amazon ECR melalui izin titik akhir antarmuka

Meng-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 di Container Insights

Lihat peristiwa siklus hidup Amazon ECS di Container Insights

Izin diperlukan untuk melihat peristiwa siklus hidup Amazon ECS di Container Insights

Izin otentikasi registri pribadi

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

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

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

  • secretsmanager:GetSecretValue—Diperlukan untuk mengambil kredenSIAL registri pribadi dari Manajer Rahasia.

  • 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 sebaris yang menambahkan izin.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:Decrypt", "secretsmanager:GetSecretValue" ], "Resource": [ "arn:aws:secretsmanager:us-east-1:111122223333:secret:secret_name", "arn:aws:kms:us-east-1:111122223333:key/key_id" ] } ] }

Izin Manajer Rahasia atau Manajer Sistem

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

Menggunakan Manajer Rahasia

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

  • secretsmanager:GetSecretValue— Diperlukan jika Anda merujuk rahasia Manajer Rahasia. Menambahkan izin untuk mengambil rahasia dari Manajer Rahasia.

Kebijakan contoh berikut menambahkan izin yang diperlukan.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": [ "arn:aws:secretsmanager:us-east-1:111122223333:secret:secret_name" ] } ] }

Menggunakan Manajer Sistem

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 menyediakan akses ke parameter Penyimpanan Parameter Manajer Sistem yang Anda buat, tambahkan izin berikut secara manual sebagai kebijakan ke peran eksekusi tugas. Untuk informasi tentang cara mengelola izin, lihat Men ambahkan dan Menghapus izin identitas IAM di Panduan Pengguna IAM.

  • ssm:GetParameters- Diperlukan jika Anda mereferensikan parameter Penyimpanan Parameter Manajer Sistem dalam definisi tugas. Menambahkan izin untuk mengambil parameter Manajer Sistem.

  • secretsmanager:GetSecretValue- Diperlukan jika Anda mereferensikan rahasia Manajer Rahasia baik secara langsung atau jika parameter Penyimpanan Parameter Manajer Sistem Anda mereferensikan rahasia Manajer Rahasia dalam definisi tugas. Menambahkan izin untuk mengambil rahasia dari Manajer Rahasia.

  • 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.

Kebijakan contoh berikut menambahkan izin yang diperlukan:

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

Tugas Fargate menarik gambar Amazon ECR melalui izin titik akhir antarmuka

Saat meluncurkan tugas yang menggunakan 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:SourceVpcMembatasi akses ke VPC tertentu. Anda dapat membatasi VPC ke VPC yang menghosting tugas dan titik akhir.

  • aws:SourceVpceMembatasi akses ke titik akhir VPC tertentu.

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

JSON
{ "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": "arn:aws:ecr:*:*:repository/*", "Condition": { "StringEquals": { "aws:sourceVpce": "vpce-0123456789abcdef0" } } } ] }

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 wadah Amazon ECS dan agen Fargate untuk menarik gambar kontainer atas nama Anda. Untuk implementasi ECS dasar, izin ini harus ditambahkan ke peran eksekusi tugas daripada peran IAM tugas.

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

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

JSON
{ "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 API Amazon ECR secara langsung. Untuk informasi tentang izin peran IAM tugas untuk Amazon ECR, lihatIzin Amazon ECR.

Izin penyimpanan file Amazon S3

Saat Anda menentukan file konfigurasi yang dihosting di Amazon S3, peran eksekusi tugas harus menyertakan s3:GetObject izin untuk file konfigurasi dan s3:GetBucketLocation izin pada 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.

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

Pertimbangan Keamanan Penting

Saat menggunakan fitur Amazon ECS yang terintegrasi dengan bucket Amazon S3, terapkan validasi kepemilikan bucket untuk mencegah serangan pengambilalihan bucket. Tanpa validasi yang tepat, jika bucket Amazon S3 dihapus dan dibuat ulang oleh aktor jahat dengan nama yang sama, tugas Anda mungkin secara tidak sadar memuat konfigurasi berbahaya atau mengirim data sensitif ke bucket yang dikendalikan penyerang.

Kondisi Kebijakan IAM yang Direkomendasikan:

"Condition": { "StringEquals": { "aws:ResourceAccount": "TRUSTED-ACCOUNT-ID" } }

Ganti TRUSTED-ACCOUNT-ID dengan ID AWS akun yang memiliki bucket S3.

Kondisi ini memastikan peran eksekusi tugas Anda hanya dapat mengakses bucket Amazon S3 yang dimiliki oleh akun tepercaya yang ditentukan.