Panduan ini ditujukan untuk administrator platform yang perlu menyiapkan gateway Connect dalam project yang berisi pengguna yang tidak memiliki Google Identity dan bukan bagian dari Google Workspace. Dalam panduan ini, identitas ini disebut sebagai "identitas pihak ketiga". Sebelum membaca panduan ini, Anda harus memahami konsep dalam ringkasan gateway koneksi. Untuk memberikan otorisasi ke masing-masing Akun Google, lihat Menyiapkan gateway koneksi. Untuk dukungan Google Grup, lihat Menyiapkan gateway penghubung dengan Google Grup.
Penyiapan dalam panduan ini memungkinkan pengguna login ke cluster fleet menggunakan Google Cloud CLI, gateway koneksi, dan konsol Google Cloud .
Jenis cluster yang didukung
Anda dapat menyiapkan kontrol akses dengan identitas pihak ketiga melalui gateway koneksi untuk jenis cluster berikut:
- GKE di Google Cloud: semua versi yang tersedia. Untuk menyiapkan gateway koneksi, konfigurasi Google Grup untuk RBAC, lalu berikan peran IAM ke Google Grup.
- Google Distributed Cloud (khusus software) di VMware dan bare metal: semua versi yang tersedia.
- Google Distributed Cloud terhubung: semua versi yang tersedia.
- Cluster terlampir GKE: versi 1.28.0-gke.2 dan yang lebih baru.
GKE di AWS dan GKE di Azure: semua versi yang tersedia.
Untuk menggunakan fitur ini dengan lingkungan yang tidak ada dalam daftar sebelumnya, hubungi Cloud Customer Care atau tim gateway penghubung.
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, seperti Okta atau Azure Active Directory, untuk mendapatkan akses ke cluster mereka melalui gateway koneksi. 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_IDadalah nama workforce pool yang berisi penyedia identitas pihak ketiga yang relevan.SUBJECT_VALUEadalah pemetaan identitas pihak ketiga ke subjek Google.
Untuk grup pihak ketiga, principal 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 ke dan menjalankan perintah terhadap cluster dengan layanan ini diaktifkan. Agar alur ini berhasil, kebijakan role-based access control (RBAC) perlu diterapkan pada cluster untuk pengguna atau grup.
Untuk pengguna perorangan, 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.comsebagai anggota.Disertakan dalam pemetaan untuk penyedia identitas dalam workforce pool yang berada di organisasi Google Cloud Alice.
- Pengguna
alice@example.comlogin ke gcloud CLI dengan identitas pihak ketiganya, menggunakan login berbasis browser pihak ketiga. Untuk menggunakan cluster dari command line, pengguna mendapatkankubeconfiggateway cluster seperti yang dijelaskan dalam Menggunakan gateway Connect. - Pengguna mengirim permintaan dengan menjalankan perintah
kubectlatau membuka halaman Workloads atau Browser Objek 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 Connect Agent yang berjalan di cluster. Permintaan disertai dengan informasi kredensial pengguna untuk digunakan dalam autentikasi dan otorisasi di cluster.
- Agen Connect meneruskan permintaan ke server Kubernetes API.
- Server Kubernetes API meneruskan permintaan ke komponen layanan identitas di cluster, yang memvalidasi permintaan.
- Komponen layanan identitas 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
- Login ke akun Google Cloud Anda. Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
-
Instal Google Cloud CLI.
-
Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.
-
Untuk melakukan inisialisasi gcloud CLI, jalankan perintah berikut:
gcloud init -
Pastikan Anda memiliki izin yang diperlukan untuk menyelesaikan panduan ini.
Aktifkan API Connect Gateway, GKE Connect, GKE Hub, Anthos Identity Service, dan Cloud Resource Manager, jika ada yang belum diaktifkan:
Peran yang diperlukan untuk mengaktifkan API
Untuk mengaktifkan API, Anda memerlukan izin
serviceusage.services.enable. Jika Anda membuat project, kemungkinan Anda sudah memiliki izin ini melalui peran Pemilik (roles/owner). Jika tidak, Anda bisa mendapatkan izin ini melalui peran Service Usage Admin (roles/serviceusage.serviceUsageAdmin). Pelajari cara memberikan peran.gcloud services enable connectgateway.googleapis.com
gkeconnect.googleapis.com gkehub.googleapis.com anthosidentityservice.googleapis.com cloudresourcemanager.googleapis.com -
Instal Google Cloud CLI.
-
Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.
-
Untuk melakukan inisialisasi gcloud CLI, jalankan perintah berikut:
gcloud init -
Pastikan Anda memiliki izin yang diperlukan untuk menyelesaikan panduan ini.
Aktifkan API Connect Gateway, GKE Connect, GKE Hub, Anthos Identity Service, dan Cloud Resource Manager, jika ada yang belum diaktifkan:
Peran yang diperlukan untuk mengaktifkan API
Untuk mengaktifkan API, Anda memerlukan izin
serviceusage.services.enable. Jika Anda membuat project, kemungkinan Anda sudah memiliki izin ini melalui peran Pemilik (roles/owner). Jika tidak, Anda bisa mendapatkan izin ini melalui peran Service Usage Admin (roles/serviceusage.serviceUsageAdmin). Pelajari cara memberikan peran.gcloud services enable connectgateway.googleapis.com
gkeconnect.googleapis.com gkehub.googleapis.com anthosidentityservice.googleapis.com cloudresourcemanager.googleapis.com - Untuk cluster di luar Google Cloud, komponen autentikasi di cluster Anda harus memanggil Cloud Identity API. Periksa apakah Anda memiliki kebijakan jaringan yang mewajibkan traffic keluar dari cluster Anda melewati proxy.
Peran yang diperlukan
Untuk mendapatkan izin yang
diperlukan untuk mengonfigurasi gateway Connect dan cluster Anda,
minta administrator untuk memberi Anda
peran IAM Editor (roles/editor) di project.
Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.
Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.
Menyiapkan pemetaan atribut identitas pihak ketiga menggunakan Workforce Identity Federation
Pastikan ada penyedia identitas dan kumpulan tenaga kerja yang disiapkan untuk organisasi Google Cloud Anda dengan mengikuti petunjuk yang sesuai dengan penyedia identitas Anda:
Mengonfigurasi dukungan untuk grup
Gateway Connect menggunakan komponen autentikasi di cluster Anda untuk mengambil informasi keanggotaan grup. Untuk mengaktifkan komponen yang diperlukan, lihat salah satu dokumen berikut, bergantung pada jenis cluster Anda:
- GKE di Google Cloud: Konfigurasi Google Grup untuk RBAC, lalu lanjutkan ke bagian Memberi peran IAM ke grup.
- Cluster terpasang GKE:
Google Distributed Cloud: aktifkan dukungan untuk grup dengan memperbarui resource kustom ClientConfig di cluster Anda. Distributed Cloud otomatis membuat ClientConfig bernama
defaultdi namespacekube-publicdi setiap cluster. Untuk memverifikasi bahwa resource kustom ini ada, jalankan perintah berikut:kubectl --kubeconfig CLUSTER_KUBECONFIG get ClientConfig default -n kube-publicGanti
CLUSTER_KUBECONFIGdengan jalur ke kubeconfig cluster.
Jika cluster atau fleet Anda sudah dikonfigurasi untuk dukungan Google Grup, tidak ada langkah tambahan dan Anda dapat langsung beralih ke Memberikan peran IAM kepada pengguna dan grup pihak ketiga.
Bagian berikut menunjukkan cara memperbarui resource kustom ClientConfig untuk mengaktifkan dukungan grup. Bagian ini hanya berlaku untuk cluster Google Distributed Cloud. Untuk jenis cluster lainnya, seperti GKE di Google Cloud; GKE di AWS; dan GKE di Azure, lanjutkan ke bagian Memberikan peran IAM ke grup.
Untuk Distributed Cloud, Anda dapat mengonfigurasi dukungan untuk grup bagi cluster individual atau untuk fleet. Jenis cluster yang Anda gunakan menentukan cara Anda mengonfigurasi dukungan grup, sebagai berikut:
- Distributed Cloud terhubung: hanya cluster individual. Konfigurasi tingkat fleet tidak didukung.
- Google Distributed Cloud (khusus software) di VMware dan bare metal: cluster atau fleet individual.
Mengonfigurasi dukungan grup menggunakan GKE Fleet API
Untuk Google Distributed Cloud (khusus software) di VMware dan bare metal, Anda dapat mengonfigurasi dukungan grup di tingkat fleet. Jika sebelumnya Anda mengonfigurasi autentikasi tingkat armada, seperti untuk penyedia identitas lain, autentikasi grup sudah diaktifkan. Namun, jika kebijakan jaringan Anda mengharuskan traffic keluar melewati proxy, Anda harus memperbarui konfigurasi yang ada dengan informasi tentang proxy tersebut.
Untuk mengonfigurasi dukungan grup di tingkat fleet, pilih salah satu opsi berikut:
Konsol
Di konsol Google Cloud , buka halaman GKE Identity Service.
Klik Aktifkan Layanan Identitas.
Pilih cluster Google Distributed Cloud (khusus software) di VMware dan bare metal yang ingin Anda konfigurasi.
Klik Update configuration. Panel Edit Identity Service Clusters Config akan terbuka.
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 Enable guna mengaktifkan autentikasi Google untuk 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
- Aktifkan fitur layanan identitas tingkat fleet dan konfigurasi cluster, seperti yang dijelaskan dalam Menyiapkan pengelolaan autentikasi tingkat fleet.
Di file
auth-config.yamlyang berisi spesifikasi ClientConfig, tambahkan kolom berikut:spec: authentication: - name: google-authentication-method google: disable: falseNilai
falsedi kolomgoogle.disablemengaktifkan dukungan grup. Untuk menonaktifkan dukungan grup, ubah nilai ini menjaditrue.Opsional: Jika Anda perlu mengakses penyedia identitas Google melalui proxy, tambahkan kolom
proxyke konfigurasi sebelumnya:spec: authentication: - name: google-authentication-method google: disable: false proxy: PROXY_URLGanti
PROXY_URLdengan alamat server proxy untuk terhubung ke Google Identity. Contoh:http://user:password@10.10.10.10:8888Terapkan konfigurasi ke cluster di fleet Anda:
gcloud container fleet identity-service apply \ --membership=CLUSTER_NAME \ --config=/path/to/auth-config.yaml
Ganti
CLUSTER_NAMEdengan nama keanggotaan unik cluster Anda dalam fleet.
Setelah Anda menyiapkan dukungan grup di tingkat fleet, pengontrol fleet akan mengelola konfigurasi. Konfigurasi tingkat fleet akan menimpa perubahan lokal apa pun yang Anda buat pada konfigurasi di cluster tertentu.
Mengonfigurasi dukungan grup untuk setiap cluster
Untuk semua cluster Distributed Cloud, termasuk Distributed Cloud yang terhubung, aktifkan dukungan grup dengan memperbarui default ClientConfig di setiap cluster:
Dapatkan detail keanggotaan cluster Anda:
kubectl --kubeconfig USER_CLUSTER_KUBECONFIG get memberships membership -o yamlGanti
USER_CLUSTER_KUBECONFIGdengan 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.Dalam respons, lihat kolom
spec.owner.iduntuk mengambil detail keanggotaan cluster. ID keanggotaan memiliki format//gkehub.googleapis.com/projects/PROJECT_NUMBER/locations/global/memberships/MEMBERSHIP.Outputnya mirip dengan hal berikut ini:
id: //gkehub.googleapis.com/projects/123456789/locations/global/memberships/xy-ab12cd34efBuka
defaultClientConfig di cluster Anda untuk mengedit:kubectl --kubeconfig USER_CLUSTER_KUBECONFIG -n kube-public edit clientconfig defaultUntuk mengaktifkan dukungan grup, tambahkan kolom
googleke kolomspec.authentication:spec: internalServer: https://kubernetes.default.svc authentication: - google: audiences: - "CLUSTER_IDENTIFIER" name: google-authentication-methodGanti
CLUSTER_IDENTIFIERdengan detail keanggotaan cluster Anda.Pastikan kolom
internalServermemiliki nilaihttps://kubernetes.default.svc.Opsional: Jika Anda perlu mengakses penyedia identitas Google melalui proxy, tambahkan kolom
proxyke konfigurasi sebelumnya:spec: internalServer: https://kubernetes.default.svc authentication: - google: audiences: - "CLUSTER_IDENTIFIER" name: google-authentication-method proxy: PROXY_URLGanti
PROXY_URLdengan alamat server proxy untuk terhubung ke Google Identity. Contoh:http://user:password@10.10.10.10:8888
Memberikan peran IAM kepada pengguna dan grup pihak ketiga
Identitas pihak ketiga memerlukan peran Google Cloud tambahan berikut untuk berinteraksi dengan cluster yang terhubung melalui gateway:
roles/gkehub.gatewayAdmin. Peran ini memungkinkan pengguna mengakses API gateway koneksi.- Jika pengguna hanya memerlukan akses hanya baca ke cluster yang terhubung,
roles/gkehub.gatewayReaderdapat digunakan. - Jika pengguna memerlukan akses baca/tulis ke cluster yang terhubung,
roles/gkehub.gatewayEditordapat digunakan.
- Jika pengguna hanya memerlukan akses hanya baca ke cluster yang terhubung,
roles/gkehub.viewer. Peran ini memungkinkan pengguna melihat keanggotaan cluster yang 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_ROLEadalah 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_ROLEadalah salah satu dariroles/gkehub.gatewayAdmin,roles/gkehub.gatewayReader, ataugkehub.gatewayEditor.WORKFORCE_POOL_ID: adalah ID workforce pool.GROUP_ID: adalah grup dalam klaimgoogle.groupsyang dipetakan.
Lihat penyiapan untuk penyedia identitas Anda yang tercantum di Menyiapkan pemetaan pihak ketiga menggunakan Workforce Identity untuk penyesuaian lebih lanjut, 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, setiap server Kubernetes API 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 cluster tidak memiliki autentikasi dari identitas pihak ketiga eksternal yang dikonfigurasi, Anda akan memerlukan kebijakan peniruan identitas selain peran/clusterrole untuk pengguna pihak ketiga. Dalam hal ini, ikuti langkah-langkah penyiapan RBAC ini, 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 pada cluster tempat autentikasi dari identitas pihak ketiga eksternal 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 Using RBAC authorization.
Apa langkah selanjutnya?
- Pelajari cara menggunakan gateway Connect untuk terhubung ke cluster dari command line.
- Lihat contoh cara menggunakan Connect gateway sebagai bagian dari otomatisasi DevOps Anda dalam tutorial Mengintegrasikan dengan Cloud Build.