

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
<a name="task_execution_IAM_role"></a>

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 kredensyal sementara peran tersebut, tetapi tidak dapat diakses secara langsung oleh kontainer dalam tugas. Untuk izin IAM yang perlu dijalankan oleh kode aplikasi Anda di dalam container, lihat. [Peran IAM tugas Amazon ECS](task-iam-roles.md) 

Berikut ini adalah kasus penggunaan umum untuk peran IAM eksekusi tugas:
+ Tugas Anda di-host 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.
  + mengirim log kontainer ke CloudWatch Log menggunakan driver `awslogs` log. Untuk informasi selengkapnya, lihat [Kirim log Amazon ECS ke CloudWatch](using_awslogs.md).
+ Tugas Anda di-host di salah satu AWS Fargate instans Amazon EC2 dan:
  + menggunakan otentikasi registri pribadi. Untuk informasi selengkapnya, lihat [Izin otentikasi registri pribadi](#task-execution-private-auth).
  + menggunakan Runtime Monitoring.
  + definisi tugas mereferensikan data sensitif menggunakan rahasia Secrets Manager atau parameter AWS Systems Manager Parameter Store. Untuk informasi selengkapnya, lihat [Izin Secrets Manager atau Systems Manager](#task-execution-secrets).

**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. Untuk informasi selengkapnya, lihat [Amazon ECSTask ExecutionRolePolicy](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonECSTaskExecutionRolePolicy.html) 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](https://docs.aws.amazon.com/IAM/latest/UserGuide/console_search.html) 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](https://docs.docker.com/docker-hub/usage/). Untuk informasi selengkapnya lihat, [Autentikasi registri pribadi untuk instance kontainer](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/private-auth-container-instances.html).

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](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/private-auth.html).

## Membuat peran eksekusi tugas
<a name="create-task-execution-role"></a>

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

------
#### [ 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/](https://console.aws.amazon.com/iam/).

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

1. Untuk **jenis entitas Tepercaya**, pilih **Layanan AWS**.

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

1. Pilih **Berikutnya**.

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

1. Pilih **Berikutnya**.

1.  Untuk **nama Peran**, masukkan **ecsTaskExecutionPeran**.

1. 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 ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "",
         "Effect": "Allow",
         "Principal": {
           "Service": "ecs-tasks.amazonaws.com"
         },
         "Action": "sts:AssumeRole"
       }
     ]
   }
   ```

------

1. 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
   ```

1. 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 kredenal Secrets Manager  |  [Izin otentikasi registri pribadi](#task-execution-private-auth)  | 
| Lulus data sensitif dengan Systems Manager atau Secrets Manager | [Izin Secrets Manager atau Systems Manager](#task-execution-secrets) | 
| Minta tugas Fargate menarik gambar Amazon ECR melalui titik akhir antarmuka | [Tugas Fargate menarik gambar Amazon ECR melalui izin titik akhir antarmuka](#task-execution-ecr-conditionkeys) | 
| Host file konfigurasi dalam bucket Amazon S3 | [Izin penyimpanan file Amazon S3](#s3-required) | 
| Konfigurasikan Wawasan Kontainer untuk melihat peristiwa siklus hidup Amazon ECS |  [Izin diperlukan untuk mengaktifkan peristiwa siklus hidup Amazon ECS di Wawasan Kontainer](console-permissions.md#required-permissions-configure)  | 
| Melihat peristiwa siklus hidup Amazon ECS di Wawasan Kontainer |  [Izin diperlukan untuk melihat peristiwa siklus hidup Amazon ECS di Wawasan Kontainer](console-permissions.md#required-permissions-view)  | 

## Izin otentikasi registri pribadi
<a name="task-execution-private-auth"></a>

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 kredensyal 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](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/private-auth.html).

Untuk menyediakan akses ke rahasia yang berisi kredenal registri pribadi Anda, tambahkan izin berikut sebagai kebijakan inline ke peran eksekusi tugas. Untuk informasi selengkapnya, lihat [Menambahkan dan Menghapus Kebijakan IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html).
+ `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.

------
#### [ 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 Secrets Manager atau Systems Manager
<a name="task-execution-secrets"></a>

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](specifying-sensitive-data.md).

**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](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html) 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.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "secretsmanager:GetSecretValue"
      ],
      "Resource": [
        "arn:aws:secretsmanager:us-east-1:111122223333: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](ecs-agent-config.md).

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](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html) 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:

------
#### [ 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
<a name="task-execution-ecr-conditionkeys"></a>

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](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html).
+ `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:

------
#### [ 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
<a name="task-execution-ecr-permissions"></a>

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 Anda 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:

------
#### [ 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 Amazon ECR secara langsung. APIs Untuk informasi tentang izin peran IAM tugas untuk Amazon ECR, lihat. [Izin Amazon ECR](task-iam-roles.md#ecr-required-iam-permissions)

## Izin penyimpanan file Amazon S3
<a name="s3-required"></a>

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](https://docs.aws.amazon.com/AmazonS3/latest/userguide/security_iam_service-with-iam.html#security_iam_service-with-iam-id-based-policies-actions) 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
<a name="s3-required-considerations"></a>

 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.