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.
Berikan pengguna akses ke Kubernetes dengan penyedia OIDC eksternal
Amazon EKS mendukung penggunaan penyedia identitas OpenID Connect (OIDC) sebagai metode untuk mengautentikasi pengguna ke klaster Anda. Penyedia identitas OIDC dapat digunakan dengan, atau sebagai alternatif untuk AWS Identity and Access Management (IAM). Untuk informasi selengkapnya tentang penggunaan IAM, lihat Berikan akses kepada pengguna dan peran IAM ke API Kubernetes. Setelah mengonfigurasi autentikasi ke klaster Anda, Anda dapat membuat roles dan clusterroles Kubernetes untuk memberikan izin ke dalam peran, dan kemudian mengikat peran ke dalam identitas menggunakan rolebindings dan clusterrolebindings Kubernetes. Untuk informasi selengkapnya, lihat Menggunakan Otorisasi RBAC
-
Kubernetes tidak menyediakan penyedia identitas OIDC. Anda dapat menggunakan penyedia identitas OIDC publik yang sudah ada, atau Anda dapat menjalankan penyedia identitas milik Anda sendiri. Untuk daftar penyedia tersertifikasi, lihat OpenID Certification
di situs OpenID. -
URL penerbit penyedia identitas OIDC harus dapat diakses publik, sehingga Amazon EKS dapat menemukan kunci penandatanganan. Amazon EKS tidak mendukung penyedia identitas OIDC dengan sertifikat yang ditandatangani sendiri.
-
Anda tidak dapat menonaktifkan otentikasi IAM ke cluster Anda, karena masih diperlukan untuk menggabungkan node ke cluster.
-
Cluster Amazon EKS masih harus dibuat oleh prinsipal AWS IAM, bukan pengguna penyedia identitas OIDC. Hal ini karena pencipta klaster berinteraksi dengan API Amazon EKS, bukan API Kubernetes.
-
Pengguna yang diautentikasi penyedia identitas OIDC terdaftar di log audit cluster jika CloudWatch log diaktifkan untuk bidang kontrol. Untuk informasi selengkapnya, lihat Mengaktifkan atau menonaktifkan log bidang kontrol.
-
Anda tidak dapat masuk ke akun Konsol Manajemen AWS dengan akun dari penyedia OIDC. Anda hanya dapat Lihat sumber daya Kubernetes di Konsol Manajemen AWS dengan masuk Konsol Manajemen AWS dengan akun Manajemen AWS Identitas dan Akses.
Jumlah penyedia identitas OIDC yang dapat Anda kaitkan dengan cluster tergantung pada versi Kubernetes cluster. Pada cluster yang menjalankan Kubernetes versi 1.32 atau yang lebih baru, Anda dapat mengaitkan hingga 10 penyedia identitas OIDC. Ukuran gabungan dari semua konfigurasi penyedia OIDC harus kurang dari 12 KB. Pada cluster yang menjalankan versi lebih awal dari 1.32, Anda hanya dapat mengaitkan satu penyedia identitas OIDC.
-
URL penerbit (
issuerUrl) dan name (name) harus unik di semua penyedia identitas OIDC yang terkait dengan cluster. Anda tidak dapat mengaitkan penyedia yang sama lebih dari satu kali. -
Mengaitkan penyedia identitas OIDC adalah pembaruan cluster. Cluster memasuki
UPDATINGstatus, dan perubahan dapat memakan waktu beberapa menit untuk diterapkan sepenuhnya ke server API cluster. Anda dapat melacak kemajuan pembaruan dengan DescribeUpdate operasi.
catatan
Bidang kontrol mengambil kunci penandatanganan penyedia dari URL penerbit, sehingga penerbit harus dapat dijangkau dari bidang kontrol. Jika cluster Anda menggunakan customer-routed control plane egress (controlPlaneEgressMode=CUSTOMER_ROUTED), pastikan titik akhir penerbit dapat dijangkau melalui jalur keluar yang Anda konfigurasikan di VPC Anda. Untuk informasi selengkapnya, lihat Mengkonfigurasi perutean keluar pesawat kontrol.
Kaitkan penyedia identitas OIDC
Sebelum Anda dapat mengaitkan penyedia identitas OIDC dengan klaster Anda, Anda memerlukan informasi berikut dari penyedia Anda:
- URL Penerbit
-
URL penyedia identitas OIDC yang memungkinkan server API menemukan kunci penandatanganan publik untuk memverifikasi token. URL harus dimulai dengan
https://dan harus sesuai denganissklaim dalam token ID OIDC penyedia. Sesuai dengan standar OIDC, komponen jalur diperbolehkan tetapi parameter kueri tidak. Biasanya URL hanya terdiri dari nama host, sepertihttps://server.example.orgatauhttps://example.com. URL ini harus mengarah ke level di bawah.well-known/openid-configurationdan harus dapat diakses oleh publik melalui internet. URL penerbit harus unik di semua penyedia identitas OIDC yang terkait dengan cluster. - ID Klien (juga dikenal sebagai audiens)
-
ID untuk aplikasi klien yang membuat permintaan otentikasi ke penyedia identitas OIDC.
Anda dapat mengaitkan penyedia identitas menggunakan eksctl atau Konsol Manajemen AWS.
Mengaitkan penyedia identitas menggunakan eksctl
-
Buat file bernama
associate-identity-provider.yamldengan isi berikut ini. Ganti Contoh nilai dengan nilai Anda sendiri. Nilai-nilai dalam bagianidentityProvidersdiperoleh dari penyedia identitas OIDC Anda. Nilai hanya diperlukan untukname,type,issuerUrl, dan pengaturanclientIddi bawahidentityProviders.--- apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: my-cluster region: your-region-code identityProviders: - name: my-provider type: oidc issuerUrl: https://example.com clientId: kubernetes usernameClaim: email usernamePrefix: my-username-prefix groupsClaim: my-claim groupsPrefix: my-groups-prefix requiredClaims: string: string tags: env: devpenting
Jangan tentukan
system:, atau bagian mana pun dari string itu, untukgroupsPrefixatauusernamePrefix. -
Buat penyedia.
eksctl associate identityprovider -f associate-identity-provider.yaml -
Untuk digunakan
kubectluntuk bekerja dengan cluster dan penyedia identitas OIDC Anda, lihat Menggunakan kubectldalam dokumentasi Kubernetes.
Mengaitkan penyedia identitas menggunakan AWS Konsol
-
Buka konsol Amazon EKS
. -
Pilih cluster Anda, lalu pilih tab Akses.
-
Di bagian Penye dia Identitas OIDC, pilih Penyedia Identitas Asosiasi.
-
Pada halaman Penyedia Identitas Associate OIDC, masukkan atau pilih opsi berikut, dan kemudian pilih Associate.
-
Untuk Nama, masukkan nama unik untuk penyedia.
-
Untuk Penerbit URL, masukkan URL untuk penyedia Anda. URL ini harus dapat diakses melalui internet.
-
Untuk ID Kli en, masukkan ID klien penyedia identitas OIDC (juga dikenal sebagai audiens).
-
Untuk Klaim nama pengguna, masukkan klaim untuk digunakan sebagai nama pengguna.
-
Untuk klaim Grup, masukkan klaim yang akan digunakan sebagai grup pengguna.
-
(Opsional) Pilih Opsi lanjutan, masukkan atau pilih informasi berikut.
-
Prefiks nama pengguna – Masukkan prefiks untuk ditambahkan ke klaim nama pengguna. Prefiks diawali dengan nama pengguna klaim untuk mencegah bentrokan dengan nama yang sudah ada. Jika Anda tidak memberikan nilai, dan nama pengguna adalah nilai selain
email, prefiks default ke dalam nilai untuk Penerbit URL. Anda dapat menggunakan nilai-untuk menonaktifkan semua awalan. Jangan tentukansystem:atau bagian apa pun dari string itu. -
Prefiks grup – Masukkan prefiks untuk ditambahkan ke klaim grup. Awalan ditambahkan ke klaim grup untuk mencegah bentrokan dengan nama yang ada (seperti).
system:groupsMisalnya,oidc:nilai membuat nama grup sepertioidc:engineeringdanoidc:infra. Jangan tentukansystem:atau bagian apa pun dari string itu. -
Klaim yang diperlukan – Pilih Tambahkan klaim dan masukkan satu atau beberapa pasangan nilai kunci yang menjelaskan klaim yang diperlukan dalam token ID klien. Pasangan tersebut menggambarkan klaim yang diperlukan dalam Token ID. Jika diatur, setiap klaim diverifikasi untuk ada dalam token ID dengan nilai yang cocok.
-
Untuk digunakan
kubectluntuk bekerja dengan cluster dan penyedia identitas OIDC Anda, lihat Menggunakan kubectldalam dokumentasi Kubernetes.
-
-
-
Praktik terbaik untuk beberapa penyedia identitas
Gunakan nama pengguna dan awalan grup: Tetapkan awalan nama pengguna (usernamePrefix) dan awalan grup (groupsPrefix) untuk setiap penyedia identitas OIDC untuk mengurangi kemungkinan identitas dari penyedia yang berbeda tumpang tindih. Jika Anda tidak menggunakan awalan, gunakan nama pengguna dan klaim grup yang unik per penyedia. Salah satu pendekatan memastikan bahwa dua penyedia tidak dapat menghasilkan nama pengguna atau nama grup Kubernetes yang sama.
Validasi klaim token: Gunakan klaim wajib (requiredClaims) untuk menentukan pasangan kunci-nilai yang harus ada di token ID, sehingga cluster Anda hanya menerima token yang Anda otorisasi.
Batasi klaim di setiap token: Konfigurasikan penyedia identitas Anda untuk mengeluarkan token hanya dengan klaim yang dibutuhkan cluster Anda. Membatasi klaim mengurangi informasi yang terekspos jika token dikompromikan.
Contoh kebijakan IAM
Jika Anda ingin mencegah penyedia identitas OIDC dikaitkan dengan klaster, buat dan kaitkan kebijakan IAM berikut ke dalam akun IAM Amazon EKS administrator Anda. Untuk informasi selengkapnya, lihat Membuat kebijakan IAM dan Men ambahkan izin identitas IAM di Panduan Pengguna IAM dan Tindakan di Referensi Otorisasi Layanan.
{ "Version":"2012-10-17", "Statement": [ { "Sid": "denyOIDC", "Effect": "Deny", "Action": [ "eks:AssociateIdentityProviderConfig" ], "Resource": "arn:aws:eks:us-west-2:111122223333:cluster/*" }, { "Sid": "eksAdmin", "Effect": "Allow", "Action": [ "eks:*" ], "Resource": "*" } ] }
Contoh kebijakan berikut memungkinkan asosiasi penyedia identitas OIDC jika clientID adalah kubernetes dan issuerUrl adalah https://cognito-idp.us-west-2.amazonaws.com/*.
{ "Version":"2012-10-17", "Statement": [ { "Sid": "AllowCognitoOnly", "Effect": "Deny", "Action": "eks:AssociateIdentityProviderConfig", "Resource": "arn:aws:eks:us-west-2:111122223333:cluster/my-instance", "Condition": { "StringNotLikeIfExists": { "eks:issuerUrl": "https://cognito-idp.us-west-2.amazonaws.com/*" } } }, { "Sid": "DenyOtherClients", "Effect": "Deny", "Action": "eks:AssociateIdentityProviderConfig", "Resource": "arn:aws:eks:us-west-2:111122223333:cluster/my-instance", "Condition": { "StringNotEquals": { "eks:clientId": "kubernetes" } } }, { "Sid": "AllowOthers", "Effect": "Allow", "Action": "eks:*", "Resource": "*" } ] }