Melakukan autentikasi ke GKE di AWS dengan identitas eksternal

Gabungan identitas tenaga kerja memberikan akses identitas non-Google ke layanan Google Cloud. Dalam konteks GKE di AWS, hal ini berarti Anda dapat menggunakan identitas eksternal yang sudah ada untuk membuat atau mengakses cluster GKE tanpa mengandalkan kredensial Google.

Manfaat menggunakan penggabungan identitas tenaga kerja adalah sebagai berikut:

  • Dengan demikian, Anda tidak perlu lagi memiliki akun duplikat di berbagai platform atau penyedia.
  • Anda menetapkan izin hanya sekali, tanpa memerlukan konfigurasi di beberapa platform.
  • Anda menyederhanakan akses pengguna, karena diperlukan login dan sandi yang lebih sedikit.

Sebelum memulai

Sebelum dapat mengizinkan pengguna atau grup eksternal untuk mengakses cluster GKE, Anda perlu melakukan langkah-langkah berikut:

  1. Agar pengguna atau grup eksternal dapat menggunakan GKE di AWS API, konfigurasikan federasi identitas tenaga kerja.:

  2. Tetapkan peran gkemulticloud.viewer kepada pengguna eksternal atau grup agar mereka dapat mengakses cluster. Tetapkan peran container.clusterViewer untuk melihat cluster di Konsol Google Cloud.

    Perhatikan bahwa peran adalah kumpulan izin. Saat menetapkan peran pada entity (akun pengguna, grup, atau layanan), Anda memberi entitas tersebut semua izin yang terdapat pada peran tersebut.

    Pengguna

    Untuk pengguna individu, Anda perlu menetapkan peran gkemulticloud.viewer:

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --role="roles/gkemulticloud.viewer" \
      --member="principal://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/subject/SUBJECT_VALUE"
    

    Ganti kode berikut:

    • PROJECT_ID: ID project Google Cloud Anda.
    • WORKFORCE_POOL_ID: ID yang secara unik mengidentifikasi kumpulan identitas tenaga kerja Anda di Google Cloud. Saat memformat ID, pastikan Anda mengikuti panduan yang direkomendasikan yang diberikan dalam dokumentasi IAM di bagian Parameter kueri.
    • SUBJECT_VALUE: ID yang secara unik mengidentifikasi pengguna eksternal. Misalnya, ID dapat berupa alamat email seperti alex@cymbalgroup.com.

    Grup

    Untuk grup, Anda perlu menetapkan peran gkemulticloud.viewer:

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --role="roles/gkemulticloud.viewer" \
      --member="principalSet://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/group/GROUP_ID"
    

    Ganti kode berikut:

    • PROJECT_ID: ID project Google Cloud Anda.
    • WORKFORCE_POOL_ID: ID yang secara unik mengidentifikasi kumpulan identitas tenaga kerja Anda di Google Cloud. Saat memformat ID, pastikan Anda mengikuti panduan yang direkomendasikan yang diberikan dalam dokumentasi IAM di bagian Parameter kueri.
    • GROUP_ID: ID yang secara unik mengidentifikasi grup eksternal.
  3. Opsional: Tetapkan peran Identity and Access Management (IAM) yang sesuai kepada pengguna atau grup eksternal Anda. Langkah ini hanya diperlukan jika Anda ingin memberi pengguna atau grup kemampuan untuk membuat atau mengupdate cluster; langkah ini tidak diperlukan hanya untuk mengakses cluster.

    Pengguna

    Untuk pengguna individu, Anda perlu menetapkan peran gkemulticloud.admin:

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --role="roles/gkemulticloud.admin" \
      --member="principal://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/subject/SUBJECT_VALUE"
    

    Ganti kode berikut:

    • PROJECT_ID: ID project Google Cloud Anda.
    • WORKFORCE_POOL_ID: ID yang secara unik mengidentifikasi kumpulan identitas tenaga kerja Anda di Google Cloud. Saat memformat ID, pastikan Anda mengikuti panduan yang direkomendasikan yang diberikan dalam dokumentasi IAM di bagian Parameter kueri.
    • SUBJECT_VALUE: ID yang secara unik mengidentifikasi pengguna eksternal. Misalnya, ID dapat berupa alamat email seperti alex@cymbalgroup.com.

    Grup

    Untuk grup, Anda perlu menetapkan peran gkemulticloud.admin:

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --role="roles/gkemulticloud.admin" \
      --member="principalSet://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/group/GROUP_ID"
    

    Ganti kode berikut:

    • PROJECT_ID: ID project Google Cloud Anda.
    • WORKFORCE_POOL_ID: ID yang secara unik mengidentifikasi kumpulan identitas tenaga kerja Anda di Google Cloud. Saat memformat ID, pastikan Anda mengikuti panduan yang direkomendasikan yang diberikan dalam dokumentasi IAM di bagian Parameter kueri.
    • GROUP_ID: ID yang secara unik mengidentifikasi grup eksternal.

Untuk mengetahui informasi selengkapnya tentang peran dan izin API yang diperlukan untuk GKE di AWS, lihat Peran dan izin API.

Memberikan akses eksternal ke cluster GKE

Ada dua metode untuk menyiapkan penggabungan identitas tenaga kerja sehingga pengguna atau grup eksternal dapat mengakses cluster GKE Anda.

Metode #1 mengharuskan Anda menentukan file RBAC dan menerapkannya ke cluster. Metode ini menawarkan kontrol yang telah disesuaikan atas izin, seperti mengizinkan pengguna akses hanya baca ke resource tanpa memberi mereka akses yang lebih luas.

Metode #2 mengharuskan Anda menentukan akses untuk identitas eksternal saat membuat atau memperbarui cluster. Metode ini memberikan hak istimewa administratif penuh kepada pengguna atau grup yang ditentukan.

Pilih metode yang paling sesuai dengan tingkat kontrol akses yang Anda inginkan: metode #1 untuk izin yang lebih terperinci, atau metode #2 untuk memberikan hak admin cluster penuh.

Metode #1: menggunakan file RBAC

Metode pertama untuk memberikan akses eksternal ke cluster GKE melibatkan penggunaan file RBAC. Ikuti langkah-langkah berikut:

  1. Tentukan file YAML RBAC yang menyertakan subjek (pengguna atau grup) dan izin yang ingin Anda berikan kepada subjek dalam cluster GKE. Berikut adalah contoh konfigurasi YAML RBAC untuk pengguna individual dan untuk grup:

    Pengguna

    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRoleBinding
    metadata:
      name: gateway-cluster-admin-user
    subjects:
    - kind: User
      name: principal://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/subject/SUBJECT_VALUE
    roleRef:
      kind: ClusterRole
      name: cluster-admin
      apiGroup: rbac.authorization.k8s.io
    

    Ganti kode berikut:

    • WORKFORCE_POOL_ID: ID yang secara unik mengidentifikasi kumpulan identitas tenaga kerja Anda di Google Cloud. Saat memformat ID, pastikan Anda mengikuti panduan yang direkomendasikan yang diberikan dalam dokumentasi IAM di bagian Parameter kueri.
    • SUBJECT_VALUE: ID yang secara unik mengidentifikasi pengguna eksternal. Misalnya, ID dapat berupa alamat email seperti alex@cymbalgroup.com.

    Grup

    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_ID
    roleRef:
      kind: ClusterRole
      name: cluster-admin
      apiGroup: rbac.authorization.k8s.io
    

    Ganti kode berikut:

    • WORKFORCE_POOL_ID: ID yang secara unik mengidentifikasi kumpulan identitas tenaga kerja Anda di Google Cloud. Saat memformat ID, pastikan Anda mengikuti panduan yang direkomendasikan yang diberikan dalam dokumentasi IAM di bagian Parameter kueri.
    • GROUP_ID: ID yang secara unik mengidentifikasi grup eksternal.
  2. Identifikasi cluster GKE yang ingin Anda konfigurasi dan tetapkan sebagai konteks aktif menggunakan perintah berikut:

      kubectl config use-context CLUSTER_CONTEXT
    

    Ganti CLUSTER_CONTEXT dengan nama konteks yang sesuai untuk cluster Anda.

  3. Setelah cluster GKE yang diinginkan ditetapkan sebagai konteks aktif, terapkan konfigurasi RBAC ke cluster menggunakan perintah berikut:

    kubectl apply -f RBAC_PATH
    

    Ganti RBAC_PATH dengan jalur ke file RBAC yang Anda buat atau edit.

    Saat Anda menjalankan perintah ini, pengguna atau grup yang ditentukan dalam konfigurasi RBAC sekarang memiliki izin untuk mengakses dan mengelola cluster GKE yang ditargetkan, seperti yang ditentukan dalam aturan RBAC.

  4. Jika perlu melakukan perubahan berikutnya pada izin, ubah file RBAC dan terapkan kembali ke cluster dengan mengulangi langkah-langkah sebelumnya.

Metode #2: memberikan akses ke identitas eksternal selama pembuatan atau update cluster

Metode #2 memberikan akses ke identitas eksternal selama pembuatan atau proses update cluster.

Untuk membuat cluster, ikuti langkah-langkah di bagian Membuat cluster. Untuk mengupdate cluster, ikuti langkah-langkah di bagian Mengupdate cluster.

Saat menjalankan perintah gcloud untuk membuat atau memperbarui cluster, tentukan parameter admin-users dan/atau admin-groups sebagai berikut:

gcloud container aws clusters [create|update] CLUSTER_NAME \
    --location=LOCATION
    --admin-users=principal://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/subject SUBJECT_VALUE \
    --admin-groups=principalSet://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/group/GROUP_ID

Ganti kode berikut:

  • CLUSTER_NAME: nama cluster Anda.
  • LOCATION: region Google Cloud tempat cluster Anda dikelola.
  • WORKFORCE_POOL_ID: ID yang secara unik mengidentifikasi kumpulan identitas tenaga kerja Anda di Google Cloud. Saat memformat ID, pastikan Anda mengikuti panduan yang direkomendasikan yang diberikan dalam dokumentasi IAM di bagian Parameter kueri.
  • SUBJECT_VALUE: ID yang secara unik mengidentifikasi pengguna eksternal. Misalnya, ID dapat berupa alamat email seperti alex@cymbalgroup.com.
  • GROUP_ID: ID yang secara unik mengidentifikasi grup eksternal.

Ringkasan memberikan akses ke cluster GKE kepada ID eksternal

Setelah menjalankan metode #1 atau metode #2, pengguna atau grup eksternal yang ditentukan dapat menggunakan Google Cloud Console untuk terhubung dan melihat detail cluster. Atau, mereka dapat menggunakan kubectl dengan identitas dari gcloud CLI untuk mengelola, memanipulasi, dan berkomunikasi dengan cluster.

Untuk menjalankan perintah kubectl terhadap cluster GKE, lihat cara membuat entri kubeconfig.