Menyiapkan gateway Connect dengan Google Grup

Panduan ini ditujukan bagi administrator platform yang perlu menyiapkan gateway Connect untuk digunakan oleh akun pengguna project mereka, menggunakan Google Grup untuk otorisasi. Sebelum membaca panduan ini, Anda harus sudah memahami konsep dalam ringkasan kami. Untuk memberikan otorisasi ke akun perorangan, lihat penyiapan default.

Dengan penyiapan ini, pengguna dapat login ke cluster fleet yang telah dikonfigurasi menggunakan Google Cloud CLI, gateway Connect, dan Konsol Google Cloud.

Fitur ini menggunakan Google Grup yang dikaitkan dengan Google Workspace atau edisi Cloud Identity apa pun.

Jenis cluster yang didukung

Jika menggunakan cluster GKE dengan Connect Gateway, Anda tidak perlu mengikuti seluruh penyiapan ini dengan GKE Identity Service untuk menggunakan Google Grup untuk otorisasi. Sebagai gantinya, ikuti petunjuk dalam Mengonfigurasi Google Grup untuk RBAC, yang juga memungkinkan pengguna login ke cluster GKE dari Konsol Google Cloud menggunakan Google Grup untuk kontrol akses. Setelah melakukannya, ikuti petunjuk di bawah di bagian Memberikan peran IAM ke Google Grup untuk mengizinkan anggota grup mengakses cluster melalui gateway Connect.

Anda dapat menyiapkan kontrol akses dengan Google Grup melalui gateway Connect untuk cluster GKE terdaftar, GKE di VMware serta Google Distributed Cloud Virtual for Bare Metal dari GKE Enterprise 1.13 dan seterusnya, serta untuk GKE di AWS dan GKE di Azure dari Kubernetes versi 1.25 dan seterusnya. Jika Anda perlu mengupgrade cluster lokal agar dapat menggunakan fitur ini, lihat artikel Mengupgrade cluster GKE Enterprise untuk VMWare dan Mengupgrade cluster GKE Enterprise secara on bare metal.

Untuk menggunakan fitur ini dengan cluster terpasang atau lingkungan cluster GKE selain yang tercantum di atas, hubungi Cloud Customer Care atau tim gateway Connect.

Cara kerjanya

Seperti yang dijelaskan dalam ringkasan, sering kali bermanfaat untuk memberi pengguna akses ke cluster berdasarkan keanggotaan mereka di Google Grup, yaitu grup yang dibuat di Google Workspace. Memberikan otorisasi berdasarkan keanggotaan grup berarti Anda tidak perlu menyiapkan otorisasi terpisah untuk setiap akun, sehingga kebijakan menjadi lebih sederhana untuk dikelola dan lebih mudah diaudit. Jadi, misalnya, Anda dapat dengan mudah membagikan akses cluster ke tim, sehingga Anda tidak perlu menambahkan/menghapus pengguna individu dari cluster secara manual saat mereka bergabung atau keluar dari tim. Dengan beberapa penyiapan tambahan menggunakan GKE Identity Service, Anda dapat mengonfigurasi gateway Connect untuk mendapatkan informasi keanggotaan Google Grup bagi setiap pengguna yang login ke cluster. Kemudian, Anda dapat menggunakan informasi grup ini dalam kebijakan kontrol akses.

Berikut ini alur standar bagi pengguna yang mengautentikasi dan menjalankan perintah terhadap cluster yang mengaktifkan layanan ini. Agar alur ini berhasil, kebijakan RBAC harus ada di cluster untuk grup yang:

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

  2. Adalah grup bertingkat gke-security-groups@example.com.

Diagram yang menunjukkan alur Google Grup gateway

  1. Pengguna alice@example.com login menggunakan identitas Google-nya dan, jika mereka berencana menggunakan cluster dari command line, akan mendapatkan gateway cluster kubeconfig 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 layanan Connect, yang melakukan pemeriksaan otorisasi dengan IAM.
  4. Layanan Connect meneruskan permintaan ke Agen Connect yang berjalan di cluster. Permintaan tersebut disertai dengan informasi kredensial pengguna untuk digunakan dalam autentikasi dan otorisasi di cluster.
  5. Agen Connect meneruskan permintaan ke server Kubernetes API.
  6. Server Kubernetes API meneruskan permintaan ke GKE Identity Service, yang memvalidasi permintaan tersebut.
  7. GKE Identity Service menampilkan informasi pengguna dan grup ke server Kubernetes API. Server Kubernetes API kemudian dapat menggunakan informasi ini untuk mengizinkan permintaan berdasarkan kebijakan RBAC yang dikonfigurasi di 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 diinstal untuk Anda.

  • Pastikan Anda telah melakukan inisialisasi gcloud CLI untuk digunakan dengan project.

  • 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, GKE Identity Service perlu memanggil Google Identity API dari cluster Anda. Periksa apakah kebijakan jaringan Anda mewajibkan traffic keluar untuk melewati proxy.

Menyiapkan pengguna dan grup

Pastikan grup yang ingin Anda gunakan dengan fitur ini disiapkan sebagai berikut:

  1. Pastikan ada grup di Google Workspace organisasi Anda dengan format gke-security-groups@YOUR-DOMAIN. Jika Anda tidak memiliki grup tersebut, ikuti petunjuk di Membuat grup di organisasi Anda untuk membuat grup menggunakan Konsol Admin Google Workspace.
  2. Ikuti petunjuk di Menambahkan grup ke grup lain untuk menambahkan grup yang ingin Anda gunakan untuk kontrol akses sebagai grup bertingkat gke-security-groups. Jangan tambahkan pengguna satu per satu sebagai anggota gke-security-groups.

Akun pengguna yang ingin Anda gunakan dengan fitur ini harus menggunakan nama domain yang sama dengan nama domain grup mereka.

Mengaktifkan API

Untuk menambahkan gateway ke project Anda, aktifkan Connect gateway API dan API dependensi yang diperlukan. Jika pengguna hanya ingin melakukan autentikasi ke cluster menggunakan Konsol Google Cloud, Anda tidak perlu mengaktifkan connectgateway.googleapis.com, tetapi perlu mengaktifkan API yang tersisa.

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

Menyiapkan GKE Identity Service

Fitur Google Grup gateway Connect menggunakan GKE Identity Service untuk mendapatkan informasi keanggotaan grup dari Google. Anda dapat mengetahui informasi selengkapnya tentang GKE Identity Service dalam Memperkenalkan GKE Identity Service.

Jika menggunakan cluster GKE dengan gateway, Anda tidak perlu menyiapkan GKE Identity Service untuk menggunakan kontrol akses Google Grup. Sebagai gantinya, ikuti petunjuk di Mengonfigurasi Google Grup untuk RBAC, lalu lanjutkan ke bagian Memberikan peran IAM ke Google Grup untuk mengizinkan anggota grup mengakses cluster melalui gateway Connect.

Pastikan GKE Identity Service terinstal

GKE Identity Service diinstal secara default di cluster GKE mulai versi 1.7 dan seterusnya (meskipun fitur Google Grup memerlukan versi 1.13 atau yang lebih tinggi). Anda dapat memastikan bahwa cluster telah diinstal dengan benar pada cluster dengan menjalankan perintah berikut:

kubectl --kubeconfig USER_CLUSTER_KUBECONFIG get all -n anthos-identity-service

dengan

USER_CLUSTER_KUBECONFIG adalah jalur ke file kubeconfig untuk cluster.

Mengonfigurasi dukungan Google Grup

Jika menggunakan GKE di AWS atau GKE di Azure, cluster Anda akan otomatis dikonfigurasi untuk mendukung Google Grup, dan Anda dapat langsung ke bagian Memberikan peran IAM ke Google Grup.

Jika Anda menggunakan GKE di Bare Metal atau GKE di VMware, cara menyiapkan GKE Identity Service akan menentukan cara Anda mengonfigurasi fitur Google Grup.

Jika menggunakan GKE Identity Service untuk pertama kalinya, Anda dapat memilih antara mengonfigurasi Google Grup di level Fleet (direkomendasikan) atau penyiapan Per-cluster.

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

  • Jika Anda telah menyiapkan GKE Identity Service untuk penyedia identitas lain di level fleet, fitur Google Grup akan diaktifkan untuk Anda secara default. Lihat bagian Armada di bawah untuk detail selengkapnya dan penyiapan tambahan yang mungkin Anda perlukan.
  • Jika Anda telah menyiapkan GKE Identity Service untuk penyedia identitas lain per cluster, lihat bagian Per cluster di bawah untuk mengetahui petunjuk cara mengupdate konfigurasi Anda untuk fitur Google Grup.

Fleet

Anda dapat menggunakan konsol Google Cloud atau command line untuk mengonfigurasi akses ke grup Google di tingkat fleet.

Jika Anda telah mengonfigurasi GKE Identity Service di level fleet dengan penyedia identitas lain (seperti Microsoft AD FS atau Okta), fitur Google Grup gateway Connect sudah diaktifkan secara default di cluster yang dikonfigurasi, asalkan penyedia identitas Google dapat dijangkau tanpa perlu menggunakan proxy.

Konsol

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

Memilih cluster dan memperbarui konfigurasi

  1. Di Konsol Google Cloud, buka halaman Features GKE Enterprise.

    Buka GKE Enterprise Features

  2. Di tabel Features, klik Details di baris Identity Service. Detail cluster project Anda akan ditampilkan.

  3. Klik Update identity service untuk membuka panel penyiapan.

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

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

  6. Klik Continue 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 guna mengaktifkan autentikasi Google untuk cluster yang dipilih. Jika Anda perlu mengakses Penyedia Identitas Google melalui proxy, masukkan detail Proxy.

  8. Klik Update Configuration. Ini akan menerapkan konfigurasi identitas pada cluster yang Anda pilih.

gcloud

Jika Anda belum pernah menyiapkan GKE Identity Service untuk fleet, ikuti petunjuk dalam Mengonfigurasi cluster untuk GKE Identity Service. Hanya tentukan konfigurasi berikut di file auth-config.yaml Anda:

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

Mengonfigurasi akses Google Grup menggunakan proxy

Jika Anda perlu mengakses penyedia identitas Google melalui proxy, gunakan kolom proxy di file auth-config.yaml Anda. Anda mungkin perlu menyetelnya jika misalnya cluster berada dalam 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: google-authentication-method
      google:
        disable: false
      proxy: PROXY_URL

dengan

  • disable (opsional) menunjukkan apakah Anda ingin mengaktifkan atau tidak menggunakan fitur Google Grup untuk cluster. Nilai ini ditetapkan ke false secara default. Jika memilih untuk tidak menggunakan fitur ini, Anda dapat menyetelnya ke true.

  • PROXY_URL (opsional) adalah alamat server proxy untuk dihubungkan 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

dengan

CLUSTER_NAME adalah nama keanggotaan unik cluster Anda dalam fleet.

Setelah diterapkan, konfigurasi ini akan dikelola oleh pengontrol GKE Identity Service. Setiap perubahan lokal yang dibuat pada konfigurasi klien GKE Identity Service akan direkonsiliasi kembali oleh pengontrol ke konfigurasi yang ditentukan dalam penyiapan ini.

Per cluster

Untuk mengonfigurasi cluster agar dapat menggunakan GKE Identity Service dengan fitur Google Grup, Anda perlu mengupdate ClientConfig Layanan Identitas 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 Anda.

Untuk mengedit konfigurasi, gunakan perintah berikut.

kubectl --kubeconfig USER_CLUSTER_KUBECONFIG -n kube-public edit clientconfig default

dengan USER_CLUSTER_KUBECONFIG adalah jalur ke file kubeconfig cluster Anda.

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 mengupdate ClientConfig dengan metode autentikasi baru yang memiliki konfigurasi jenis google untuk mengaktifkan fitur Google Grup. Jika kolom internalServer kosong, pastikan kolom tersebut ditetapkan 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

dengan

CLUSTER_IDENTIFIER (wajib) menunjukkan detail keanggotaan cluster Anda. Anda dapat mengambil detail keanggotaan cluster menggunakan perintah:

kubectl --kubeconfig USER_CLUSTER_KUBECONFIG get memberships membership -o yaml

dengan

USER_CLUSTER_KUBECONFIG adalah jalur ke file kubeconfig untuk cluster. Sebagai respons, lihat kolom spec.owner.id untuk mendapatkan detail keanggotaan cluster.

Berikut adalah contoh respons yang menunjukkan 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 ke Google Grup

Grup memerlukan peran Google Cloud tambahan berikut untuk berinteraksi dengan cluster yang terhubung melalui gateway:

  • roles/gkehub.gatewayAdmin. Peran ini memungkinkan anggota grup mengakses Connect gateway API.
    • Jika anggota grup hanya memerlukan akses hanya baca ke cluster yang terhubung, roles/gkehub.gatewayReader dapat digunakan.
    • Jika anggota grup memerlukan akses baca/tulis ke cluster yang terhubung, roles/gkehub.gatewayEditor dapat digunakan.
  • roles/gkehub.viewer. Peran ini mengizinkan anggota grup untuk melihat keanggotaan cluster terdaftar.

Anda memberikan peran ini menggunakan perintah gcloud projects add-iam-policy-binding, sebagai berikut:

gcloud projects add-iam-policy-binding --member=group:GROUP_NAME@DOMAIN --role=GATEWAY_ROLE PROJECT_ID
gcloud projects add-iam-policy-binding --member=group:GROUP_NAME@DOMAIN --role=roles/gkehub.viewer PROJECT_ID

dengan

  • GROUP_NAME adalah Google Grup yang ingin Anda berikan peran
  • DOMAIN adalah domain Google Workspace Anda
  • GROUP_NAME@DOMAIN adalah grup bertingkat di bawah gke-security-groups@DOMAIN
  • GATEWAY_ROLE adalah salah satu dari roles/gkehub.gatewayAdmin, roles/gkehub.gatewayReader, atau gkehub.gatewayEditor.
  • PROJECT_ID adalah project Anda

Anda dapat mengetahui lebih lanjut cara memberikan izin dan peran IAM di artikel Memberikan, mengubah, dan mencabut akses ke resource.

Mengonfigurasi kebijakan kontrol akses berbasis peran (RBAC)

Terakhir, setiap server Kubernetes API cluster harus dapat mengizinkan perintah kubectl yang masuk melalui gateway dari grup yang Anda tentukan. Untuk setiap cluster, Anda perlu menambahkan kebijakan izin RBAC yang menentukan izin yang dimiliki grup di cluster tersebut.

Pada contoh berikut, Anda akan melihat cara memberikan izin cluster-admin grup cluster-admin-team pada cluster, menyimpan file kebijakan sebagai /tmp/admin-permission.yaml, dan menerapkannya ke cluster yang terkait dengan konteks saat ini. Pastikan Anda juga menyertakan grup cluster-admin-team di bawah grup gke-security-groups.

cat <<EOF > /tmp/admin-permission.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: gateway-cluster-admin-group
subjects:
- kind: Group
  name: cluster-admin-team@example.com
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 dalam artikel Menggunakan otorisasi RBAC.

Apa langkah selanjutnya?