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:
Agar pengguna atau grup eksternal dapat menggunakan GKE on AWS API, konfigurasikan Workforce Identity Federation:
- Untuk pengguna Azure, lihat Mengonfigurasi workforce identity federation dengan Azure AD.
- Untuk pengguna Okta, lihat Mengonfigurasi workforce identity federation dengan Okta.
- Untuk pengguna dari platform lain, lihat Mengonfigurasi workforce identity federation.
Tetapkan peran
gkemulticloud.viewer
kepada pengguna atau grup eksternal Anda agar mereka dapat mengakses cluster. Tetapkan perancontainer.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 sepertialex@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.
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 sepertialex@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:
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 sepertialex@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.
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.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.
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 sepertialex@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
.