Tugas Peran IAM - Amazon ECS

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

Tugas Peran IAM

Tugas Amazon ECS Anda dapat memiliki peran IAM yang terkait dengannya. Izin yang diberikan dalam peran IAM diasumsikan oleh kontainer yang berjalan dalam tugas.

Jika aplikasi kontainer Anda perlu memanggilAWS API, mereka harus menandatangani permintaanAWS API mereka denganAWS kredensyal, dan peran IAM tugas menyediakan strategi untuk mengelola kredensyal aplikasi Anda untuk digunakan, mirip dengan cara profil instans Amazon EC2 memberikan kredensyal ke instans Amazon EC2. Alih-alih membuat dan mendistribusikanAWS kredensyal Anda ke dalam kontainer, atau menggunakan peran instans Amazon EC2, Anda dapat mengaitkan IAM role dengan ketentuan tugas Amazon ECS atau OperasiRunTask API. Kontainer Anda kemudian dapat menggunakanAWS SDK atauAWS CLI untuk membuat permintaan API keAWS layanan resmi.

Berikut ini menjelaskan manfaat menggunakan peran IAM dengan tugas Anda.

  • Isolasi Kredensial: Kontainer hanya dapat mengambil kredensial untuk IAM role yang ditetapkan di dalam ketentuan tugas miliknya; kontainer yang tidak pernah memiliki akses ke kredensial yang dimaksudkan untuk kontainer lain milik tugas lain.

  • Otorisasi: Kontainer tidak sah tidak dapat mengakses kredensial IAM role yang ditetapkan untuk tugas lainnya.

  • Kemampuan audit: Pencatatan Akses dan peristiwa tersedia CloudTrail untuk memastikan audit retrospektif. Kredenal tugas memiliki kontekstaskArn yang dilampirkan ke sesi, sehingga CloudTrail log menunjukkan tugas yang menggunakan peran yang dimaksud.

catatan

Ketika Anda menentukan IAM role untuk tugas,AWS CLI atau SDK lainnya dalam kontainer untuk tugas tersebut menggunakanAWS kredensyal yang disediakan oleh peran tugas secara eksklusif dan mereka tidak lagi mewarisi izin IAM apa pun dari Amazon EC2 atau instans eksternal tempat mereka berjalan.

Anda dapat menentukan peran IAM tugas dalam ketentuan tugas Anda, atau Anda dapat menggunakantaskRoleArn penggantian saat menjalankan tugas secara manual dengan operasiRunTask API. Agen Amazon ECS menerima pesan muatan untuk memulai tugas dengan bidang tambahan yang berisi kredensi peran. Agen Amazon ECS menetapkan ID kredensi tugas unik sebagai token identifikasi dan memperbarui cache kredensitas internalnya sehingga token identifikasi tugas menunjuk ke kredensyal peran yang diterima dalam muatan. Agen Amazon ECS mengisi variabelAWS_CONTAINER_CREDENTIALS_RELATIVE_URI lingkungan dalamEnv objek (tersedia dengandocker inspect container_id perintah) untuk semua kontainer yang termasuk dalam tugas ini dengan URI relatif berikut:/credential_provider_version/credentials?id=task_credential_id.

Dari dalam kontainer, Anda dapat melakukan kueri terhadap titik akhir kredensial dengan perintah berikut:

curl 169.254.170.2$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI

Output:

{ "AccessKeyId": "ACCESS_KEY_ID", "Expiration": "EXPIRATION_DATE", "RoleArn": "TASK_ROLE_ARN", "SecretAccessKey": "SECRET_ACCESS_KEY", "Token": "SECURITY_TOKEN_STRING" }

Membuat IAM role dan kebijakan IAM untuk tugas Anda

Saat membuat kebijakan IAM untuk tugas Anda gunakan, kebijakan tersebut wajib menyertakan izin yang ingin Anda asumsikan oleh kontainer dalam tugas Anda. Anda dapat menggunakan kebijakanAWS terkelola yang ada atau Anda dapat membuat kebijakan kustom dari awal yang memenuhi kebutuhan spesifik Anda. Untuk informasi selengkapnya, lihat Membuat kebijakan IAM dalam Panduan Pengguna IAM.

penting

Untuk tugas Amazon ECS (untuk semua jenis peluncuran), sebaiknya gunakan kebijakan dan peran IAM untuk tugas Anda. Kredensyal ini memungkinkan tugas Anda untuk membuat permintaanAWS API tanpa memanggilsts:AssumeRole untuk mengambil peran yang sama yang sudah dikaitkan dengan tugas. Jika tugas Anda mengharuskan peran mengasumsikan dirinya sendiri, Anda harus membuat kebijakan kepercayaan yang secara eksplisit memungkinkan peran itu untuk mengasumsikan dirinya sendiri. Untuk informasi selengkapnya, lihat Memodifikasi kebijakan kepercayaan peran di Panduan Pengguna IAM.

Setelah kebijakan IAM dibuat, Anda dapat membuat peran IAM yang menyertakan kebijakan yang Anda referensikan dalam definisi tugas Amazon ECS Anda. Anda dapat membuat peran menggunakan kasus penggunaan Tugas Kontainer Elastic Container Service Task di dalam IAM console. Kemudian Anda dapat melampirkan kebijakan IAM spesifik Anda ke peran yang memberikan izin sesuai keinginan Anda kepada kontainer dalam tugas Anda. Prosedur di bawah menjelaskan cara melakukannya.

Jika Anda memiliki beberapa ketentuan tugas atau layanan yang memerlukan izin IAM, Anda harus mempertimbangkan untuk membuat peran untuk setiap ketentuan tugas tertentu atau layanan dengan izin minimum yang diperlukan untuk tugas-tugas untuk beroperasi sehingga Anda dapat meminimalkan akses yang Anda berikan untuk setiap tugas.

Untuk informasi tentang endpoint layanan untuk Wilayah Anda, lihat Endpoint layanan dalam Panduan Referensi Umum Amazon Web Services.

Peran tugas IAM harus memiliki kebijakan kepercayaan yang menentukanecs-tasks.amazonaws.com layanan. sts:AssumeRoleIzin ini memungkinkan tugas Anda untuk mengambil peran IAM yang berbeda dari yang digunakan instans Amazon EC2. Dengan cara ini, tugas Anda tidak mewarisi peran yang terkait dengan instans Amazon EC2. Disarankan bahwa Anda menggunakanaws:SourceAccount atau kunciaws:SourceArn kondisi untuk lingkup izin lebih lanjut untuk mencegah masalah keamanan wakil bingung. Kunci kondisi ini dapat ditentukan dalam hubungan kepercayaan atau dalam kebijakan IAM yang terkait dengan peran tersebut. Untuk mempelajari lebih lanjut tentang masalah deputi yang membingungkan dan cara melindungiAWS akun Anda, lihat Masalah wakil yang membingungkan di Panduan Pengguna IAM.

Berikut ini adalah contoh kebijakan kepercayaan. Anda harus mengganti ID Wilayah dan menentukan nomorAWS akun yang Anda gunakan saat meluncurkan tugas.

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "Service":[ "ecs-tasks.amazonaws.com" ] }, "Action":"sts:AssumeRole", "Condition":{ "ArnLike":{ "aws:SourceArn":"arn:aws:ecs:us-west-2:111122223333:*" }, "StringEquals":{ "aws:SourceAccount":"111122223333" } } } ] }
penting

Saat membuat peran IAM tugas Anda, disarankan agar Anda menggunakanaws:SourceAccount atau kunciaws:SourceArn kondisi baik dalam hubungan kepercayaan atau kebijakan IAM yang terkait dengan peran tersebut untuk mencegah masalah keamanan wakil yang membingungkan. Menggunakan kunciaws:SourceArn kondisi untuk menentukan klaster tertentu saat ini tidak didukung, Anda harus menggunakan wildcard untuk menentukan semua cluster. Untuk mempelajari lebih lanjut tentang masalah deputi yang membingungkan dan cara melindungiAWS akun Anda, lihat Masalah wakil yang membingungkan di Panduan Pengguna IAM.

Untuk membuat kebijakan IAM untuk tugas Anda (AWS Management Console)

Pada contoh ini, kami membuat kebijakan untuk mengizinkan akses hanya-baca ke Amazon S3 bucket. Anda bisa menyimpan kredensial basis data atau rahasia lain di bucket ini, dan kontainer di tugas Anda dapat membaca kredensial dari bucket dan memuatnya ke dalam aplikasi Anda.

  1. Buka konsol IAM di https://console.aws.amazon.com/iam/.

  2. Pada panel navigasi, pilih Kebijakan.

  3. Ikuti langkah-langkah di bawah salah satu tab berikut, yang menunjukkan cara menggunakan editor visual atau JSON.

Using the visual editor
  1. Untuk Layanan, pilih S3.

  2. Untuk Tindakan, perluas opsi Baca dan pilih GetObject.

  3. Untuk Sumber Daya, pilih Tambahkan ARN dan masukkan Amazon Resource Name (ARN) lengkap dari bucket Amazon S3 Anda.

  4. (Opsional) Untuk kondisi Permintaan, pilih Tambahkan kondisi. Ini direkomendasikan untuk mencegah masalah keamanan wakil yang bingung. Untuk mempelajari lebih lanjut tentang masalah deputi yang membingungkan dan cara melindungiAWS akun Anda, lihat Masalah wakil yang membingungkan di Panduan Pengguna IAM.

    1. Untuk kunci Kondisi, pilih aws:SourceAccount atau aws:SourceArn. Untuk informasi lebih lanjut tentang kunci syarat syarat global ini, lihat Kunci konteks syarat syarat syaratAWS global dalam Panduan Pengguna IAM.

    2. Untuk Operator, pilih StringEqualsjika Anda menentukan kunci aws:SourceAccount condition atau ArnLikejika Anda menentukan kunci aws:SourceArn condition.

    3. Untuk Nilai, tentukan IDAWS akun Anda jika Anda menentukan kunciSourceAccount kondisi aws: atau Amazon Resource Name (ARN) tugas Amazon ECS Anda jika Anda menentukan kunciSourceArn kondisi aws:. Anda dapat menggunakan wildcard, misalnyaaws:ecs:*:accountId:* yang akan berfungsi untuk semua tugas di akun Anda.

    4. Memilih Menambahkan untuk menyimpan kondisi kunci. Ulangi langkah ini untuk setiap kunci kondisi yang ingin Anda tambahkan ke kebijakan.

  5. Pilih Berikutnya: Tag dan tambahkan tag sumber daya apa pun ke kebijakan untuk membantu Anda mengaturnya, lalu pilih Berikutnya: Tinjau.

  6. Pada halaman Tinjau kebijakan, untuk Nama ketik nama unik Anda, seperti AmazonECSTaskS3BucketPolicy. Anda dapat menentukan deskripsi opsional untuk kebijakan tersebut.

  7. Saat kebijakan selesai, pilih Buat kebijakan untuk diselesaikan.

Using the JSON editor
  1. Di bidang dokumen kebijakan, tempelkan kebijakan untuk diterapkan ke tugas Anda. Contoh di bawah ini memberikan izin untuk my-task-secrets-bucketAmazon S3 bucket. Ini mencakup pernyataan kondisi, yang dapat Anda gunakan untuk menentukan tugas tertentu menggunakan Amazon Resource Name (ARN) atau ID akun tertentu. Ini menyediakan cara untuk lebih lingkup izin untuk keamanan tambahan. Ini direkomendasikan untuk mencegah masalah keamanan wakil yang bingung. Untuk mempelajari lebih lanjut tentang masalah deputi yang membingungkan dan cara melindungiAWS akun Anda, lihat Masalah wakil yang membingungkan di Panduan Pengguna IAM.

    Berikut ini adalah contoh kebijakan izin. Anda dapat mengubah kebijakan sesuai kebutuhan spesifik Anda. Anda harus mengganti ID Wilayah dan menentukan nomorAWS akun yang Anda gunakan saat meluncurkan tugas.

    { "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "s3:GetObject" ], "Resource":[ "arn:aws:s3:::my-task-secrets-bucket/*" ], "Condition":{ "ArnLike":{ "aws:SourceArn":"arn:aws:ecs:us-west-2:111122223333:*" }, "StringEquals":{ "aws:SourceAccount":"111122223333" } } } ] }
  2. Pilih Berikutnya: Tag dan tambahkan tag sumber daya apa pun ke kebijakan untuk membantu Anda mengaturnya, lalu pilih Berikutnya: Tinjau.

  3. Pada halaman Tinjau kebijakan, untuk Nama ketik nama unik Anda, seperti AmazonECSTaskS3BucketPolicy. Anda dapat menentukan deskripsi opsional untuk kebijakan tersebut.

  4. Saat kebijakan selesai, pilih Buat kebijakan untuk diselesaikan.

Untuk membuat IAM role untuk tugas Anda (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. Untuk Pilih bagian entitas tepercaya, pilih AWSlayanan.

  4. Untuk Use case, dengan menggunakan menu drop-down, pilih Elastic Container Service dan kemudian kasus penggunaan Elastic Container Service Task dan kemudian pilih Next.

  5. Untuk Tambahkan izin, cari dan pilih kebijakan yang akan digunakan untuk tugas Anda (dalam contoh iniAmazonECSTaskS3BucketPolicy, lalu pilih Berikutnya.

  6. Pada Langkah 3: Nama, review, dan buat, lakukan hal berikut:

    1. Untuk Nama peran, masukkan nama untuk peran Anda. Untuk contoh ini, ketikAmazonECSTaskS3BucketRole untuk memberi nama peran.

    2. (Opsional) Untuk Deskripsi. tentukan deskripsi untuk peran IAM ini.

    3. Tinjau kebijakan entitas dan izin tepercaya untuk peran tersebut.

    4. Untuk Tambahkan tanda (Opsional), masukkan tanda metadata apa pun yang ingin Anda kaitkan dengan IAM role, lalu pilih Buat peran.

Menentukan peran IAM untuk tugas Anda

Setelah membuat peran dan melampirkan kebijakan ke peran tersebut, Anda dapat menjalankan tugas yang berperan. Anda mempunyai beberapa opsi untuk melakukan ini:

  • Tentukan peran IAM untuk tugas Anda dalam ketentuan tugas. Anda dapat membuat ketentuan tugas baru atau revisi baru ketentuan tugas yang ada dan tentukan peran yang Anda buat sebelumnya. Jika Anda menggunakan konsol klasik untuk membuat ketentuan tugas Anda, pilih IAM role Anda di bidang Peran Tugas. Jika Anda menggunakan SDK, tentukan Amazon Resource Name (ARN) dari peran tugas Anda menggunakantaskRoleArn parameter.AWS CLI Untuk informasi selengkapnya, lihat Membuat definisi tugas menggunakan konsol.

    catatan

    Opsi ini diperlukan jika Anda ingin menggunakan IAM role di layanan Amazon ECS.

  • Tentukan penggantian IAM role IAM ketika menjalankan tugas. Anda dapat menentukan penggantian tugas IAM role ketika menjalankan tugas. Jika Anda menggunakan konsol klasik untuk menjalankan tugas Anda, pilih Opsi Lanjutan lalu pilih peran IAM Anda di bidang Peran Tugas. Jika Anda menggunakan AWS CLI atau SDK, tentukan ARN peran tugas Anda menggunakan parameter taskRoleArn di objek JSON overrides. Untuk informasi selengkapnya, lihat Jalankan tugas mandiri di konsol Amazon ECS klasik.

catatan

Selain izin Amazon ECS standar yang diperlukan untuk menjalankan tugas dan layanan, pengguna juga memerlukaniam:PassRole izin untuk menggunakan peran IAM untuk tugas.