IAMperan untuk akun layanan - Amazon EKS

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

IAMperan untuk akun layanan

Aplikasi dalam a Pod’s Container dapat menggunakan AWS SDK atau AWS CLI untuk membuat API permintaan ke AWS layanan menggunakan izin AWS Identity and Access Management (IAM). Aplikasi harus menandatangani AWS API permintaan mereka dengan AWS kredensil. IAMperan untuk akun layanan 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 kredensil Anda ke container atau menggunakan peran EC2 instans Amazon, Anda mengaitkan peran dengan IAM Kubernetes akun layanan dan konfigurasikan Pods untuk menggunakan akun layanan. Anda tidak dapat menggunakan IAM peran untuk akun layanan dengan kluster Buat EKS cluster Amazon lokal di AWS Outposts untuk ketersediaan tinggi lokal untuk Amazon EKS di AWS Outposts.

IAMperan untuk akun layanan memberikan manfaat berikut:

  • Keistimewaan paling sedikit - Anda dapat IAM mencakup izin ke akun layanan, dan hanya Pods yang menggunakan akun layanan tersebut memiliki akses ke izin tersebut. Fitur ini juga mengurangi kebutuhan akan solusi dari pihak ketiga seperti kiam atau kube2iam.

  • Isolasi kredensi — A Pod’s container hanya dapat mengambil kredensil untuk IAM peran yang terkait dengan akun layanan yang digunakan container. Kontainer tidak pernah memiliki akses ke kredensil yang digunakan oleh kontainer lain di wadah lain Pods. Saat menggunakan IAM peran untuk akun layanan, Pod’s container juga memiliki izin yang ditetapkan ke IAM peran EKS node IAMPeran EKS simpul Amazon Amazon, kecuali jika Anda memblokir Pod akses 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 IAM peran untuk akun layanan dengan menyelesaikan prosedur berikut:

  1. Buat sebuah IAM OIDC penyedia untuk klaster AndaBuat IAM OIDC penyedia untuk klaster Anda — Anda hanya menyelesaikan prosedur ini satu kali untuk setiap cluster.

    catatan

    Jika Anda mengaktifkan EKS VPC titik akhir, titik akhir EKS OIDC layanan tidak dapat diakses dari dalamnya. VPC Akibatnya, operasi Anda seperti membuat OIDC penyedia dengan eksctl in tidak VPC akan berfungsi dan akan menghasilkan batas waktu saat mencoba meminta. https://oidc.eks.region.amazonaws.com Contoh pesan kesalahan berikut:

server cant find oidc.eks.region.amazonaws.com: NXDOMAIN

Untuk menyelesaikan langkah ini, Anda dapat menjalankan perintah di luarVPC, misalnya di dalam AWS CloudShell atau di komputer yang terhubung ke internet. Atau, Anda dapat membuat resolver bersyarat split-horizon diVPC, seperti Route 53 Resolver untuk menggunakan resolver yang berbeda untuk Penerbit dan tidak menggunakannya untuk itu. OIDC URL VPC DNS Sebagai contoh penerusan bersyarat di CoreDNS, lihat permintaan EKS fitur Amazon di GitHub. Menetapkan IAM peran untuk Kubernetes akun layananTetapkan IAM peran ke akun layanan Kubernetes — Selesaikan prosedur ini untuk setiap set izin unik yang Anda inginkan untuk dimiliki aplikasi. Konfigurasi Pods untuk menggunakan Kubernetes akun layananKonfigurasikan Pod untuk menggunakan akun layanan Kubernetes — Selesaikan prosedur ini untuk masing-masing Pod yang membutuhkan akses ke AWS layanan. Gunakan IRSA dengan AWS SDKGunakan IRSA dengan AWS SDK — Konfirmasikan bahwa beban kerja menggunakan AWS SDK versi yang didukung dan bahwa beban kerja menggunakan rantai kredenal default.

IAM, Kubernetes, dan OpenID Connect (OIDC) informasi latar belakang

Pada tahun 2014, AWS Identity and Access Management menambahkan dukungan untuk identitas federasi menggunakan OpenID Connect (OIDC). Fitur ini memungkinkan Anda untuk mengautentikasi AWS API panggilan dengan penyedia identitas yang didukung dan menerima yang valid OIDC JSON token web (JWT). Anda dapat meneruskan token ini ke AWS STS AssumeRoleWithWebIdentity API operasi dan menerima kredensi peran IAM sementara. Anda dapat menggunakan kredensil ini untuk berinteraksi dengan AWS layanan apa pun, termasuk Amazon S3 dan DynamoDB.

Setiap JWT token ditandatangani oleh tanda tangan key pair. Kunci disajikan pada OIDC penyedia yang dikelola oleh Amazon EKS dan kunci pribadi berputar setiap 7 hari. Amazon EKS menyimpan kunci publik sampai kedaluwarsa. Jika Anda menghubungkan OIDC klien eksternal, ketahuilah bahwa Anda perlu menyegarkan kunci penandatanganan sebelum kunci publik kedaluwarsa. Pelajari cara Ambil kunci penandatanganan untuk memvalidasi OIDC token Mengambil kunci penandatanganan untuk memvalidasi tokenOIDC.

Kubernetes telah lama menggunakan akun layanan sebagai sistem identitas internalnya sendiri. Pods dapat mengautentikasi dengan Kubernetes APIserver menggunakan token yang dipasang secara otomatis (yang bukanOIDC JWT) bahwa hanya Kubernetes APIServer bisa memvalidasi Token akun layanan lama ini tidak kedaluwarsa, dan memutar kunci penandatanganan adalah proses yang sulit. Masuk Kubernetes versi1.12, dukungan ditambahkan untuk ProjectedServiceAccountToken fitur baru. Fitur ini adalah OIDC JSON token web yang juga berisi identitas akun layanan dan mendukung audiens yang dapat dikonfigurasi.

Amazon EKS menjadi tuan rumah publik OIDC titik akhir penemuan untuk setiap cluster yang berisi kunci penandatanganan untuk ProjectedServiceAccountToken JSON token web sehingga sistem eksternal, sepertiIAM, dapat memvalidasi dan menerima OIDC token yang dikeluarkan oleh Kubernetes.