Berikan akses kepada pengguna Kubernetes dengan OIDC penyedia eksternal - Amazon EKS

Bantu tingkatkan halaman ini

Ingin berkontribusi pada panduan pengguna ini? Gulir ke bagian bawah halaman ini dan pilih Edit halaman ini GitHub. Kontribusi Anda akan membantu membuat panduan pengguna kami lebih baik untuk semua orang.

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

Berikan akses kepada pengguna Kubernetes dengan OIDC penyedia eksternal

Amazon EKS mendukung penggunaan OpenID Connect (OIDC) penyedia identitas sebagai metode untuk mengautentikasi pengguna ke klaster Anda. OIDCpenyedia identitas dapat digunakan dengan, atau sebagai alternatif untuk AWS Identity and Access Management (IAM). Untuk informasi selengkapnya tentang penggunaanIAM, lihatBerikan akses IAM kepada pengguna dan peran ke Kubernetes APIs. Setelah mengonfigurasi otentikasi ke klaster, Anda dapat membuat Kubernetes roles dan clusterroles menetapkan izin ke peran, lalu mengikat peran ke identitas menggunakan dan. Kubernetes rolebindings clusterrolebindings Untuk informasi selengkapnya, lihat Menggunakan RBAC Otorisasi dalam Kubernetes dokumentasi.

Pertimbangan
  • Anda dapat mengaitkan satu penyedia OIDC identitas ke klaster Anda.

  • Kubernetestidak menyediakan penyedia OIDC identitas. Anda dapat menggunakan penyedia OIDC identitas publik yang ada, atau Anda dapat menjalankan penyedia identitas Anda sendiri. Untuk daftar penyedia tersertifikasi, lihat OpenID Certification di situs OpenID.

  • Penerbit URL penyedia OIDC identitas harus dapat diakses publik, sehingga Amazon EKS dapat menemukan kunci penandatanganan. Amazon EKS tidak mendukung penyedia OIDC identitas dengan sertifikat yang ditandatangani sendiri.

  • Anda tidak dapat menonaktifkan IAM otentikasi ke klaster Anda, karena masih diperlukan untuk menggabungkan node ke cluster.

  • EKSCluster Amazon masih harus dibuat oleh AWS IAMprinsipal, bukan pengguna penyedia OIDC identitas. Ini karena pembuat cluster berinteraksi dengan Amazon EKSAPIs, bukan. Kubernetes APIs

  • OIDCpengguna yang diautentikasi oleh penyedia identitas tercantum dalam log audit klaster jika CloudWatch log diaktifkan untuk bidang kontrol. Untuk informasi selengkapnya, lihat Mengaktifkan atau menonaktifkan log bidang kontrol.

  • Anda tidak dapat masuk ke akun AWS Management Console dengan akun dari OIDC penyedia. Anda hanya dapat melihat Kubernetes sumber daya di konsol dengan masuk ke AWS Identity and Access Management akun AWS Management Console dengan.

Kaitkan penyedia OIDC identitas

Sebelum Anda dapat mengaitkan penyedia OIDC identitas dengan klaster Anda, Anda memerlukan informasi berikut dari penyedia Anda:

Penerbit URL

Penyedia OIDC identitas yang memungkinkan API server menemukan kunci penandatanganan publik untuk memverifikasi token. URL URLHarus dimulai dengan https:// dan harus sesuai dengan iss klaim dalam token OIDC ID penyedia. Sesuai dengan OIDC standar, komponen jalur diperbolehkan tetapi parameter kueri tidak. Biasanya hanya URL terdiri dari nama host, seperti https://server.example.org atauhttps://example.com. Ini URL harus mengarah ke tingkat di bawah ini .well-known/openid-configuration dan harus dapat diakses publik melalui internet.

ID Klien (juga dikenal sebagai audiens)

ID untuk aplikasi klien yang membuat permintaan otentikasi ke penyedia OIDC identitas.

Anda dapat mengaitkan penyedia identitas menggunakan eksctl atau AWS Management Console.

eksctl
Untuk mengaitkan penyedia OIDC identitas ke klaster Anda menggunakan eksctl
  1. Buat file bernama associate-identity-provider.yaml dengan konten berikut. Ganti nilai contoh dengan milikmu sendiri. Nilai-nilai di identityProviders bagian ini diperoleh dari penyedia OIDC identitas Anda. Nilai hanya diperlukan untuk name, type, issuerUrl, dan pengaturan clientId di bawah identityProviders.

    --- 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: dev
    penting

    Jangan tentukan system:, atau bagian dari string tersebut, untuk groupsPrefix atau usernamePrefix.

  2. Buat penyedia.

    eksctl associate identityprovider -f associate-identity-provider.yaml
  3. Untuk digunakan kubectl untuk bekerja dengan klaster dan penyedia OIDC identitas Anda, lihat Menggunakan kubectl dalam Kubernetes dokumentasi.

AWS Management Console
Untuk mengaitkan penyedia OIDC identitas ke klaster Anda menggunakan AWS Management Console
  1. Buka EKS konsol Amazon di https://console.aws.amazon.com/eks/rumah#/cluster.

  2. Pilih klaster Anda, lalu pilih tab Access.

  3. Di bagian Penyedia OIDC Identitas, pilih Penyedia Identitas Rekanan.

  4. Pada halaman Penyedia OIDC Identitas Rekanan, masukkan atau pilih opsi berikut, lalu pilih Rekanan.

    • Untuk Nama, masukkan nama unik untuk penyedia.

    • Untuk Penerbit URL, masukkan URL untuk penyedia Anda. Ini URL harus dapat diakses melalui internet.

    • Untuk ID Klien, masukkan ID klien penyedia OIDC identitas (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 selainemail, awalan default ke nilai untuk Penerbit. URL Anda dapat menggunakan -nilai untuk menonaktifkan semua prefiks. Jangan tentukan system: atau bagian dari string tersebut.

      • Prefiks grup – Masukkan prefiks untuk ditambahkan ke klaim grup. Prefiks ditambahkan ke klaim grup untuk mencegah bentrokan dengan nama yang sudah ada (seperti system: groups). Misalnya, oidc: nilai membuat nama grup seperti oidc:engineering dan oidc:infra. Jangan tentukan system: atau bagian dari string tersebut.

      • 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 menjelaskan klaim yang diperlukan dalam Token ID. Jika diatur, setiap klaim diverifikasi untuk ada dalam token ID dengan nilai yang cocok.

  5. Untuk digunakan kubectl untuk bekerja dengan klaster dan penyedia OIDC identitas Anda, lihat Menggunakan kubectl dalam Kubernetes dokumentasi.

Contoh IAM kebijakan

Jika Anda ingin mencegah penyedia OIDC identitas dikaitkan dengan klaster, buat dan kaitkan IAM kebijakan berikut ke IAM akun EKS administrator Amazon Anda. Untuk informasi selengkapnya, lihat Membuat IAM kebijakan dan Menambahkan izin IAM identitas di Panduan IAM Pengguna dan Tindakan, sumber daya, dan kunci kondisi untuk Amazon Elastic Kubernetes Service di Referensi Otorisasi Layanan.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "denyOIDC", "Effect": "Deny", "Action": [ "eks:AssociateIdentityProviderConfig" ], "Resource": "arn:aws:eks:us-west-2.amazonaws.com:111122223333:cluster/*" }, { "Sid": "eksAdmin", "Effect": "Allow", "Action": [ "eks:*" ], "Resource": "*" } ] }

Contoh kebijakan berikut memungkinkan asosiasi penyedia OIDC identitas jika clientID is kubernetes dan issuerUrl ishttps://cognito-idp.us-west-2amazonaws.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": "*" } ] }

Mitra penyedia OIDC identitas yang divalidasi

Amazon EKS memelihara hubungan dengan jaringan mitra yang menawarkan dukungan untuk penyedia OIDC identitas yang kompatibel. Lihat dokumentasi mitra berikut untuk detail tentang cara mengintegrasikan penyedia identitas dengan AmazonEKS.

Mitra Produk Dokumentasi

PingIdentity

PingOne untuk Enterprise

Instruksi instalasi

Amazon EKS bertujuan untuk memberi Anda berbagai pilihan opsi untuk mencakup semua kasus penggunaan. Jika Anda mengembangkan penyedia identitas OIDC kompatibel yang didukung secara komersial yang tidak tercantum di sini, hubungi tim mitra kami di aws-container-partners@amazon .com untuk informasi lebih lanjut.