

 **Bantu tingkatkan halaman ini** 

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

Untuk berkontribusi pada panduan pengguna ini, pilih **Edit halaman ini pada GitHub** tautan yang terletak di panel kanan setiap halaman.

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

# Menetapkan peran IAM ke akun layanan Kubernetes
<a name="pod-id-association"></a>

Topik ini membahas cara mengkonfigurasi akun layanan Kubernetes untuk mengambil peran AWS Identity and Access Management (IAM) dengan EKS Pod Identity. Pod apa pun yang dikonfigurasi untuk menggunakan akun layanan kemudian dapat mengakses AWS layanan apa pun yang perannya memiliki izin untuk diakses.

Untuk membuat asosiasi EKS Pod Identity, hanya ada satu langkah; Anda membuat asosiasi di EKS melalui Konsol Manajemen AWS, AWS CLI, AWS SDKs, AWS CloudFormation dan alat-alat lainnya. Tidak ada data atau metadata tentang asosiasi di dalam cluster di objek Kubernetes mana pun dan Anda tidak menambahkan anotasi apa pun ke akun layanan.

 **Prasyarat** 
+ Sebuah klaster yang sudah ada. Jika Anda tidak memilikinya, Anda dapat membuatnya dengan mengikuti salah satu panduan di[Memulai dengan Amazon EKS](getting-started.md).
+ Prinsip IAM yang menciptakan asosiasi harus memiliki`iam:PassRole`.
+ Versi terbaru dari AWS CLI diinstal dan dikonfigurasi pada perangkat Anda atau. AWS CloudShell Anda dapat memeriksa versi saat ini dengan `aws --version | cut -d / -f2 | cut -d ' ' -f1`. Package manager seperti `yum``apt-get`,, atau Homebrew untuk macOS seringkali merupakan beberapa versi di belakang versi terbaru CLI. AWS Untuk menginstal versi terbaru, lihat [Menginstal](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html) dan [Konfigurasi cepat dengan aws configure](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html#cli-configure-quickstart-config) di Panduan Pengguna Antarmuka Baris AWS Perintah. Versi AWS CLI yang diinstal di AWS CloudShell mungkin juga beberapa versi di belakang versi terbaru. Untuk memperbaruinya, lihat [Menginstal AWS CLI ke direktori home Anda](https://docs.aws.amazon.com/cloudshell/latest/userguide/vm-specs.html#install-cli-software) di AWS CloudShell Panduan Pengguna.
+ Alat baris `kubectl` perintah diinstal pada perangkat Anda atau AWS CloudShell. Versinya bisa sama dengan atau hingga satu versi minor lebih awal atau lebih lambat dari versi Kubernetes dari klaster Anda. Misalnya, jika versi cluster Anda`1.29`, Anda dapat menggunakan `kubectl` versi`1.28`,`1.29`, atau `1.30` dengan itu. Untuk menginstal atau memutakhirkan `kubectl`, lihat [Mengatur `kubectl` dan `eksctl`](install-kubectl.md).
+ `kubectl``config`File yang sudah ada yang berisi konfigurasi cluster Anda. Untuk membuat `kubectl` `config` file, lihat[Connect kubectl ke kluster EKS dengan membuat file kubeconfig](create-kubeconfig.md).

## Membuat asosiasi Pod Identity (AWS Console)
<a name="pod-id-association-create"></a>

1. Buka [konsol Amazon EKS](https://console.aws.amazon.com/eks/home#/clusters).

1. Di panel navigasi sebelah kiri, pilih **Clusters**, lalu pilih nama cluster yang ingin Anda konfigurasikan untuk add-on EKS Pod Identity Agent.

1. Pilih tab **Access**.

1. Dalam **asosiasi Pod Identity**, pilih **Create**.

1. Untuk peran **IAM, pilih peran** IAM dengan izin yang Anda inginkan untuk memiliki beban kerja.
**catatan**  
Daftar ini hanya berisi peran yang memiliki kebijakan kepercayaan berikut yang memungkinkan EKS Pod Identity untuk menggunakannya.

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

    `sts:AssumeRole`— EKS Pod Identity digunakan `AssumeRole` untuk mengambil peran IAM sebelum meneruskan kredensi sementara ke pod Anda.

    `sts:TagSession`— EKS Pod Identity menggunakan `TagSession` untuk menyertakan *tag sesi* dalam permintaan ke AWS STS.

   Anda dapat menggunakan tag ini di *kunci kondisi* dalam kebijakan kepercayaan untuk membatasi akun layanan, ruang nama, dan klaster mana yang dapat menggunakan peran ini.

   *Untuk daftar kunci kondisi Amazon EKS, lihat [Ketentuan yang ditentukan oleh Amazon Elastic Kubernetes Service di Referensi Otorisasi Layanan.](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonelastickubernetesservice.html#amazonelastickubernetesservice-policy-keys)* Untuk mempelajari tindakan dan sumber daya yang dapat digunakan untuk menggunakan kunci kondisi, lihat [Tindakan yang ditentukan oleh Amazon Elastic Kubernetes Service](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonelastickubernetesservice.html#amazonelastickubernetesservice-actions-as-permissions).

1. Untuk namespace **Kubernetes, pilih namespace** Kubernetes yang berisi akun layanan dan beban kerja. Secara opsional, Anda dapat menentukan namespace dengan nama yang tidak ada di cluster.

1. Untuk akun layanan **Kubernetes, pilih akun layanan** Kubernetes yang akan digunakan. Manifes untuk beban kerja Kubernetes Anda harus menentukan akun layanan ini. Secara opsional, Anda dapat menentukan akun layanan berdasarkan nama yang tidak ada di cluster.

1. (Opsional) Pilih **Nonaktifkan tag sesi** untuk menonaktifkan tag sesi default yang ditambahkan Pod Identity secara otomatis ketika mengambil peran.

1. (Opsional) Alihkan **kebijakan sesi Konfigurasi untuk mengonfigurasi kebijakan** IAM agar menerapkan batasan tambahan pada asosiasi Identitas Pod ini di luar izin yang ditentukan dalam kebijakan IAM yang dilampirkan pada peran IAM.
**catatan**  
Kebijakan sesi hanya dapat diterapkan jika setelan **Nonaktifkan tag sesi** dicentang.

1. (Opsional) Untuk **Tag**, pilih **Tambahkan tag** untuk menambahkan metadata dalam pasangan kunci dan nilai. Tag ini diterapkan pada asosiasi dan dapat digunakan dalam kebijakan IAM.

   Anda dapat mengulangi langkah ini untuk menambahkan beberapa tag.

1. Pilih **Buat**.

## Membuat asosiasi Pod Identity (AWS CLI)
<a name="create_a_pod_identity_association_shared_aws_cli"></a>

1. Jika Anda ingin mengaitkan kebijakan IAM yang ada dengan peran IAM Anda, lewati ke langkah berikutnya.

   Buat kebijakan IAM. Anda dapat membuat kebijakan sendiri, atau menyalin kebijakan AWS terkelola yang telah memberikan beberapa izin yang Anda perlukan dan menyesuaikannya dengan persyaratan spesifik Anda. Untuk informasi selengkapnya, lihat [Membuat kebijakan IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html) dalam *Panduan Pengguna IAM*.

   1. Buat file yang menyertakan izin untuk AWS layanan yang ingin diakses oleh Pod. Untuk daftar semua tindakan untuk semua AWS layanan, lihat [Referensi Otorisasi Layanan](https://docs.aws.amazon.com/service-authorization/latest/reference/).

      Anda dapat menjalankan perintah berikut untuk membuat contoh file kebijakan yang memungkinkan akses hanya-baca ke bucket Amazon S3. Anda dapat secara opsional menyimpan informasi konfigurasi atau skrip bootstrap di bucket ini, dan kontainer di Pod Anda dapat membaca file dari bucket dan memuatnya ke dalam aplikasi Anda. Jika Anda ingin membuat kebijakan contoh ini, salin konten berikut ke perangkat Anda. Ganti *my-pod-secrets-bucket* dengan nama bucket Anda dan jalankan perintah.

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Effect": "Allow",
                  "Action": "s3:GetObject",
                  "Resource": "arn:aws:s3:::my-pod-secrets-bucket"
              }
          ]
      }
      ```

   1. Buat kebijakan IAM.

      ```
      aws iam create-policy --policy-name my-policy --policy-document file://my-policy.json
      ```

1. Buat peran IAM dan kaitkan dengan akun layanan Kubernetes.

   1. Jika Anda memiliki akun layanan Kubernetes yang ingin Anda ambil peran IAM, Anda dapat melewati langkah ini.

      Buat akun layanan Kubernetes. Salin konten berikut ke perangkat Anda. Ganti *my-service-account* dengan nama yang Anda inginkan dan *default* dengan namespace yang berbeda, jika perlu. Jika Anda berubah*default*, namespace harus sudah ada.

      ```
      cat >my-service-account.yaml <<EOF
      apiVersion: v1
      kind: ServiceAccount
      metadata:
        name: my-service-account
        namespace: default
      EOF
      kubectl apply -f my-service-account.yaml
      ```

      Jalankan perintah berikut.

      ```
      kubectl apply -f my-service-account.yaml
      ```

   1. Jalankan perintah berikut untuk membuat file kebijakan kepercayaan untuk peran IAM.

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

   1. Buat peran. Ganti *my-role* dengan nama untuk peran IAM Anda, dan *my-role-description* dengan deskripsi untuk peran Anda.

      ```
      aws iam create-role --role-name my-role --assume-role-policy-document file://trust-relationship.json --description "my-role-description"
      ```

   1. Lampirkan kebijakan IAM ke peran Anda. Ganti *my-role* dengan nama peran IAM Anda dan *my-policy* dengan nama kebijakan yang sudah ada yang Anda buat.

      ```
      aws iam attach-role-policy --role-name my-role --policy-arn=arn:aws: iam::111122223333:policy/my-policy
      ```
**catatan**  
Tidak seperti peran IAM untuk akun layanan, EKS Pod Identity tidak menggunakan anotasi pada akun layanan.

   1. Jalankan perintah berikut untuk membuat asosiasi. Ganti `my-cluster` dengan nama cluster, ganti *my-service-account* dengan nama yang Anda inginkan dan *default* dengan namespace yang berbeda, jika perlu.

      ```
      aws eks create-pod-identity-association --cluster-name my-cluster --role-arn arn:aws: iam::111122223333:role/my-role --namespace default --service-account my-service-account
      ```

      Contoh output adalah sebagai berikut.

      ```
      {
          "association": {
              "clusterName": "my-cluster",
              "namespace": "default",
              "serviceAccount": "my-service-account",
              "roleArn": "arn:aws: iam::111122223333:role/my-role",
              "associationArn": "arn:aws::111122223333:podidentityassociation/my-cluster/a-abcdefghijklmnop1",
              "associationId": "a-abcdefghijklmnop1",
              "tags": {},
              "createdAt": 1700862734.922,
              "modifiedAt": 1700862734.922
          }
      }
      ```
**catatan**  
Anda dapat menentukan namespace dan akun layanan berdasarkan nama yang tidak ada di cluster. Anda harus membuat namespace, akun layanan, dan beban kerja yang menggunakan akun layanan agar asosiasi Identitas Pod EKS berfungsi.

## Konfirmasikan konfigurasi
<a name="pod-id-confirm-role-configuration"></a>

1. Konfirmasikan bahwa kebijakan kepercayaan peran IAM telah dikonfigurasi dengan benar.

   ```
   aws iam get-role --role-name my-role --query Role.AssumeRolePolicyDocument
   ```

   Contoh output adalah sebagai berikut.

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "Allow EKS Auth service to assume this role for Pod Identities",
               "Effect": "Allow",
               "Principal": {
                   "Service": "pods.eks.amazonaws.com"
               },
               "Action": [
                   "sts:AssumeRole",
                   "sts:TagSession"
               ]
           }
       ]
   }
   ```

1. Konfirmasikan bahwa kebijakan yang Anda lampirkan pada peran Anda di langkah sebelumnya dilampirkan pada peran tersebut.

   ```
   aws iam list-attached-role-policies --role-name my-role --query 'AttachedPolicies[].PolicyArn' --output text
   ```

   Contoh output adalah sebagai berikut.

   ```
    arn:aws: iam::111122223333:policy/my-policy
   ```

1. Tetapkan variabel untuk menyimpan Nama Sumber Daya Amazon (ARN) kebijakan yang ingin Anda gunakan. Ganti *my-policy* dengan nama kebijakan yang ingin Anda konfirmasi izin.

   ```
   export policy_arn=arn:aws: iam::111122223333:policy/my-policy
   ```

1. Lihat versi default kebijakan.

   ```
   aws iam get-policy --policy-arn $policy_arn
   ```

   Contoh output adalah sebagai berikut.

   ```
   {
       "Policy": {
           "PolicyName": "my-policy",
           "PolicyId": "EXAMPLEBIOWGLDEXAMPLE",
           "Arn": "arn:aws: iam::111122223333:policy/my-policy",
           "Path": "/",
           "DefaultVersionId": "v1",
           [...]
       }
   }
   ```

1. Lihat konten kebijakan untuk memastikan bahwa kebijakan tersebut menyertakan semua izin yang dibutuhkan Pod Anda. Jika perlu, ganti *1* dalam perintah berikut dengan versi yang dikembalikan pada output sebelumnya.

   ```
   aws iam get-policy-version --policy-arn $policy_arn --version-id v1
   ```

   Contoh output adalah sebagai berikut.

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": "s3:GetObject",
               "Resource": "arn:aws:s3:::my-pod-secrets-bucket"
           }
       ]
   }
   ```

   Jika Anda membuat kebijakan contoh di langkah sebelumnya, maka output Anda sama. Jika Anda membuat kebijakan yang berbeda, maka *example* kontennya berbeda.

## Langkah Berikutnya
<a name="_next_steps"></a>

 [Konfigurasikan Pod untuk mengakses AWS layanan dengan akun layanan](pod-id-configure-pods.md) 