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.
Aplikasi dalam kontainer Pod dapat menggunakan AWS SDK atau AWS CLI untuk membuat permintaan API AWS ke layanan AWS menggunakan izin Identity and Access Management (IAM). Aplikasi harus menandatangani permintaan AWS API mereka dengan AWS kredensialnya. Peran IAM untuk akun layanan (IRSA) menyediakan kemampuan untuk mengelola kredensil untuk aplikasi Anda, mirip dengan cara profil EC2 instans Amazon memberikan kredensil ke instans Amazon. EC2 Alih-alih membuat dan mendistribusikan AWS kredensialmu ke container atau menggunakan peran EC2 instans Amazon, kamu mengaitkan peran IAM dengan akun layanan Kubernetes dan mengonfigurasi Pod kamu untuk menggunakan akun layanan. Anda tidak dapat menggunakan peran IAM untuk akun layanan dengan kluster lokal untuk Amazon EKS di AWS Outposts.
Peran IAM untuk akun layanan memberikan manfaat berikut:
-
Keistimewaan paling kecil — Anda dapat memberikan cakupan 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
kiam
ataukube2iam
. -
Credential isolation — Container Pod hanya dapat mengambil kredensial untuk peran IAM yang terkait dengan akun layanan yang digunakan Container. Container tidak pernah memiliki akses ke kredensi yang digunakan oleh kontainer lain di Pod lain. Saat menggunakan peran IAM untuk akun layanan, container Pod juga memiliki izin yang ditetapkan ke peran IAM node Amazon EKS, kecuali jika Anda memblokir akses Pod ke Amazon EC2 Instance Metadata Service (IMDS). Untuk informasi selengkapnya, lihat Membatasi akses ke profil instance yang ditetapkan ke node pekerja
. -
Auditabilitas — Akses dan pencatatan peristiwa tersedia AWS CloudTrail untuk membantu memastikan audit retrospektif.
Aktifkan peran IAM untuk akun layanan dengan menyelesaikan prosedur berikut:
-
catatan
Jika Anda mengaktifkan titik akhir EKS VPC, titik akhir layanan EKS OIDC tidak dapat diakses dari dalam VPC itu. Akibatnya, operasi Anda seperti membuat penyedia OIDC dengan
eksctl
VPC tidak akan berfungsi dan akan menghasilkan batas waktu saat mencoba meminta.https://oidc.eks
Contoh pesan kesalahan berikut:. region
.amazonaws.com.rproxy.goskope.comserver cant find oidc.eks.region.amazonaws.com: NXDOMAIN
Untuk menyelesaikan langkah ini, Anda dapat menjalankan perintah di luar VPC, misalnya di dalam AWS CloudShell atau di komputer yang terhubung ke internet. Atau, Anda dapat membuat resolver bersyarat split-horizon di VPC, seperti Route 53 Resolver untuk menggunakan resolver yang berbeda untuk URL Penerbit OIDC dan tidak menggunakan DNS VPC untuk itu. Untuk contoh penerusan bersyarat di CoreDNS, lihat permintaan fitur Amazon EKS di.
GitHub -
Tetapkan peran IAM ke akun layanan Kubernetes — Selesaikan prosedur ini untuk setiap set izin unik yang Anda inginkan untuk dimiliki aplikasi.
-
Konfigurasikan Pod untuk menggunakan akun layanan Kubernetes — Selesaikan prosedur ini untuk setiap Pod yang membutuhkan akses ke layanan. AWS
-
Gunakan IRSA dengan AWS SDK — Konfirmasikan bahwa beban kerja menggunakan AWS SDK versi yang didukung dan beban kerja menggunakan rantai kredenal 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 mengautentikasi panggilan AWS API dengan penyedia identitas yang didukung dan menerima token web OIDC JSON (JWT) yang valid. Anda dapat meneruskan token ini ke operasi AWS STS AssumeRoleWithWebIdentity
API dan menerima kredenal peran sementara IAM. Anda dapat menggunakan kredensil ini untuk berinteraksi dengan AWS layanan apa pun, termasuk Amazon S3 dan DynamoDB.
Setiap token JWT ditandatangani oleh tanda tangan key pair. 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 kedaluwarsa. 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 OIDC JSON 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.