Panduan ini ditujukan bagi administrator platform yang perlu menyiapkan gateway Connect dalam project yang berisi pengguna yang tidak memiliki identitas Google dan bukan anggota Google Workspace. Dalam panduan ini, identitas tersebut disebut sebagai "identitas pihak ketiga". Sebelum membaca panduan ini, Anda harus memahami konsep dalam Ringkasan gateway Connect. Untuk memberikan otorisasi ke masing-masing Akun Google, lihat Menyiapkan gateway Connect. Untuk dukungan Google Grup, lihat Menyiapkan gateway Connect dengan Google Grup.
Penyiapan dalam panduan ini memungkinkan pengguna login ke cluster fleet menggunakan Google Cloud CLI, gateway Connect, dan konsol Google Cloud .
Jenis cluster yang didukung
Anda dapat menyiapkan kontrol akses dengan identitas pihak ketiga melalui gateway Connect untuk jenis cluster terdaftar berikut:
- Cluster GKE (semua versi yang didukung).
- Google Distributed Cloud di VMware dan bare metal (versi 1.13 dan yang lebih baru).
- GKE di AWS dan GKE di Azure (versi 1.25 dan yang lebih baru).
- Cluster terpasang (versi 1.16 dan yang lebih baru).
Jika Anda perlu mengupgrade cluster on-premise untuk menggunakan fitur ini, lihat Mengupgrade cluster untuk VMWare dan Mengupgrade cluster di bare metal.
Jika Anda memiliki kasus penggunaan untuk lingkungan cluster GKE selain yang tercantum di atas, hubungi Dukungan Pelanggan Cloud atau tim gateway Connect.
Cara kerjanya
Seperti yang dijelaskan dalam ringkasan, pengguna mungkin menggunakan penyedia identitas yang bukan Google Workspace atau Cloud Identity. Dengan menggunakan Workforce Identity Federation, pengguna dapat menggunakan penyedia identitas pihak ketiga mereka, seperti Okta atau Azure Active Directory, untuk mendapatkan akses ke cluster mereka melalui Connect Gateway. Tidak seperti akun Google, pengguna pihak ketiga diwakili oleh akun utama Identity and Access Management (IAM) yang mengikuti format:
principal://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/subject/SUBJECT_VALUE
WORKFORCE_POOL_ID
adalah nama kumpulan tenaga kerja yang berisi penyedia identitas pihak ketiga yang relevan.SUBJECT_VALUE
adalah pemetaan identitas pihak ketiga ke subjek Google.
Untuk grup pihak ketiga, akun utama IAM mengikuti format:
principal://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/group/GROUP_VALUE
Diagram berikut menunjukkan alur umum bagi pengguna pihak ketiga yang melakukan autentikasi dan menjalankan perintah terhadap cluster dengan layanan ini diaktifkan. Agar alur ini berhasil, kebijakan kontrol akses berbasis peran (RBAC) harus diterapkan di cluster untuk pengguna atau grup.
Untuk pengguna individual, kebijakan RBAC yang menggunakan nama utama IAM lengkap pengguna harus ada di cluster.
Jika menggunakan fungsi grup, kebijakan RBAC yang menggunakan nama akun utama IAM lengkap harus ada di cluster untuk grup yang:
Berisi pengguna
alice@example.com
sebagai anggota.Disertakan dalam pemetaan untuk penyedia identitas dalam kumpulan tenaga kerja yang ada di organisasi Google Cloud Alice.
- Pengguna
alice@example.com
login ke gcloud dengan identitas pihak ketiganya, menggunakan login berbasis browser pihak ketiga. Untuk menggunakan cluster dari command line, pengguna mendapatkankubeconfig
gateway cluster seperti yang dijelaskan dalam Menggunakan gateway Connect. - Pengguna mengirim permintaan dengan menjalankan perintah
kubectl
atau membuka halaman Workloads atau Object Browser Google Kubernetes Engine di konsol Google Cloud . - Permintaan diterima oleh gateway Connect, yang menangani autentikasi pihak ketiga menggunakan Workforce Identity Federation.
- Gateway Connect melakukan pemeriksaan otorisasi dengan IAM.
- Layanan Connect meneruskan permintaan ke Agen Connect yang berjalan di cluster. Permintaan disertai dengan informasi kredensial pengguna untuk digunakan dalam autentikasi dan otorisasi di cluster.
- Connect Agent meneruskan permintaan ke server Kubernetes API.
- Server Kubernetes API meneruskan permintaan ke GKE Identity Service, yang memvalidasi permintaan.
- GKE Identity Service menampilkan informasi pengguna dan grup pihak ketiga ke server Kubernetes API. Server API Kubernetes kemudian dapat menggunakan informasi ini untuk mengizinkan permintaan berdasarkan kebijakan RBAC yang dikonfigurasi cluster.
Sebelum memulai
Pastikan Anda telah menginstal alat command line berikut:
- Versi terbaru Google Cloud CLI, alat command line untuk berinteraksi dengan Google Cloud.
- Alat command line Kubernetes,
kubectl
, untuk berinteraksi dengan cluster Anda.
Jika Anda menggunakan Cloud Shell sebagai lingkungan shell untuk berinteraksi dengan Google Cloud, alat ini akan diinstal untuk Anda.
Pastikan Anda telah menginisialisasi gcloud CLI untuk digunakan dengan project Anda.
Panduan ini mengasumsikan bahwa Anda telah memiliki
roles/owner
di project Anda. Jika Anda bukan pemilik project, Anda mungkin memerlukan izin tambahan untuk melakukan beberapa langkah penyiapan.Untuk cluster di luar Google Cloud, GKE Identity Service perlu memanggil Google API dari cluster Anda untuk menyelesaikan autentikasi. Periksa apakah kebijakan jaringan Anda mengharuskan traffic keluar melewati proxy.
Menyiapkan pemetaan atribut identitas pihak ketiga menggunakan Workforce Identity
Pastikan ada penyedia identitas dan kumpulan tenaga kerja yang disiapkan untuk organisasi Anda dengan mengikuti petunjuk yang sesuai dengan penyedia identitas Anda: Google Cloud
Mengaktifkan API
Untuk menambahkan gateway ke project Anda, aktifkan Connect gateway API dan API dependensi yang diperlukan. Jika pengguna Anda hanya ingin melakukan autentikasi ke cluster menggunakan Google Cloud konsol, Anda tidak perlu mengaktifkan connectgateway.googleapis.com
, tetapi perlu mengaktifkan API yang tersisa.
gcloud services enable --project=PROJECT_ID \
connectgateway.googleapis.com \
gkeconnect.googleapis.com \
gkehub.googleapis.com \
cloudresourcemanager.googleapis.com
Menyiapkan GKE Identity Service
Fitur dukungan identitas pihak ketiga gateway Connect menggunakan Layanan Identitas GKE untuk mendapatkan informasi keanggotaan grup dari Google. Anda dapat mengetahui lebih lanjut GKE Identity Service di Memperkenalkan GKE Identity Service.
Jika Anda menggunakan cluster GKE dengan gateway, Anda tidak perlu menyiapkan GKE Identity Service untuk menggunakan dukungan identitas pihak ketiga. Sebagai gantinya, ikuti petunjuk di Mengonfigurasi Google Grup untuk RBAC, lalu lanjutkan ke Memberikan peran IAM untuk memberikan akses ke cluster melalui gateway.
Jika Anda menggunakan cluster terlampir GKE dengan gateway, GKE Identity Service tidak diperlukan untuk dukungan identitas pihak ketiga. Ikuti petunjuk untuk jenis cluster yang Anda pilih guna menyiapkan dukungan identitas pihak ketiga:
- Hubungkan ke cluster terlampir EKS Anda
- Menghubungkan ke cluster terlampir AKS
- Menghubungkan ke jenis cluster lainnya
Pastikan GKE Identity Service diinstal
GKE Identity Service diinstal secara default di cluster GKE mulai dari versi 1.7 dan seterusnya (meskipun dukungan identitas pihak ketiga memerlukan versi 1.13 atau yang lebih tinggi). Anda dapat mengonfirmasi bahwa aplikasi diinstal dengan benar di cluster Anda dengan menjalankan perintah berikut:
kubectl --kubeconfig CLUSTER_KUBECONFIG get all -n anthos-identity-service
Ganti CLUSTER_KUBECONFIG
dengan jalur ke kubeconfig cluster.
Mengonfigurasi dukungan identitas pihak ketiga untuk grup
Jika cluster atau armada Anda sudah dikonfigurasi untuk dukungan Google Grup, tidak ada langkah tambahan dan Anda dapat langsung membuka Memberikan peran IAM kepada pengguna dan grup pihak ketiga.
Jika Anda menggunakan Google Distributed Cloud di VMware atau bare metal, cara Anda menyiapkan GKE Identity Service menentukan cara Anda perlu mengonfigurasi fitur grup pihak ketiga.
Jika Anda menggunakan GKE Identity Service untuk pertama kalinya, Anda dapat memilih antara mengonfigurasi dukungan grup pihak ketiga menggunakan Fleet API (direkomendasikan) atau menggunakan kubectl.
Jika Anda bukan pengguna baru GKE Identity Service, perhatikan salah satu hal berikut:
- Jika Anda telah menyiapkan GKE Identity Service untuk penyedia identitas lain di tingkat fleet, fitur grup pihak ketiga akan diaktifkan untuk Anda secara default. Lihat bagian Fleet di bawah untuk mengetahui detail selengkapnya dan penyiapan tambahan yang mungkin Anda perlukan.
Jika Anda telah menyiapkan Layanan Identitas GKE untuk penyedia identitas lain berdasarkan per cluster, lihat bagian Kubectl di bawah untuk mengetahui petunjuk cara memperbarui konfigurasi Anda untuk fitur grup pihak ketiga.
Fleet
Anda dapat menggunakan konsol atau command line untuk mengonfigurasi akses ke grup pihak ketiga menggunakan Fleet Feature API. Google Cloud
Konsol
Jika Anda belum pernah menyiapkan GKE Identity Service untuk fleet, ikuti petunjuk di Mengonfigurasi cluster untuk GKE Identity Service.
Pilih cluster dan perbarui konfigurasi
Di konsol Google Cloud , buka halaman Feature Manager.
Klik Detail di panel Identity Service. Detail cluster project Anda akan ditampilkan.
Klik Perbarui layanan identitas untuk membuka panel penyiapan.
Pilih cluster yang ingin Anda konfigurasi. Anda dapat memilih cluster satu per satu, atau menentukan bahwa Anda ingin semua cluster dikonfigurasi dengan konfigurasi identitas yang sama.
Di bagian Configure Identity Providers, Anda dapat memilih untuk mempertahankan, menambahkan, memperbarui, atau menghapus penyedia identitas.
Klik Lanjutkan untuk melanjutkan ke langkah konfigurasi berikutnya. Jika Anda telah memilih setidaknya satu cluster yang memenuhi syarat untuk penyiapan ini, bagian Autentikasi Google akan ditampilkan.
Pilih Aktifkan untuk mengaktifkan autentikasi Google bagi cluster yang dipilih. Jika Anda perlu mengakses penyedia identitas Google melalui proxy, masukkan detail Proxy.
Klik Update Configuration. Tindakan ini akan menerapkan konfigurasi identitas pada cluster yang Anda pilih.
gcloud
Jika Anda belum pernah menyiapkan GKE Identity Service untuk fleet, ikuti petunjuk di Mengonfigurasi cluster untuk GKE Identity Service.
Tentukan hanya konfigurasi berikut dalam file auth-config.yaml
Anda:
spec:
authentication:
- name: google-authentication-method
google:
disable: false
Mengonfigurasi akses grup pihak ketiga menggunakan proxy
Jika Anda perlu mengakses penyedia identitas melalui proxy, gunakan kolom proxy
dalam file auth-config.yaml
. Anda mungkin perlu menyetel ini jika, misalnya, cluster Anda berada di jaringan pribadi dan perlu terhubung ke penyedia identitas publik.
Anda harus menambahkan konfigurasi ini meskipun telah mengonfigurasi GKE Identity Service untuk penyedia lain.
Untuk mengonfigurasi proxy
, berikut cara memperbarui bagian authentication
dari file konfigurasi auth-config.yaml
yang ada.
spec:
authentication:
- name: authentication-method
google:
disable: false
proxy: PROXY_URL
di mana
disable
(opsional) menunjukkan apakah Anda ingin mengaktifkan atau menonaktifkan fitur grup pihak ketiga untuk cluster. Nilai ini ditetapkan ke false secara default. Jika Anda ingin menonaktifkan fitur ini, Anda dapat menyetelnya ke benar.PROXY_URL
(opsional) adalah alamat server proxy untuk terhubung ke identitas Google. Contoh:http://user:password@10.10.10.10:8888
Terapkan konfigurasi:
Untuk menerapkan konfigurasi ke cluster, jalankan perintah berikut:
gcloud container fleet identity-service apply \ --membership=CLUSTER_NAME \ --config=/path/to/auth-config.yaml
di mana
CLUSTER_NAME
adalah nama keanggotaan unik cluster Anda dalam fleet.
Setelah diterapkan, konfigurasi ini dikelola oleh pengontrol GKE Identity Service. Setiap perubahan lokal yang dilakukan pada konfigurasi klien GKE Identity Service akan disesuaikan kembali oleh pengontrol ke konfigurasi yang ditentukan dalam penyiapan ini.
Kubectl
Untuk mengonfigurasi cluster agar menggunakan GKE Identity Service dengan fitur grup pihak ketiga,
Anda harus memperbarui ClientConfig
GKE Identity Service cluster.
Ini adalah jenis resource kustom (CRD) Kubernetes yang digunakan untuk konfigurasi cluster.
Setiap cluster memiliki resource ClientConfig
bernama default
di
namespace kube-public
yang Anda perbarui dengan detail konfigurasi Anda.
Untuk mengedit konfigurasi, gunakan perintah berikut.
kubectl --kubeconfig CLUSTER_KUBECONFIG -n kube-public edit clientconfig default
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 contoh cara memperbarui ClientConfig
dengan metode autentikasi baru yang memiliki konfigurasi jenis google
untuk mengaktifkan fitur grup pihak ketiga.
Jika kolom internalServer
kosong, pastikan kolom tersebut disetel ke https://kubernetes.default.svc
,
seperti yang ditunjukkan di bawah.
spec:
authentication:
- google:
audiences:
- "CLUSTER_IDENTIFIER"
name: google-authentication-method
proxy: PROXY_URL
internalServer: https://kubernetes.default.svc
di mana
CLUSTER_IDENTIFIER
(wajib) menunjukkan detail keanggotaan cluster Anda.
Anda dapat mengambil detail keanggotaan cluster menggunakan perintah:
kubectl --kubeconfig CLUSTER_KUBECONFIG get memberships membership -o yaml
di mana
CLUSTER_KUBECONFIG
adalah jalur ke
file kubeconfig untuk cluster.
Dalam respons, lihat kolom spec.owner.id
untuk mengambil detail keanggotaan cluster.
Berikut adalah contoh respons yang menampilkan detail keanggotaan cluster:
id: //gkehub.googleapis.com/projects/123456789/locations/global/memberships/xy-ab12cd34ef
yang sesuai dengan format berikut:
//gkehub.googleapis.com/projects/PROJECT_NUMBER/locations/global/memberships/MEMBERSHIP
Memberikan peran IAM kepada pengguna dan grup pihak ketiga
Identitas pihak ketiga memerlukan Google Cloud peran tambahan berikut untuk berinteraksi dengan cluster yang terhubung melalui gateway:
roles/gkehub.gatewayAdmin
. Peran ini memungkinkan pengguna mengakses Connect Gateway API.- Jika pengguna hanya memerlukan akses baca saja ke cluster yang terhubung,
roles/gkehub.gatewayReader
dapat digunakan sebagai gantinya. - Jika pengguna memerlukan akses baca/tulis ke cluster yang terhubung,
roles/gkehub.gatewayEditor
dapat digunakan sebagai gantinya.
- Jika pengguna hanya memerlukan akses baca saja ke cluster yang terhubung,
roles/gkehub.viewer
. Peran ini memungkinkan pengguna melihat keanggotaan cluster terdaftar.
Berikut cara menambahkan peran yang diperlukan ke identitas individu dan grup yang dipetakan:
Identitas tunggal
Untuk memberikan peran yang diperlukan ke satu identitas
untuk project
PROJECT_ID
, jalankan perintah berikut:
gcloud projects add-iam-policy-binding PROJECT_ID \
--role=GATEWAY_ROLE \
--member="principal://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/subject/SUBJECT_VALUE"
gcloud projects add-iam-policy-binding PROJECT_ID \
--role=roles/gkehub.viewer \
--member="principal://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/subject/SUBJECT_VALUE"
di mana
PROJECT_ID
: adalah ID project.GATEWAY_ROLE
adalah salah satu dariroles/gkehub.gatewayAdmin
,roles/gkehub.gatewayReader
, ataugkehub.gatewayEditor
.WORKFORCE_POOL_ID
: adalah ID workforce identity pool.SUBJECT_VALUE
: adalah identitas pengguna.
Grup
Untuk memberikan peran yang diperlukan ke semua identitas dalam
grup tertentu untuk project PROJECT_ID
,
jalankan perintah berikut:
gcloud projects add-iam-policy-binding PROJECT_ID \
--role=GATEWAY_ROLE \
--member="principalSet://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/group/GROUP_ID"
gcloud projects add-iam-policy-binding PROJECT_ID \
--role=roles/gkehub.viewer \
--member="principalSet://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/group/GROUP_ID"
di mana
PROJECT_ID
: adalah ID project.GATEWAY_ROLE
adalah salah satu dariroles/gkehub.gatewayAdmin
,roles/gkehub.gatewayReader
, ataugkehub.gatewayEditor
.WORKFORCE_POOL_ID
: adalah ID workforce pool.GROUP_ID
: adalah grup dalam klaimgoogle.groups
yang dipetakan.
Lihat penyiapan untuk penyedia identitas Anda yang tercantum di Menyiapkan pemetaan pihak ketiga menggunakan Workforce Identity untuk penyesuaian lainnya, seperti menentukan atribut departemen, saat menerapkan kebijakan RBAC.
Anda dapat mengetahui lebih lanjut cara memberikan izin dan peran IAM di Memberikan, mengubah, dan mencabut akses ke resource.
Mengonfigurasi kebijakan role-based access control (RBAC)
Terakhir, server Kubernetes API setiap cluster harus dapat mengizinkan perintah kubectl
yang masuk melalui gateway dari pengguna dan grup pihak ketiga yang Anda tentukan. Untuk setiap cluster, Anda perlu menambahkan kebijakan izin RBAC yang menentukan izin yang dimiliki subjek pada cluster.
Subjek dalam kebijakan RBAC harus menggunakan format yang sama dengan binding IAM, dengan pengguna pihak ketiga dimulai dengan principal://iam.googleapis.com/
dan grup pihak ketiga dimulai dengan principalSet://iam.googleapis.com/
. Jika GKE Identity Service tidak dikonfigurasi untuk cluster, Anda akan memerlukan kebijakan peniruan identitas selain peran/clusterrole untuk pengguna pihak ketiga. Dalam hal ini, ikuti langkah-langkah penyiapan RBAC berikut, dengan menambahkan prinsipal pihak ketiga yang dimulai dengan principal://iam.googleapis.com/
sebagai pengguna.
Contoh berikut menunjukkan cara memberikan izin cluster-admin
kepada anggota grup pihak ketiga di cluster tempat Layanan Identitas GKE dikonfigurasi. Kemudian, Anda dapat menyimpan file kebijakan sebagai /tmp/admin-permission.yaml dan menerapkannya ke cluster yang terkait dengan konteks saat ini.
cat <<EOF > /tmp/admin-permission.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: gateway-cluster-admin-group
subjects:
- kind: Group
name: "principalSet://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/group/GROUP"
roleRef:
kind: ClusterRole
name: cluster-admin
apiGroup: rbac.authorization.k8s.io
EOF
# Apply permission policy to the cluster.
kubectl apply --kubeconfig=KUBECONFIG_PATH -f /tmp/admin-permission.yaml
Anda dapat mengetahui lebih lanjut cara menentukan izin RBAC di Menggunakan otorisasi RBAC.
Apa langkah selanjutnya?
- Pelajari cara menggunakan gateway Connect untuk terhubung ke cluster dari command line.
- Lihat contoh cara menggunakan gateway Connect sebagai bagian dari otomatisasi DevOps Anda dalam tutorial Mengintegrasikan dengan Cloud Build kami.