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 AWS perlu mengakses resource yang ada di akun yang sama atau berbeda. AWS Panduan ini menunjukkan kepada Anda cara mengatur akses antar akun ini menggunakan EKS Pod Identity, yang memungkinkan pod Kubernetes Anda mengakses sumber daya lainnya. AWS
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 menyediakan dua peran IAM—peran Identitas Pod EKS di akun yang sama dengan cluster EKS dan Peran IAM Target dari akun yang berisi AWS sumber daya Anda (seperti bucket S3 atau tabel DynamoDB). 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. Pod Identity Agent menyimpan kredensial-kredensi IAM berdasarkan konfigurasi asosiasi pada saat kredensialnya diambil. Jika asosiasi hanya menyertakan ARN peran Identitas Pod EKS dan tidak ada Peran IAM Target, kredensial 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
-
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.
-
Di panel navigasi sebelah kiri, pilih Peran.
-
Pilih tombol Buat peran, lalu AWS akun di bawah “Jenis entitas tepercaya.”
-
Pilih AWS Akun lain, masukkan nomor AWS akun Anda (akun tempat peran Identitas EKS Pod Anda ada), lalu pilih Berikutnya.
-
Tambahkan kebijakan izin yang ingin Anda kaitkan ke peran (misalnya, AmazonS3FullAccess), lalu pilih Berikutnya.
-
Masukkan nama peran, seperti
MyCustomIAMTargetRole
, lalu pilih Buat peran.
Perbarui kebijakan kepercayaan Peran IAM Target
-
Setelah membuat peran, Anda akan dikembalikan ke daftar Peran. Temukan dan pilih peran baru yang Anda buat di langkah sebelumnya (mis.,
MyCustomIAMTargetRole
). -
Pilih tab Trust relationship.
-
Klik Edit kebijakan kepercayaan di sisi kanan.
-
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. Misalnya:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws: iam::111122223333:role/eks-pod-identity-primary-role" }, "Action": "sts:AssumeRole" }, { "Effect": "Allow", "Principal": { "AWS": "arn:aws: iam::111122223333:role/eks-pod-identity-primary-role" }, "Action": "sts:TagSession" } ] }
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.
-
Buka konsol Amazon EKS
. -
Di panel navigasi kiri, pilih Clusters, lalu pilih nama kluster EKS Anda.
-
Pilih tab Access.
-
Di bawah asosiasi Pod Identity, pilih peran Identitas Pod EKS Anda.
-
Pilih Izin, Tambahkan izin, lalu Buat kebijakan sebaris.
-
Pilih JSON di sisi kanan.
-
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.
-
Buka konsol Amazon EKS
. -
Di panel navigasi kiri, pilih Clusters, lalu pilih nama cluster yang ingin Anda tambahkan asosiasi.
-
Pilih tab Access.
-
Dalam asosiasi Pod Identity, pilih Create.
-
Pilih peran Identitas Pod EKS dalam peran IAM untuk diasumsikan oleh beban kerja Anda.
-
Pilih peran IAM Target dalam peran IAM Target yang akan diasumsikan oleh peran EKS Pod Identity.
-
Di bidang namespace Kubernetes, masukkan nama namespace tempat Anda ingin membuat asosiasi (misalnya,).
my-app-namespace
Ini menentukan di mana akun layanan berada. -
Di kolom akun layanan Kubernetes, masukkan nama akun layanan (misalnya,
my-service-account
) yang akan menggunakan kredenal IAM. Ini menautkan peran IAM ke akun layanan. -
Pilih Buat untuk membuat asosiasi.
(Opsional) Langkah 3: Tambahkan Izin Eksternal ke Peran Target IAM
Terkadang, Anda mungkin perlu memberi pihak ketiga akses ke AWS sumber daya Anda (akses delegasi). Misalnya, Anda memutuskan untuk menyewa perusahaan pihak ketiga bernama Example Corp untuk memantau AWS akun Anda dan membantu mengoptimalkan biaya. Untuk melacak pengeluaran harian Anda, Example Corp perlu mengakses AWS sumber daya Anda. Dalam hal ini, kami sarankan ExternalId
untuk menambahkan kebijakan kepercayaan Peran Target IAM Anda untuk menghindari kemungkinan masalah Deputi yang Bingung.
Edit kebijakan kepercayaan
-
Setelah membuat peran, Anda akan dikembalikan ke daftar Peran. Temukan dan klik peran baru yang Anda buat di langkah sebelumnya (mis.,
MyCustomIAMTargetRole
). -
Pilih tab Trust relationship.
-
Klik Edit kebijakan kepercayaan di sisi kanan.
-
Di editor kebijakan, ganti JSON default dengan kebijakan kepercayaan Anda. Ganti nilai
ExternalId
placeholder untukaws-region/other-account/cluster-name/namespace/service-account-name
, di mana “region” adalah wilayah klaster Anda, “111122223333" adalah ID AWS akun lainnya, “cluster-name” adalah nama cluster EKS, “namespace” adalah namespace Kubernetes, dan "" adalah nama akun layanan Kubernetes. AWS service-account-name Misalnya:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws: iam::111122223333:role/eks-pod-identity-primary-role" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "sts:ExternalId": "region/111122223333/cluster-name/namespace/service-account-name" } }, { "Effect": "Allow", "Principal": { "AWS": "arn:aws: iam::111122223333:role/eks-pod-identity-primary-role" }, "Action": "sts:TagSession" } ] }