Menyiapkan gateway Connect dengan Google Grup

Panduan ini ditujukan bagi administrator platform yang perlu menyiapkan gateway koneksi untuk digunakan oleh akun pengguna project mereka, menggunakan Grup Google untuk otorisasi. Sebelum membaca halaman ini, pastikan Anda memahami konsep dalam ringkasan kami. Untuk mengizinkan akun perorangan, lihat penyiapan default.

Penyiapan ini memungkinkan pengguna login ke cluster fleet yang dikonfigurasi menggunakan Google Cloud CLI, gateway koneksi, dan konsol Google Cloud .

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

Jenis cluster yang didukung

Anda dapat menyiapkan kontrol akses dengan Grup Google melalui gateway connect untuk jenis cluster berikut:

Untuk menggunakan fitur ini dengan lingkungan yang tidak ada dalam daftar sebelumnya, hubungi Cloud Customer Care atau tim gateway koneksi.

Cara kerjanya

Seperti yang dijelaskan dalam ringkasan, sering kali berguna untuk dapat memberi pengguna akses ke cluster berdasarkan keanggotaan mereka di Grup Google, yaitu grup yang dibuat di Google Workspace. Dengan memberikan otorisasi berdasarkan keanggotaan grup, Anda tidak perlu menyiapkan otorisasi terpisah untuk setiap akun, sehingga kebijakan lebih mudah dikelola dan diaudit. Jadi, misalnya, Anda dapat dengan mudah membagikan akses cluster kepada tim, sehingga tidak perlu lagi menambahkan/menghapus pengguna satu per satu dari cluster saat mereka bergabung atau keluar dari tim. Anda dapat mengonfigurasi gateway koneksi untuk mendapatkan informasi keanggotaan Grup Google bagi setiap pengguna yang login ke cluster. Selanjutnya, Anda dapat menggunakan informasi ini dalam kebijakan kontrol akses Anda.

Berikut menunjukkan alur umum bagi pengguna yang melakukan autentikasi ke dan menjalankan perintah terhadap cluster dengan layanan ini diaktifkan. 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 dari gke-security-groups@example.com.

Diagram yang menunjukkan alur Google Grup gateway

  1. Pengguna alice@example.com login menggunakan identitas Google mereka dan, jika mereka berencana menggunakan cluster dari command line, mendapatkan kubeconfig gateway cluster seperti yang dijelaskan dalam Menggunakan gateway koneksi.
  2. Pengguna mengirim permintaan dengan menjalankan perintah kubectl atau membuka halaman Workloads atau Object Browser Google Kubernetes Engine di konsolGoogle 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 disertai dengan informasi kredensial pengguna untuk digunakan dalam autentikasi dan otorisasi di cluster.
  5. Connect Agent meneruskan permintaan ke server Kubernetes API.
  6. Server Kubernetes API meneruskan permintaan ke Pod anthos-identity-service di cluster, yang memvalidasi permintaan.
  7. Pod anthos-identity-service menampilkan informasi pengguna dan grup ke server Kubernetes API. Server API Kubernetes kemudian dapat menggunakan informasi ini untuk mengizinkan permintaan berdasarkan kebijakan RBAC yang dikonfigurasi cluster.

Sebelum memulai

  1. 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.
  2. Instal Google Cloud CLI.

  3. Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.

  4. Untuk melakukan inisialisasi gcloud CLI, jalankan perintah berikut:

    gcloud init
  5. Pastikan Anda memiliki izin yang diperlukan untuk menyelesaikan panduan ini.

  6. Aktifkan Connect Gateway, GKE Connect, GKE Hub, Anthos Identity Service, dan Cloud Resource Manager API:

    Peran yang diperlukan untuk mengaktifkan API

    Untuk mengaktifkan API, Anda memerlukan peran IAM Service Usage Admin (roles/serviceusage.serviceUsageAdmin), yang berisi izin serviceusage.services.enable. Pelajari cara memberikan peran.

    gcloud services enable connectgateway.googleapis.com gkeconnect.googleapis.com gkehub.googleapis.com anthosidentityservice.googleapis.com cloudresourcemanager.googleapis.com
  7. Instal Google Cloud CLI.

  8. Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.

  9. Untuk melakukan inisialisasi gcloud CLI, jalankan perintah berikut:

    gcloud init
  10. Pastikan Anda memiliki izin yang diperlukan untuk menyelesaikan panduan ini.

  11. Aktifkan Connect Gateway, GKE Connect, GKE Hub, Anthos Identity Service, dan Cloud Resource Manager API:

    Peran yang diperlukan untuk mengaktifkan API

    Untuk mengaktifkan API, Anda memerlukan peran IAM Service Usage Admin (roles/serviceusage.serviceUsageAdmin), yang berisi izin serviceusage.services.enable. Pelajari cara memberikan peran.

    gcloud services enable connectgateway.googleapis.com gkeconnect.googleapis.com gkehub.googleapis.com anthosidentityservice.googleapis.com cloudresourcemanager.googleapis.com
  12. 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 guna mengonfigurasi gateway koneksi 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 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 Google Admin.
  2. Ikuti petunjuk di Menambahkan grup ke grup lain untuk menambahkan grup yang ingin Anda gunakan untuk kontrol akses sebagai grup bertingkat dari gke-security-groups. Jangan menambahkan 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 grupnya.

Mengonfigurasi dukungan untuk grup

Gateway koneksi 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:

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 kepada grup.

Untuk Distributed Cloud, Anda dapat mengonfigurasi dukungan untuk grup bagi masing-masing cluster atau untuk armada. Jenis cluster yang Anda gunakan akan menentukan cara Anda mengonfigurasi dukungan grup, sebagai berikut:

  • Distributed Cloud terhubung: hanya cluster individual. Konfigurasi tingkat armada tidak didukung.
  • Google Distributed Cloud (khusus software) di VMware dan bare metal: cluster atau grup.

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 armada. 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 armada, pilih salah satu opsi berikut:

Konsol

  1. Di konsol Google Cloud , buka halaman GKE Identity Service.

    Buka GKE Identity Service

  2. Klik Aktifkan Identity Service.

  3. Pilih cluster Google Distributed Cloud (khusus software) di VMware dan bare metal yang ingin Anda konfigurasi.

  4. Klik Update configuration. Panel Edit Identity Service Clusters Config akan terbuka.

  5. Di bagian Configure Identity Providers, Anda dapat memilih untuk mempertahankan, menambahkan, memperbarui, atau menghapus penyedia identitas.

  6. 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.

  7. Pilih Aktifkan untuk mengaktifkan autentikasi Google bagi 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 pada cluster yang Anda pilih.

gcloud

  1. Aktifkan fitur layanan identitas tingkat armada dan konfigurasi cluster, seperti yang dijelaskan dalam Menyiapkan pengelolaan autentikasi tingkat armada.
  2. Di file auth-config.yaml yang berisi spesifikasi ClientConfig, tambahkan kolom berikut:

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

    Nilai false di kolom google.disable mengaktifkan dukungan grup. Untuk menonaktifkan dukungan grup, ubah nilai ini menjadi true.

  3. Opsional: Jika Anda perlu mengakses penyedia identitas Google melalui proxy, tambahkan kolom proxy ke konfigurasi sebelumnya:

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

    Ganti PROXY_URL dengan alamat server proxy untuk terhubung ke identitas Google. Contoh: http://user:password@10.10.10.10:8888

  4. Terapkan konfigurasi ke cluster di fleet Anda:

    gcloud container fleet identity-service apply \
    --membership=CLUSTER_NAME \
    --config=/path/to/auth-config.yaml

    Ganti CLUSTER_NAME dengan nama keanggotaan unik cluster Anda dalam fleet.

Setelah Anda menyiapkan dukungan grup di tingkat fleet, pengontrol fleet akan mengelola konfigurasi. Konfigurasi tingkat armada akan menggantikan perubahan lokal yang Anda lakukan pada konfigurasi di cluster tertentu.

Mengonfigurasi dukungan grup untuk setiap cluster

Untuk semua cluster Distributed Cloud, termasuk Distributed Cloud terhubung, aktifkan dukungan grup dengan memperbarui defaultClientConfig di setiap cluster:

  1. Dapatkan detail keanggotaan cluster Anda:

    kubectl --kubeconfig USER_CLUSTER_KUBECONFIG get memberships membership -o yaml
    

    Ganti USER_CLUSTER_KUBECONFIG dengan 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.id untuk 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-ab12cd34ef
    
  2. Buka default ClientConfig di cluster Anda untuk mengedit:

    kubectl --kubeconfig USER_CLUSTER_KUBECONFIG -n kube-public edit clientconfig default
    
  3. Untuk mengaktifkan dukungan grup, tambahkan kolom google ke kolom spec.authentication:

    spec:
      internalServer: https://kubernetes.default.svc
      authentication:
      - google:
          audiences:
          - "CLUSTER_IDENTIFIER"
        name: google-authentication-method
    

    Ganti CLUSTER_IDENTIFIER dengan detail keanggotaan cluster Anda.

    Pastikan kolom internalServer memiliki nilai https://kubernetes.default.svc.

  4. Opsional: Jika Anda perlu mengakses penyedia identitas Google melalui proxy, tambahkan kolom proxy ke konfigurasi sebelumnya:

    spec:
      internalServer: https://kubernetes.default.svc
      authentication:
      - google:
          audiences:
          - "CLUSTER_IDENTIFIER"
        name: google-authentication-method
        proxy: PROXY_URL
    

    Ganti PROXY_URL dengan alamat server proxy untuk terhubung ke identitas Google. Contoh: http://user:password@10.10.10.10:8888

Memberikan peran IAM ke Grup Google

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

  • roles/gkehub.gatewayAdmin. Peran ini memungkinkan anggota grup mengakses API gateway koneksi.
    • Jika anggota grup hanya memerlukan akses baca saja ke cluster yang terhubung, roles/gkehub.gatewayReader dapat digunakan sebagai gantinya.
    • Jika anggota grup memerlukan akses baca/tulis ke cluster yang terhubung, roles/gkehub.gatewayEditor dapat digunakan sebagai gantinya.
  • roles/gkehub.viewer. Peran ini memungkinkan anggota grup 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

di mana

  • GROUP_NAME adalah Grup Google yang ingin Anda beri peran
  • DOMAIN adalah domain Google Workspace Anda
  • GROUP_NAME@DOMAIN adalah grup bertingkat di 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 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 grup yang Anda tentukan. Untuk setiap cluster, Anda perlu menambahkan kebijakan izin RBAC yang menentukan izin yang dimiliki grup pada cluster.

Dalam contoh berikut, Anda akan melihat cara memberikan izin cluster-admin kepada anggota grup cluster-admin-team di 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 di Menggunakan otorisasi RBAC.

Apa langkah selanjutnya?