Bantu meningkatkan 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 GitHub tautan Edit halaman ini di 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.
Peran IAM untuk akun layanan
Tip
Daftar
Aplikasi dalam wadah Pod dapat menggunakan AWS SDK atau AWS CLI untuk membuat permintaan API ke AWS layanan menggunakan izin AWS Identity and Access Management (IAM). Aplikasi harus menandatangani permintaan AWS API mereka dengan AWS kredenSIAL. Peran IAM untuk akun layanan (IRSA) menyediakan kemampuan untuk mengelola kredenSIAL untuk aplikasi Anda, mirip dengan cara profil instans Amazon EC2 memberikan kredenSIAL ke instans Amazon EC2. Alih-alih membuat dan mendistribusikan AWS kredenSIAL ke wadah atau menggunakan peran instans Amazon EC2, Anda mengaitkan peran IAM dengan akun layanan Kubernetes dan mengonfigurasi Pod Anda untuk menggunakan akun layanan. Anda tidak dapat menggunakan peran IAM untuk akun layanan dengan cluster lokal untuk Amazon EKS di AWS Out posts.
Peran IAM untuk akun layanan memberikan manfaat berikut:
-
Hak istimewa terkecil — Anda dapat memasukkan izin IAM ke akun layanan, dan hanya Pod yang menggunakan akun layanan tersebut yang memiliki akses ke izin tersebut. Fitur ini juga mengurangi kebutuhan akan solusi dari pihak ketiga seperti
kiamataukube2iam. -
Isolasi kredensi — Ketika akses ke Amazon EC2 Instance Metadata Service (IMDS) dibatasi, wadah Pod hanya dapat mengambil kredenSIAL untuk peran IAM yang terkait dengan akun layanan yang digunakan wadah. Sebuah wadah tidak pernah memiliki akses ke kredenSIAL yang digunakan oleh kontainer lain di Pod lain. Jika IMDS tidak dibatasi, wadah Pod juga memiliki akses ke peran IAM node Amazon EKS dan kontainer mungkin dapat memperoleh akses ke kredenSIAL peran IAM dari Pod lain pada node yang sama. Untuk informasi selengkapnya, lihat Mem batasi akses ke profil instance yang ditetapkan ke node pekerja.
catatan
Pod yang dikonfigurasi dengan hostNetwork: true akan selalu memiliki akses IMDS, tetapi AWS SDK dan CLI akan menggunakan kredenSIAL IRSA saat diaktifkan.
-
Auditabilitas — Akses dan pencatatan peristiwa tersedia AWS CloudTrail untuk membantu memastikan audit retrospektif.
penting
Kontainer bukan batas keamanan, dan penggunaan peran IAM untuk akun layanan tidak mengubah hal ini. Pod yang ditugaskan ke node yang sama akan berbagi kernel dan potensi sumber daya lainnya tergantung pada konfigurasi Pod Anda. Sementara Pod yang berjalan pada node terpisah akan diisolasi di lapisan komputasi, ada aplikasi node yang memiliki izin tambahan di Kubernetes API di luar cakupan instance individual. Beberapa contoh adalahkubelet,kube-proxy, driver penyimpanan CSI, atau aplikasi Kubernetes Anda sendiri.
Aktifkan peran IAM untuk akun layanan dengan menyelesaikan prosedur berikut:
-
Buat penyedia IAM OIDC untuk cluster Anda — Anda hanya menyelesaikan prosedur ini sekali untuk setiap cluster.
catatan
Jika VPC cluster Anda tidak memiliki akses internet keluar dan Anda belum menyiapkan akses pribadi ke titik akhir OIDC cluster, operasi yang mencapai titik akhir tersebut dari dalam VPC, seperti membuat penyedia OIDC dengan
eksctl, tidak dapat menyelesaikan nama host penerbit OIDC. Contoh pesan kesalahan berikut:server cant find oidc.eks.region.amazonaws.com: NXDOMAINUntuk mencapai titik akhir OIDC cluster secara pribadi dari VPC Anda, buat titik akhir antarmuka VPC untuknya (
com.amazonaws.) dengan DNS pribadi diaktifkan. Untuk informasi selengkapnya, lihat Akses Amazon EKS menggunakan AWS PrivateLink.region-code.oidc-eksAtau, Anda dapat menjalankan perintah di luar VPC (misalnya, di AWS CloudShell) atau membuat resolver bersyarat split-horizon. Sebagai contoh, lihat permintaan fitur Amazon EKS
pada GitHub. -
Tetapkan peran IAM ke akun layanan Kubernetes — Selesaikan prosedur ini untuk setiap kumpulan izin unik yang ingin dimiliki aplikasi.
-
Mengonfigurasi Pod untuk menggunakan akun layanan Kubernetes — Selesaikan prosedur ini untuk setiap Pod yang memerlukan akses ke layanan. AWS
-
Gunakan IRSA dengan AWS SDK — Konfirmasikan bahwa beban kerja menggunakan AWS SDK dari versi yang didukung dan bahwa beban kerja menggunakan rantai kredensia default.
Informasi latar belakang IAM, Kubernetes, dan OpenID Connect (OIDC)
Pada tahun 2014, AWS Identity and Access Management menambahkan dukungan untuk identitas federasi menggunakan OpenID Connect (OIDC). Fitur ini memungkinkan Anda untuk mengotentikasi panggilan AWS API dengan penyedia identitas yang didukung dan menerima token web (JWT) OIDC JSON yang valid. Anda dapat meneruskan token ini ke operasi AssumeRoleWithWebIdentity API AWS STS dan menerima kredenSIAL peran sementara IAM. Anda dapat menggunakan kredenSIAL ini untuk berinteraksi dengan AWS layanan apa pun, termasuk Amazon S3 dan DynamoDB.
Setiap token JWT ditandatangani oleh pasangan kunci penandatanganan. Kunci disajikan pada penyedia OIDC yang dikelola oleh Amazon EKS dan kunci pribadi berputar setiap 7 hari. Amazon EKS menyimpan kunci publik sampai kedaluwarsa. Jika Anda menghubungkan klien OIDC eksternal, ketahuilah bahwa Anda perlu menyegarkan kunci penandatanganan sebelum kunci publik berakhir. Pelajari cara Mengambil kunci penandatanganan untuk memvalidasi token OIDC.
Kubernetes telah lama menggunakan akun layanan sebagai sistem identitas internalnya sendiri. Pod-pod dapat mengautentikasi dengan server API Kubernetes menggunakan token yang dipasang secara otomatis (yang merupakan non-OIDC JWT) yang hanya dapat divalidasi oleh server API Kubernetes. Token akun layanan lama ini tidak kedaluwarsa, dan memutar kunci penandatanganan adalah proses yang sulit. Dalam versi Kubernetes1.12, dukungan ditambahkan untuk fitur baru. ProjectedServiceAccountToken Fitur ini adalah token web JSON OIDC yang juga berisi identitas akun layanan dan mendukung audiens yang dapat dikonfigurasi.
Amazon EKS menghosting titik akhir penemuan OIDC publik untuk setiap cluster yang berisi kunci penandatanganan untuk token web ProjectedServiceAccountToken JSON sehingga sistem eksternal, seperti IAM, dapat memvalidasi dan menerima token OIDC yang dikeluarkan oleh Kubernetes.