Menyiapkan GKE Identity Service dengan LDAP
Dokumen ini ditujukan untuk administrator cluster atau operator aplikasi yang menyiapkan GKE Identity Service di cluster mereka. Bagian ini menjelaskan cara menyiapkan GKE Identity Service di cluster Anda dengan penyedia Lightweight Directory Access Protocol (LDAP) pilihan Anda, termasuk Microsoft Active Directory. Opsi ini mengasumsikan bahwa Anda atau administrator platform sudah mendapatkan detail login untuk penyedia LDAP dengan mengikuti petunjuk dalam Menyiapkan penyedia LDAP untuk GKE Identity Service.
Untuk mengetahui lebih lanjut cara kerja GKE Identity Service dan opsi penyiapan lainnya, lihat ringkasan. Untuk mempelajari cara mengakses cluster menggunakan layanan ini sebagai developer atau pengguna cluster lainnya, lihat Mengakses cluster dengan Layanan Identitas GKE.
GKE Identity Service dengan LDAP saat ini dapat digunakan dengan GKE di VMware (cluster pengguna) dan GKE di Bare Metal saja.
Sebelum memulai
Pastikan Anda telah menginstal alat command line berikut:
- Versi terbaru Google Cloud CLI, yang mencakup
gcloud
, alat command line untuk berinteraksi dengan Google Cloud. Jika Anda perlu menginstal Google Cloud CLI, lihat panduan penginstalan. kubectl
untuk menjalankan perintah pada cluster Kubernetes. Jika Anda perlu menginstalkubectl
, lihat panduan penginstalan
Jika Anda menggunakan Cloud Shell sebagai lingkungan shell untuk berinteraksi dengan Google Cloud, alat ini diinstal untuk Anda.
- Versi terbaru Google Cloud CLI, yang mencakup
Pastikan Anda telah melakukan inisialisasi gcloud CLI untuk digunakan dengan project.
Sepanjang penyiapan ini, Anda mungkin perlu melihat dokumentasi untuk server LDAP. Panduan administrator berikut menjelaskan konfigurasi untuk beberapa penyedia LDAP populer, termasuk tempat menemukan informasi yang Anda perlukan untuk masuk ke server LDAP dan mengonfigurasi cluster:
Mengisi rahasia akun layanan LDAP
GKE Identity Service memerlukan rahasia akun layanan untuk melakukan autentikasi ke server LDAP dan mengambil detail pengguna. Ada dua jenis akun layanan yang diizinkan dalam autentikasi LDAP, autentikasi dasar (menggunakan nama pengguna dan sandi untuk mengautentikasi ke server) atau sertifikat klien (menggunakan kunci pribadi klien dan sertifikat klien). Anda atau administrator platform harus memiliki informasi tentang penyedia ini setelah mempelajari artikel Menyiapkan penyedia LDAP untuk GKE Identity Service.
Agar informasi login server LDAP tersedia untuk GKE Identity Service, Anda perlu membuat resource Kubernetes Secret dengan detail login dari Menyiapkan penyedia LDAP untuk GKE Identity Service.
Contoh berikut menunjukkan cara mengonfigurasi Secret untuk kedua jenis akun layanan. Contoh ini menunjukkan rahasia yang diterapkan ke namespace anthos-identity-service
.
Ini adalah contoh konfigurasi Secret auth dasar:
apiVersion: v1 kind: Secret metadata: name: SERVICE_ACCOUNT_SECRET_NAME namespace: "anthos-identity-service" type: kubernetes.io/basic-auth # Make sure the type is correct data: username: USERNAME # Use a base64-encoded username password: PASSWORD # Use a base64-encoded password
dengan, SERVICE_ACCOUNT_SECRET_NAME adalah nama yang Anda pilih untuk Secret ini. Ganti nilai nama pengguna dan sandi dengan nama pengguna dan sandi yang Anda dapatkan pada langkah sebelumnya. USERNAME adalah nama pengguna yang dienkode base64 PASSWORD adalah sandi yang dienkode menggunakan base64
Ini adalah contoh konfigurasi Rahasia sertifikat klien:
apiVersion: v1 kind: Secret metadata: name: SERVICE_ACCOUNT_SECRET_NAME namespace: anthos-identity-service type: kubernetes.io/tls # Make sure the type is correct data: # the data is abbreviated in this example tls.crt: | MIIC2DCCAcCgAwIBAgIBATANBgkqh ... tls.key: | MIIEpgIBAAKCAQEA7yn3bRHQ5FHMQ ...
...dengan SERVICE_ACCOUNT_SECRET_NAME adalah nama yang Anda pilih untuk Secret ini. Ganti sertifikat TLS dan nilai kunci dengan sertifikat yang dienkode dan nilai kunci yang Anda dapatkan di langkah sebelumnya.
Contoh ini menunjukkan rahasia yang diterapkan ke namespace anthos-identity-service
, yang merupakan pendekatan yang kami rekomendasikan. Hal ini terjadi karena secara default GKE Identity Service memiliki izin untuk membaca Secret di anthos-identity-service
. Jika Anda ingin menggunakan namespace lain, ubah metadata di secret, lalu tambahkan kebijakan RBAC baru untuk memberikan izin GKE Identity Service untuk membaca Secret di namespace tersebut, seperti berikut:
--- apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: namespace: NAMESPACE name: ais-secret-reader-role rules: - apiGroups: [""] resources: ["secrets"] verbs: ["get","list"] --- apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: ais-secret-reader-role-binding namespace: NAMESPACE roleRef: apiGroup: rbac.authorization.k8s.io kind: Role name: ais-secret-reader-role subjects: - kind: ServiceAccount name: default namespace: anthos-identity-service ---
Mengonfigurasi cluster
GKE Identity Service menggunakan jenis resource kustom (CRD) Kubernetes khusus untuk mengonfigurasi cluster Anda yang disebut ClientConfig
, dengan kolom untuk informasi tentang penyedia identitas dan parameter yang diperlukan untuk menampilkan informasi pengguna. Konfigurasi ClientConfig
Anda juga mencakup nama rahasia dan namespace dari Secret yang Anda buat dan terapkan di bagian sebelumnya, sehingga GKE Identity Service dapat melakukan autentikasi ke server LDAP.
Untuk menerapkan konfigurasi ke cluster Anda, edit objek default KRM jenis clientconfig
dalam namespace kube-public
:
kubectl --kubeconfig USER_CLUSTER_KUBECONFIG -n kube-public edit clientconfig default
...dengan USER_CLUSTER_KUBECONFIG
adalah jalur ke file kubeconfig untuk cluster. Jika ada beberapa konteks dalam kubeconfig, konteks saat ini akan digunakan. Anda mungkin perlu mereset konteks saat ini ke cluster yang benar sebelum menjalankan perintah.
Berikut ini format untuk konfigurasi ClientConfig
:
authentication: - name: NAME_STRING ldap: host: HOST_NAME certificateAuthorityData: CERTIFICATE_AUTHORITY_DATA connectionType: CONNECTION_TYPE serviceAccountSecret: name: SERVICE_ACCOUNT_SECRET_NAME namespace: NAMESPACE type: SECRET_FORMAT user: baseDN: BASE_DN filter: FILTER identifierAttribute: IDENTIFIER_ATTRIBUTE loginAttribute: LOGIN_ATTRIBUTE group: baseDN: BASE_DN filter: FILTER identifierAttribute: IDENTIFIER_ATTRIBUTE
Tabel berikut menjelaskan kolom dalam CRD ClientConfig
:
Kolom | Diperlukan | Deskripsi | Format |
---|---|---|---|
name | ya | Nama untuk mengidentifikasi konfigurasi LDAP ini | string |
host | ya | Nama host atau alamat IP server LDAP. Port bersifat opsional dan secara default akan ditetapkan ke 389, jika tidak ditentukan. Misalnya ldap.server.example.com atau 10.10.10.10:389 .
|
string |
certificateAuthorityData | Diperlukan untuk jenis koneksi LDAP tertentu | Berisi sertifikat otoritas sertifikat berformat PEM yang dienkode Base64 untuk server LDAP. Alamat ini hanya boleh diberikan untuk koneksi ldaps dan startTLS .
|
string |
connectionType | ya | Jenis koneksi LDAP yang akan digunakan saat terhubung ke server LDAP. Nilai defaultnya adalah startTLS . Mode insecure hanya boleh digunakan untuk pengembangan, karena semua komunikasi dengan server akan berupa teks biasa.
|
string |
serviceAccountSecret | |||
name | ya | Nama Secret Kubernetes yang menyimpan kredensial untuk akun layanan LDAP. | string |
namespace | ya | Namespace Secret Kubernetes yang menyimpan kredensial untuk akun layanan LDAP. | string |
jenis | ya | Menentukan format secret akun layanan untuk mendukung berbagai jenis secret. Jika Anda menentukan basic-auth dalam konfigurasi Secret Anda, nilainya seharusnya basic , jika tidak, seharusnya tls . Jika tidak ditentukan, setelan defaultnya adalah basic .
|
string |
pengguna | |||
baseDN | ya | Lokasi subtree dalam direktori LDAP untuk menelusuri entri pengguna. | string |
filter | tidak ada | Filter opsional untuk diterapkan saat menelusuri pengguna. Hal ini dapat digunakan untuk lebih membatasi akun pengguna yang diizinkan untuk masuk. Jika tidak ditentukan, setelan defaultnya adalah (objectClass=User) .
|
string |
identifierAttribute | tidak ada | Menentukan atribut yang akan digunakan sebagai identitas pengguna setelah mereka diautentikasi.
Hal ini berbeda dengan kolom loginAttribute untuk
memungkinkan pengguna login dengan nama pengguna, tetapi
ID mereka yang sebenarnya dapat berupa alamat email atau
Nama yang Dibedakan (DN) lengkap. Misalnya, menetapkan loginAttribute ke sAMAccountName dan identifierAttribute ke userPrincipalName akan mengizinkan pengguna untuk login sebagai bsmith , tetapi kebijakan RBAC sebenarnya untuk pengguna akan ditulis sebagai bsmith@example.com .
Sebaiknya gunakan userPrincipalName karena metode ini akan bersifat unik untuk setiap pengguna. Jika tidak ditentukan, nilai defaultnya adalah userPrincipalName .
|
string |
loginAttribute | tidak ada | Nama atribut yang cocok dengan nama pengguna input. Atribut ini digunakan untuk menemukan pengguna di database LDAP, misalnya (<LoginAttribute>=<username>) dan digabungkan dengan kolom filter opsional. Nilai defaultnya adalah userPrincipalName .
|
string |
group (Kolom opsional) | |||
baseDN | ya | Lokasi subtree di direktori LDAP untuk mencari entri grup. | string |
filter | tidak ada | Filter opsional yang akan digunakan saat menelusuri grup tempat pengguna berada. Fungsi ini dapat digunakan untuk mencocokkan grup tertentu secara eksplisit guna mengurangi jumlah grup yang ditampilkan untuk setiap pengguna. Nilai defaultnya adalah (objectClass=Group) .
|
string |
identifierAttribute | tidak ada | Nama pengidentifikasi setiap grup tempat pengguna berada. Misalnya, jika kebijakan ini disetel ke distinguishedName , RBAC dan ekspektasi grup lainnya harus ditulis sebagai DN lengkap. Jika tidak ditentukan, nilai defaultnya adalah distinguishedName .
|
string |
Apa langkah selanjutnya?
Setelah konfigurasi diterapkan, lanjutkan menyiapkan akses pengguna ke cluster dengan GKE Identity Service.