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.
IAM role untuk akun layanan
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
. -
Isolasi kredenal — Ketika akses ke Amazon EC2 Instance Metadata Service (IMDS) dibatasi, kontainer Pod hanya dapat mengambil kredensil 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. Jika IMDS tidak dibatasi, kontainer Pod juga memiliki akses ke peran IAM node Amazon EKS dan kontainer mungkin dapat memperoleh akses ke kredensial-kredensi peran IAM dari Pod lain pada node yang sama. Untuk informasi selengkapnya, lihat Membatasi akses ke profil instance yang ditetapkan ke node pekerja.
catatan
Pod yang dikonfigurasi hostNetwork: true
akan selalu memiliki akses IMDS, tetapi CLI AWS SDKs dan akan menggunakan kredenal 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 ini. Pod yang ditetapkan ke node yang sama akan berbagi kernel dan kemungkinan sumber daya lainnya tergantung pada konfigurasi Pod Anda. Sementara Pod yang berjalan pada node terpisah akan diisolasi pada lapisan komputasi, ada aplikasi node yang memiliki izin tambahan di API Kubernetes di luar cakupan instance individual. Beberapa contohnya adalah kubelet
kube-proxy
, driver penyimpanan CSI, atau aplikasi Kubernetes Anda sendiri.
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.govskope.caserver 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.