Akses AWS Sumber Daya menggunakan Peran IAM Target Identitas EKS Pod - Amazon EKS

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.

Akses AWS Sumber Daya menggunakan Peran IAM Target Identitas EKS Pod

Saat menjalankan aplikasi di Amazon Elastic Kubernetes Service (Amazon EKS), Anda mungkin perlu mengakses sumber daya yang ada di AWS akun yang berbeda. AWS Panduan ini menunjukkan kepada Anda cara mengatur akses lintas akun menggunakan EKS Pod Identity, yang memungkinkan pod Kubernetes Anda mengakses AWS sumber daya lain menggunakan peran target.

Prasyarat

Sebelum Anda mulai, pastikan Anda telah menyelesaikan langkah-langkah berikut:

Cara Kerjanya

Pod Identity memungkinkan aplikasi di klaster EKS Anda untuk mengakses AWS sumber daya di seluruh akun melalui proses yang disebut role chaining.

Saat membuat asosiasi Pod Identity, Anda dapat memberikan dua peran IAM: peran Identitas Pod EKS di akun yang sama dengan cluster EKS Anda dan Peran IAM Target dari akun yang berisi AWS sumber daya yang ingin Anda akses, (seperti bucket S3 atau Database RDS). Peran EKS Pod Identity harus ada di akun kluster EKS Anda karena PassRole persyaratan IAM, sedangkan Target IAM Role dapat berada di akun apa pun AWS . PassRole memungkinkan AWS entitas untuk mendelegasikan asumsi peran ke layanan lain. EKS Pod Identity digunakan PassRole untuk menghubungkan peran ke akun layanan Kubernetes, yang mengharuskan peran dan identitas yang melewatinya berada di AWS akun yang sama dengan cluster EKS. Ketika pod aplikasi Anda perlu mengakses AWS sumber daya, ia meminta kredensil dari Pod Identity. Pod Identity kemudian secara otomatis melakukan dua asumsi peran secara berurutan: pertama dengan asumsi peran EKS Pod Identity, kemudian menggunakan kredensial-kredensialnya untuk mengasumsikan Target IAM Role. Proses ini memberi pod Anda kredensi sementara yang memiliki izin yang ditentukan dalam peran target, memungkinkan akses aman ke sumber daya di akun lain. AWS

Pertimbangan caching

Karena mekanisme caching, pembaruan peran IAM dalam asosiasi Identitas Pod yang ada mungkin tidak langsung berlaku di pod yang berjalan di klaster EKS Anda. Agen Identitas Pod menyimpan kredensial-kredensial IAM berdasarkan konfigurasi asosiasi pada saat kredensialnya diambil. Jika asosiasi hanya menyertakan peran Identitas Pod EKS dan tidak ada Peran IAM Target, kredenal yang di-cache akan bertahan selama 6 jam. Jika asosiasi tersebut mencakup peran EKS Pod Identity ARN dan Target IAM Role, kredenal cache akan berlangsung selama 59 menit. Memodifikasi asosiasi yang ada, seperti memperbarui peran EKS Pod Identity ARN atau menambahkan Peran IAM Target, tidak mengatur ulang cache yang ada. Akibatnya, agen tidak akan mengenali pembaruan sampai kredenial yang di-cache disegarkan. Untuk menerapkan perubahan lebih cepat, Anda dapat membuat ulang pod yang ada; jika tidak, Anda harus menunggu cache kedaluwarsa.

Langkah 1: Buat dan kaitkan Peran IAM Target

Pada langkah ini, Anda akan membangun rantai kepercayaan yang aman dengan membuat dan mengonfigurasi Peran IAM Target. Untuk demonstrasi, kami akan membuat Peran IAM Target baru untuk membangun rantai kepercayaan antara dua AWS akun: peran Identitas Pod EKS (misalnya,eks-pod-identity-primary-role) di AWS akun kluster EKS mendapatkan izin untuk mengambil Peran IAM Target (misalnyaeks-pod-identity-aws-resources) di akun target Anda, memungkinkan akses ke sumber daya seperti bucket AWS Amazon S3.

Buat Peran IAM Target

  1. Buka Amazon IAM console (Konsol Amazon IAM).

  2. Di bilah navigasi atas, verifikasi bahwa Anda masuk ke akun yang berisi AWS sumber daya (seperti bucket S3 atau tabel DynamoDB) untuk Peran IAM Target Anda.

  3. Di panel navigasi sebelah kiri, pilih Peran.

  4. Pilih tombol Buat peran, lalu AWS akun di bawah “Jenis entitas tepercaya.”

  5. Pilih AWS Akun lain, masukkan nomor AWS akun Anda (akun tempat peran Identitas EKS Pod Anda ada), lalu pilih Berikutnya.

  6. Tambahkan kebijakan izin yang ingin Anda kaitkan ke peran (misalnya, AmazonS3FullAccess), lalu pilih Berikutnya.

  7. Masukkan nama peran, sepertiMyCustomIAMTargetRole, lalu pilih Buat peran.

Perbarui kebijakan kepercayaan Peran IAM Target

  1. Setelah membuat peran, Anda akan dikembalikan ke daftar Peran. Temukan dan pilih peran baru yang Anda buat di langkah sebelumnya (mis.,MyCustomIAMTargetRole).

  2. Pilih tab Trust relationship.

  3. Klik Edit kebijakan kepercayaan di sisi kanan.

  4. Di editor kebijakan, ganti JSON default dengan kebijakan kepercayaan Anda. Ganti nilai placeholder untuk nama peran dan 111122223333 ARN peran IAM dengan ID AWS akun yang menghosting kluster EKS Anda. Anda juga dapat menggunakan PrincipalTags kebijakan kepercayaan peran secara opsional untuk mengotorisasi hanya akun layanan tertentu dari klaster dan namespace tertentu untuk mengambil peran target Anda. Misalnya:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws: iam::111122223333:root" }, "Action": [ "sts:AssumeRole", "sts:TagSession" ], "Condition": { "StringEquals": { "aws:PrincipalTag/eks-cluster-arn": "arn:aws:eks:us-east-1:111122223333:cluster/example-cluster", "aws:PrincipalTag/kubernetes-namespace": "ExampleNameSpace", "aws:PrincipalTag/kubernetes-service-account": "ExampleServiceAccountName" }, "ArnEquals": { "aws:PrincipalARN": "arn:aws: iam::111122223333:role/eks-pod-identity-primary-role" } } } ] }

Kebijakan kebijakan di atas memungkinkan peran eks-pod-identeity-primary-role dari AWS akun 111122223333 dengan Tag Sesi Identitas Pod EKS yang relevan mengambil peran ini.

Jika Anda Menonaktifkan Tag Sesi dalam Identitas Pod EKS Anda, EKS Pod Identity juga menyetel informasi tentang cluster, namespace, dan akun layanan pod saat mengasumsikan peran target. sts:ExternalId

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws: iam::111122223333:root" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "sts:ExternalId": "region/111122223333/cluster-name/namespace/service-account-name" }, "ArnEquals": { "aws:PrincipalARN": "arn:aws: iam::111122223333:role/eks-pod-identity-primary-role" } } }, { "Effect": "Allow", "Principal": { "AWS": "arn:aws: iam::111122223333:root" }, "Action": "sts:TagSession" } ] }

Kebijakan di atas membantu memastikan bahwa hanya klaster, namespace, dan akun layanan yang diharapkan yang dapat mengambil peran target.

Memperbarui kebijakan izin untuk peran EKS Pod Identity

Pada langkah ini, Anda akan memperbarui kebijakan izin peran Identitas Pod EKS yang terkait dengan klaster Amazon EKS Anda dengan menambahkan ARN Peran IAM Target sebagai sumber daya.

  1. Buka konsol Amazon EKS.

  2. Di panel navigasi kiri, pilih Clusters, lalu pilih nama kluster EKS Anda.

  3. Pilih tab Access.

  4. Di bawah asosiasi Pod Identity, pilih peran Identitas Pod EKS Anda.

  5. Pilih Izin, Tambahkan izin, lalu Buat kebijakan sebaris.

  6. Pilih JSON di sisi kanan.

  7. Di editor kebijakan, ganti JSON default dengan kebijakan izin Anda. Ganti nilai placeholder untuk nama peran dan 222233334444 ARN peran IAM dengan Peran IAM Target Anda. Misalnya:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sts:AssumeRole", "sts:TagSession" ], "Resource": "arn:aws: iam::222233334444:role/eks-pod-identity-aws-resources" } ] }

Langkah 2: Kaitkan Peran IAM Target ke akun layanan Kubernetes

Pada langkah ini, Anda akan membuat asosiasi antara peran IAM Target dan akun layanan Kubernetes di kluster EKS Anda.

  1. Buka konsol Amazon EKS.

  2. Di panel navigasi kiri, pilih Cluster, lalu pilih nama cluster yang ingin Anda tambahkan asosiasi.

  3. Pilih tab Access.

  4. Dalam asosiasi Pod Identity, pilih Create.

  5. Pilih peran Identitas Pod EKS dalam peran IAM untuk diasumsikan oleh beban kerja Anda.

  6. Pilih peran IAM Target dalam peran IAM Target yang akan diasumsikan oleh peran EKS Pod Identity.

  7. Di bidang namespace Kubernetes, masukkan nama namespace tempat Anda ingin membuat asosiasi (misalnya,). my-app-namespace Ini menentukan di mana akun layanan berada.

  8. Di kolom akun layanan Kubernetes, masukkan nama akun layanan (misalnya,my-service-account) yang akan menggunakan kredensial IAM. Ini menautkan peran IAM ke akun layanan.

  9. Pilih Buat untuk membuat asosiasi.