Menyiapkan gateway Connect dengan identitas pihak ketiga

Panduan ini ditujukan untuk administrator platform yang perlu menyiapkan gateway Connect dalam project yang berisi pengguna yang tidak memiliki identitas Google dan bukan pengguna Google Workspace. Dalam panduan ini, identitas ini disebut sebagai "identitas pihak ketiga". Sebelum membaca panduan ini, Anda harus memahami konsep dalam Ringkasan gateway Connect. Untuk memberikan otorisasi ke Akun Google masing-masing, 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
  • Google Distributed Cloud (khusus software) di VMware dan bare metal dari Anthos (GKE Enterprise) 1.13 dan yang lebih baru
  • GKE di AWS dan GKE di Azure dari Kubernetes versi 1.25 dan yang lebih baru.
  • Cluster terlampir dari Anthos (GKE Enterprise) 1.16 dan yang lebih baru.

Jika Anda perlu mengupgrade cluster on-premise untuk menggunakan fitur ini, lihat Mengupgrade cluster GKE Enterprise untuk VMWare dan Mengupgrade cluster GKE Enterprise di bare metal.

Jika Anda memiliki kasus penggunaan untuk lingkungan cluster GKE selain yang tercantum di atas, hubungi Cloud Customer Care 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, 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 standar untuk pengguna pihak ketiga yang mengautentikasi 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 akun 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:

  1. Berisi pengguna alice@example.com sebagai anggota.

  2. Disertakan dalam pemetaan untuk penyedia identitas dalam kumpulan tenaga kerja yang ada di organisasi Google Cloud Alice.

Diagram yang menunjukkan alur identitas pihak ketiga gateway

  1. Pengguna alice@example.com login ke gcloud dengan identitas pihak ketiganya, menggunakan login berbasis browser pihak ketiga. Untuk menggunakan cluster dari command line, pengguna mendapatkan kubeconfig gateway cluster seperti yang dijelaskan dalam Menggunakan gateway Connect.
  2. Pengguna mengirim permintaan dengan menjalankan perintah kubectl atau membuka halaman Workloads atau Object Browser Google Kubernetes Engine di konsol Google Cloud.
  3. Permintaan diterima oleh gateway Connect, yang menangani autentikasi pihak ketiga menggunakan Workforce Identity Federation.
  4. Gateway Connect melakukan pemeriksaan otorisasi dengan IAM.
  5. Layanan Connect meneruskan permintaan ke Agen Connect yang berjalan di cluster. Permintaan ini disertai dengan informasi kredensial pengguna untuk digunakan dalam autentikasi dan otorisasi di cluster.
  6. Agen Connect meneruskan permintaan ke server Kubernetes API.
  7. Server Kubernetes API meneruskan permintaan ke Identity Service GKE, yang memvalidasi permintaan.
  8. Layanan Identitas GKE menampilkan informasi pengguna dan grup pihak ketiga ke server Kubernetes API. Server API Kubernetes kemudian dapat menggunakan informasi ini untuk memberikan otorisasi pada permintaan berdasarkan kebijakan RBAC yang dikonfigurasi cluster.

Sebelum memulai

  • Pastikan Anda telah menginstal alat command line berikut:

    • Google Cloud CLI versi terbaru, 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 melakukan inisialisasi gcloud CLI untuk digunakan dengan project Anda.

  • Panduan ini mengasumsikan bahwa Anda memiliki roles/owner dalam project. Jika bukan pemilik project, Anda mungkin memerlukan izin tambahan untuk melakukan beberapa langkah penyiapan.

  • Untuk cluster di luar Google Cloud, Identity Service GKE perlu memanggil Google API dari cluster Anda untuk menyelesaikan autentikasi. Periksa apakah kebijakan jaringan Anda mewajibkan traffic keluar untuk melalui proxy.

Menyiapkan pemetaan atribut identitas pihak ketiga menggunakan Workforce Identity

Pastikan ada kumpulan tenaga kerja dan penyedia identitas yang disiapkan untuk organisasi Google Cloud Anda dengan mengikuti petunjuk yang sesuai dengan penyedia identitas Anda:

Mengaktifkan API

Untuk menambahkan gateway ke project Anda, aktifkan API gateway Connect dan API dependensi yang diperlukan. Jika pengguna hanya ingin mengautentikasi ke cluster menggunakan konsol Google Cloud, Anda tidak perlu mengaktifkan connectgateway.googleapis.com, tetapi harus mengaktifkan API lainnya.

gcloud services enable --project=PROJECT_ID  \
connectgateway.googleapis.com \
anthos.googleapis.com \
gkeconnect.googleapis.com \
gkehub.googleapis.com \
cloudresourcemanager.googleapis.com

Menyiapkan Identity Service GKE

Fitur dukungan identitas pihak ketiga gateway Connect menggunakan Identity Service GKE untuk mendapatkan informasi keanggotaan grup dari Google. Anda dapat mengetahui lebih lanjut Identity Service GKE di Memperkenalkan Identity Service GKE.

Jika menggunakan cluster GKE dengan gateway, Anda tidak perlu menyiapkan Identity Service GKE untuk menggunakan dukungan identitas pihak ketiga. Sebagai gantinya, ikuti petunjuk di Mengonfigurasi Google Grup untuk RBAC, dan lanjutkan ke Memberikan peran IAM untuk memberikan akses ke cluster melalui gateway.

Jika Anda menggunakan cluster terlampir GKE dengan gateway, Identity Service GKE tidak diperlukan untuk dukungan identitas pihak ketiga. Ikuti petunjuk untuk jenis cluster yang Anda pilih guna menyiapkan dukungan identitas pihak ketiga:

Memastikan Identity Service GKE terinstal

Identity Service GKE diinstal secara default di cluster GKE dari versi 1.7 dan seterusnya (meskipun dukungan identitas pihak ketiga memerlukan versi 1.13 atau yang lebih tinggi). Anda dapat mengonfirmasi bahwa aplikasi tersebut diinstal dengan benar di cluster 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 fleet Anda sudah dikonfigurasi untuk dukungan Google Grup, tidak ada langkah tambahan dan Anda dapat langsung melanjutkan ke Memberikan peran IAM kepada pengguna dan grup pihak ketiga.

Jika Anda menggunakan Google Distributed Cloud di VMware atau bare metal, cara Anda menyiapkan Identity Service GKE menentukan cara Anda harus mengonfigurasi fitur grup pihak ketiga.

Jika menggunakan Identity Service GKE untuk pertama kalinya, Anda dapat memilih antara mengonfigurasi dukungan grup pihak ketiga menggunakan Fleet API (direkomendasikan) atau menggunakan kubectl.

Jika Anda bukan pengguna pertama Identity Service GKE, perhatikan salah satu hal berikut:

  • Jika Anda telah menyiapkan Identity Service GKE untuk penyedia identitas lain di tingkat fleet, fitur grup pihak ketiga akan diaktifkan secara default. Lihat bagian Flot di bawah untuk mengetahui detail selengkapnya dan penyiapan tambahan yang mungkin Anda perlukan.
  • Jika Anda telah menyiapkan Identity Service 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 Google Cloud atau command line untuk mengonfigurasi akses ke grup pihak ketiga menggunakan Fleet Feature API.

Konsol

Jika sebelumnya Anda belum menyiapkan Identity Service GKE untuk fleet, ikuti petunjuk di Mengonfigurasi cluster untuk Identity Service GKE.

Memilih cluster dan memperbarui konfigurasi

  1. Di konsol Google Cloud, buka halaman Feature Manager.

    Buka Pengelola Fitur

  2. Klik Details di panel Identity Service. Detail cluster project Anda akan ditampilkan.

  3. Klik Perbarui layanan identitas untuk membuka panel penyiapan.

  4. Pilih cluster yang ingin Anda konfigurasi. Anda dapat memilih setiap cluster, atau menentukan bahwa Anda ingin semua cluster dikonfigurasi dengan konfigurasi identitas yang sama.

  5. Di bagian Konfigurasi Penyedia Identitas, Anda dapat memilih untuk mempertahankan, menambahkan, memperbarui, atau menghapus penyedia identitas.

  6. Klik Lanjutkan untuk melanjutkan ke langkah konfigurasi berikutnya. Jika Anda telah memilih minimal satu cluster yang memenuhi syarat untuk penyiapan ini, bagian Autentikasi Google akan ditampilkan.

  7. Pilih Enable untuk mengaktifkan autentikasi Google untuk cluster yang dipilih. Jika Anda perlu mengakses penyedia identitas Google melalui proxy, masukkan detail Proxy.

  8. Klik Update Configuration. Tindakan ini akan menerapkan konfigurasi identitas di cluster yang Anda pilih.

gcloud

Jika sebelumnya Anda belum menyiapkan Identity Service GKE untuk fleet, ikuti petunjuk di Mengonfigurasi cluster untuk Identity Service GKE. 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 menetapkannya jika, misalnya, cluster Anda berada di jaringan pribadi dan perlu terhubung ke penyedia identitas publik. Anda harus menambahkan konfigurasi ini meskipun telah mengonfigurasi Identity Service GKE untuk penyedia lain.

Untuk mengonfigurasi proxy, berikut cara memperbarui bagian authentication dari file konfigurasi yang ada, auth-config.yaml.

  spec:
    authentication:
    - name: authentication-method
      google:
        disable: false
      proxy: PROXY_URL

di mana

  • disable (opsional) menunjukkan apakah Anda ingin ikut serta atau tidak dalam fitur grup pihak ketiga untuk cluster. Nilai ini ditetapkan ke false secara default. Jika tidak ingin menggunakan fitur ini, Anda dapat menyetelnya ke true.

  • 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 Identity Service GKE. Setiap perubahan lokal yang dilakukan pada konfigurasi klien Identity Service GKE akan disambungkan kembali oleh pengontrol ke konfigurasi yang ditentukan dalam penyiapan ini.

Kubectl

Untuk mengonfigurasi cluster agar menggunakan Identity Service GKE dengan fitur grup pihak ketiga, Anda perlu memperbarui ClientConfig Identity Service GKE cluster. Ini adalah jenis resource kustom (CRD) Kubernetes yang digunakan untuk konfigurasi cluster. Setiap cluster GKE Enterprise memiliki resource ClientConfig bernama default di namespace kube-public yang Anda perbarui dengan detail konfigurasi.

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 adalah 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 (diperlukan) menunjukkan detail langganan cluster Anda. Anda dapat mengambil detail langganan 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 langganan 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 peran Google Cloud 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.
  • roles/gkehub.viewer. Peran ini memungkinkan pengguna melihat keanggotaan cluster terdaftar.

Berikut ini cara menambahkan peran yang diperlukan ke setiap identitas 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 dari roles/gkehub.gatewayAdmin, roles/gkehub.gatewayReader, atau gkehub.gatewayEditor.
  • WORKFORCE_POOL_ID: adalah ID kumpulan identitas tenaga kerja.
  • 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 dari roles/gkehub.gatewayAdmin, roles/gkehub.gatewayReader, atau gkehub.gatewayEditor.
  • WORKFORCE_POOL_ID: adalah ID kumpulan identitas tenaga kerja.
  • GROUP_ID: adalah grup dalam klaim google.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 kontrol akses berbasis peran (RBAC)

Terakhir, server Kubernetes API setiap cluster harus dapat memberikan otorisasi pada 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 di cluster.

Subjek dalam kebijakan RBAC harus menggunakan format yang sama dengan binding IAM, dengan pengguna pihak ketiga yang diawali dengan principal://iam.googleapis.com/ dan grup pihak ketiga yang diawali dengan principalSet://iam.googleapis.com/. Jika Identity Service GKE tidak dikonfigurasi untuk cluster, Anda memerlukan kebijakan peniruan identitas selain peran/clusterrole untuk pengguna pihak ketiga. Jika demikian, ikuti langkah-langkah penyiapan RBAC berikut, dengan menambahkan akun utama 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?