Melakukan autentikasi ke GKE di AWS dengan identitas eksternal

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

Manfaat menggunakan workforce identity federation adalah sebagai berikut:

  • Anda tidak perlu lagi membuat akun duplikat di berbagai platform atau penyedia.
  • Anda hanya perlu menyetel izin satu kali, sehingga tidak perlu melakukan konfigurasi di beberapa platform.
  • Anda menyederhanakan akses pengguna, karena lebih sedikit login dan sandi yang diperlukan.

Sebelum memulai

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

  1. Agar pengguna atau grup eksternal dapat menggunakan GKE on AWS API, konfigurasikan Workforce Identity Federation:

  2. Tetapkan peran gkemulticloud.viewer kepada pengguna atau grup eksternal Anda 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 ke entitas (pengguna, grup, atau akun layanan), Anda memberikan semua izin yang dimiliki oleh peran tersebut kepada entitas tersebut.

    Pengguna

    Untuk pengguna perorangan, Anda harus 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 Google Cloud project Anda.
    • WORKFORCE_POOL_ID: ID yang secara unik mengidentifikasi workforce identity pool Anda di Google Cloud. Saat memformat ID, pastikan Anda mengikuti pedoman yang direkomendasikan yang disediakan dalam dokumentasi IAM di bagian Parameter kueri.
    • SUBJECT_VALUE: ID yang mengidentifikasi pengguna eksternal secara unik. 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 Google Cloud project Anda.
    • WORKFORCE_POOL_ID: ID yang secara unik mengidentifikasi workforce identity pool 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 mengidentifikasi grup eksternal secara unik.
  3. Opsional: Tetapkan peran Identity and Access Management (IAM) yang sesuai untuk 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 perorangan, Anda harus 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 Google Cloud project Anda.
    • WORKFORCE_POOL_ID: ID yang secara unik mengidentifikasi workforce identity pool Anda di Google Cloud. Saat memformat ID, pastikan Anda mengikuti pedoman yang direkomendasikan yang disediakan dalam dokumentasi IAM di bagian Parameter kueri.
    • SUBJECT_VALUE: ID yang mengidentifikasi pengguna eksternal secara unik. 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 Google Cloud project Anda.
    • WORKFORCE_POOL_ID: ID yang secara unik mengidentifikasi workforce identity pool 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 mengidentifikasi grup eksternal secara unik.

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 workforce identity federation 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 disesuaikan terhadap izin, seperti mengizinkan pengguna memiliki akses hanya baca ke resource tanpa memberikan akses yang lebih luas kepada mereka.

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

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 mencakup subjek (pengguna atau grup) dan izin yang ingin Anda berikan kepada mereka dalam cluster GKE. Berikut adalah contoh konfigurasi RBAC YAML untuk setiap pengguna 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 workforce identity pool 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 mengidentifikasi pengguna eksternal secara unik. 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 workforce identity pool 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 mengidentifikasi grup eksternal secara unik.
  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. Dengan 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 kini memiliki izin untuk mengakses dan mengelola cluster GKE target, sebagaimana ditentukan dalam aturan RBAC.

  4. Jika Anda perlu membuat 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 proses pembuatan atau update cluster.

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

Saat menjalankan perintah gcloud untuk membuat atau mengupdate 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: Google Cloud region tempat cluster Anda dikelola.
  • WORKFORCE_POOL_ID: ID yang secara unik mengidentifikasi workforce identity pool 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 mengidentifikasi pengguna eksternal secara unik. Misalnya, ID dapat berupa alamat email seperti alex@cymbalgroup.com.
  • GROUP_ID: ID yang mengidentifikasi grup eksternal secara unik.

Ringkasan pemberian akses ID eksternal ke cluster GKE

Setelah menjalankan metode #1 atau metode #2, pengguna atau grup eksternal yang ditentukan dapat menggunakan Google Cloud konsol 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.