Halaman ini menjelaskan Workload Identity Federation armada, yang merupakan mekanisme untuk mengautentikasi permintaan dari workload armada ke Google Cloud API. Di halaman ini, Anda akan mempelajari kesamaan identitas untuk workload, cara kerja Workload Identity Federation untuk fleet, dan praktik terbaik untuk mengelolanya dalam skala besar.
Halaman ini ditujukan untuk admin dan operator Platform serta untuk engineer Keamanan yang ingin mengelola otorisasi beban kerja secara lebih efisien dalam skala besar. Untuk mempelajari lebih lanjut peran pengguna dan contoh tugas yang kami referensikan dalam dokumentasi Google Cloud, lihat Tugas dan peran pengguna GKE Enterprise umum.
Sebelum membaca halaman ini, pastikan Anda memahami konsep berikut:
- Kebijakan izin Identity and Access Management (IAM)
- Cara kerja fleet
- Pengelolaan tim armada
- ServiceAccount Kubernetes
- Volume proyeksi Kubernetes
Tentang workload identity gabungan di Google Cloud
Workload Identity Federation adalah Google Cloud fitur yang memungkinkan workload di cluster Anda mengautentikasi ke Google Cloud tanpa mengharuskan Anda mendownload, memutar secara manual, dan mengelola kredensial secara umum. Sebagai gantinya, beban kerja melakukan autentikasi menggunakan token berumur pendek yang dihasilkan oleh Google Cloud.
Workload Identity Federation for GKE adalah penerapan Workload Identity Federation khusus GKE yang menyediakan kumpulan identitas beban kerja yang dikelola Google di seluruh project tempat aplikasi yang berjalan di cluster GKE mendapatkan identitas. Fleet Workload Identity Federation memperluas Workload Identity Federation untuk GKE ke semua cluster anggota fleet, terlepas dari apakah cluster berada dalam project yang berbeda atau berada di luar Google Cloud. Dengan Workload Identity Federation armada, cluster terdaftar yang mengaktifkan Workload Identity Federation pada langganan armadanya akan mendapatkan identitas menggunakan kumpulan workload identity yang dikelola Google di seluruh armada. Dengan kumpulan bersama ini, Anda dapat mengonfigurasi autentikasi ke Google Cloud API dan ke layanan lain di seluruh fleet, bahkan di beberapa project.
Fleet Workload Identity Federation juga dapat digunakan oleh Agen Connect pada beberapa jenis cluster untuk melakukan autentikasi ke Google Cloud sebagai bagian dari keanggotaan fleet, dan diperlukan untuk menggunakan beberapa fitur GKE Enterprise yang berfungsi di seluruh project, seperti Cloud Service Mesh.
Tentang workload identity pool
Kumpulan identitas beban kerja adalah entity yang mengelola identitas secara terpusat untuk aplikasi
Anda. Saat Anda mengaktifkan Workload Identity Federation untuk GKE di cluster, project cluster akan mendapatkan workload identity pool yang dikelola Google dan memiliki nama tetap khusus project. Aplikasi di cluster Anda mendapatkan identitas dari kumpulan identitas workload yang dikelola Google untuk mengautentikasi panggilan API Google Cloud . Workload identity pool yang dikelola Google memiliki sintaksis
PROJECT_ID.svc.id.goog
, dengan
PROJECT_ID
adalah ID project cluster.
Dengan Workload Identity Federation armada, kumpulan identitas beban kerja yang dikelola Google dari project host armada juga merupakan kumpulan identitas beban kerja untuk semua cluster yang Anda daftarkan ke armada, terlepas dari apakah cluster tersebut berada dalam project lain atau berada di luar Google Cloud. Setiap cluster dalam fleet menggunakan kumpulan identitas workload FLEET_HOST_PROJECT_ID.svc.id.goog
, dengan FLEET_HOST_PROJECT_ID
adalah project ID project host fleet.
Jika menggunakan cakupan tim, Anda dapat mengonfigurasi kumpulan identitas beban kerja IAM mandiri untuk digunakan cluster sebagai opsi selain kumpulan yang dikelola Google. Kumpulan mandiri ini memberikan kontrol yang lebih eksplisit atas workload mana yang mendapatkan identitas tertentu.
Setiap aplikasi di fleet Anda mendapatkan identitas gabungan yang berbeda dari kumpulan workload identity fleet yang dapat digunakan aplikasi untuk mengautentikasi ke Google Cloud dan ke layanan lain yang Anda kembangkan. Aplikasi mendapatkan ID utama yang dapat dikenali IAM. ID ini menggunakan sintaksis berikut:
PREFIX://iam.googleapis.com/projects/FLEET_PROJECT_NUMBER/locations/global/workloadIdentityPools/WORKLOAD_IDENTITY_POOL_NAME/SELECTOR
Sintaksis ini memiliki kolom berikut:
PREFIX
:principal
atauprincipalSet
, bergantung pada jenis resource Kubernetes yang Anda pilih di kolom SELECTOR.FLEET_PROJECT_NUMBER
: nomor project dari project host fleet.WORKLOAD_IDENTITY_POOL_NAME
: workload identity pool untuk fleet Anda. Nilai ini bergantung pada workload identity pool yang Anda siapkan di setiap cluster, sebagai berikut:Workload Identity Pool yang dikelola Google:
FLEET_HOST_PROJECT_ID.svc.id.goog
Workload identity pool mandiri (Pratinjau):
POOL_NAME.global.POOL_HOST_PROJECT_NUMBER.workload.id.goog
, denganPOOL_HOST_PROJECT_NUMBER
adalah nomor project dari project tempat Anda membuat workload identity pool mandiri.
SELECTOR
: pemilih resource. Untuk mengetahui daftar pemilih yang didukung, lihat bagian ID utama yang didukung. Misalnya,subject/ns/NAMESPACE/sa/SERVICEACCOUNT
memilih Akun Layanan Kubernetes tertentu di namespace tertentu.
Seluruh fleet berbagi workload identity pool fleet sehingga Anda dapat memberikan akses ke resource yang sama kepada aplikasi di mana saja dalam fleet, termasuk di project atau cloud lain, tanpa perlu mengelola akses tersebut untuk setiap cluster.
Tentang kesamaan identitas
Seperti fitur lain yang diaktifkan untuk fleet, Workload Identity Federation fleet bergantung pada prinsip kesamaan, yaitu objek Kubernetes yang memiliki nama dan namespace yang sama di cluster yang berbeda diperlakukan sebagai hal yang sama. Untuk mempelajari lebih lanjut prinsip umum kesamaan dalam fleet, lihat Kesamaan.
Dengan Workload Identity Federation untuk GKE satu project, kesamaan identitas berlaku untuk semua entity yang memiliki ID utama yang sama dalam project tersebut. Namun, dengan Workload Identity Federation fleet, kesamaan identitas ini secara implisit berlaku untuk semua entitas yang memiliki ID utama yang sama di seluruh fleet, terlepas dari project cluster.
Misalnya, pertimbangkan aplikasi dengan backend yang di-deploy di beberapa cluster dalam fleet yang sama. Jika Anda memberikan peran ke ID akun utama yang memilih Akun Layanan Kubernetes default
di namespace Kubernetes backend
, setiap aplikasi di namespace tersebut yang menggunakan Akun Layanan tersebut akan mendapatkan akses yang sama.
Jika fleet Anda hanya menjalankan cluster di project host fleet, implikasi kesamaan identitasnya sama dengan Workload Identity Federation untuk GKE. Namun, jika fleet Anda memiliki cluster yang berjalan di project lain atau di luar Google Cloud, kesamaan identitas implisit ini akan diperluas ke semua cluster terdaftar dalam fleet.
Kesamaan identitas di lingkungan multi-tenant atau campuran kepercayaan
Secara default, fleet Anda menggunakan workload identity pool yang dikelola Google dari project host fleet untuk memberikan identitas ke workload di seluruh fleet. Semua cluster dalam project host fleet, termasuk cluster mandiri yang tidak terdaftar ke fleet, menggunakan workload identity pool ini. Dalam lingkungan kepercayaan campuran tempat cluster mandiri ini menjalankan workload yang memiliki model kepercayaan yang berbeda, kesamaan identitas implisit ini dapat mengakibatkan akses yang tidak diinginkan.
Fleet memungkinkan Anda mengelola model multi-tenant ini menggunakan cakupan tim dan namespace fleet. Cakupan tim memungkinkan Anda menetapkan subset resource fleet, seperti cluster, untuk digunakan oleh tim tertentu di organisasi Anda. Namespace fleet memungkinkan Anda menentukan namespace Kubernetes dalam cakupan tim tertentu, sehingga tim tertentu hanya dapat menjalankan workload di namespace dalam cakupan tim mereka. Untuk mengetahui detailnya, lihat Ringkasan pengelolaan tim fleet.
Jika menggunakan cakupan tim, Anda dapat mengurangi kompleksitas kesamaan identitas di fleet multi-tenant dengan mengonfigurasi kumpulan identitas workload Anda sendiri untuk cluster tertentu di fleet yang akan digunakan, bukan kumpulan identitas workload yang dikelola Google. Akibatnya, ID utama untuk workload tersebut secara eksplisit berbeda dengan ID utama untuk cluster mandiri dalam project. Kesamaan identitas eksplisit ini memberi administrator kontrol yang lebih besar atas batas tempat kesamaan identitas berlaku.
Model kesamaan identitas di fleet Anda berubah sebagai berikut, berdasarkan apakah Anda hanya menggunakan workload identity pool yang dikelola Google atau mengonfigurasi workload identity pool yang dikelola sendiri:
- Kesamaan identitas implisit: semua beban kerja dalam fleet menggunakan workload identity pool yang dikelola Google. Akibatnya, setiap workload yang memiliki ID akun utama yang sama secara implisit akan memiliki akses yang sama.
Kesamaan identitas eksplisit (Pratinjau): Anda mengonfigurasi workload identity pool yang dikelola sendiri untuk cakupan tim di fleet. Pooling mandiri hanya menyediakan identitas ke workload jika Anda mengonfigurasi cluster untuk menggunakan pooling mandiri untuk namespace fleet tertentu. Workload yang berjalan di namespace dan cluster Kubernetes lainnya tidak dapat menggunakan kumpulan yang dikelola sendiri.
Akibatnya, kesamaan identitas beban kerja yang menggunakan kumpulan yang dikelola sendiri berbeda dengan kesamaan identitas beban kerja yang hanya dapat menggunakan workload identity pool yang dikelola Google.
Kapan harus menggunakan workload identity pool mandiri
Gunakan workload identity pool yang dikelola Google jika setiap cluster memiliki tingkat kepercayaan yang serupa, dengan entitas yang sama men-deploy aplikasi yang sama. Misalnya, fleet khusus tim dengan cluster di setiap region yang men-deploy aplikasi yang direplikasi di setiap cluster.
Sebaiknya konfigurasikan workload identity pool mandiri untuk armada Anda dalam skenario seperti berikut:
- Beberapa tingkat kepercayaan di fleet: Anda menjalankan cluster yang memiliki beberapa tingkat kepercayaan. Misalnya, pertimbangkan skenario saat tim keuangan dan tim frontend memiliki cluster dalam grup yang sama. Identitas workload mandiri membantu Anda memisahkan pemberian akses untuk setiap tim menurut namespace armada. Artinya, bahkan administrator cluster dari cluster frontend tidak dapat mendapatkan identitas di namespace fleet kecuali jika mereka memiliki izin eksplisit.
- Beberapa tingkat kepercayaan dalam project: project host fleet Anda menjalankan cluster mandiri yang mungkin tidak memiliki tingkat kepercayaan yang sama dengan cluster fleet Anda. Secara default, cluster mandiri ini menggunakan workload identity pool yang dikelola Google dari project host fleet. Cluster fleet Anda juga menggunakan workload identity pool ini, terlepas dari project cluster fleet. Menetapkan workload identity pool mandiri untuk fleet memastikan bahwa pemberian akses di kumpulan mandiri tidak memberikan akses ke cluster mandiri secara tidak sengaja.
- Praktik terbaik untuk cakupan tim: Anda sudah menggunakan fitur pengelolaan tim fleet dan ingin menerapkan praktik terbaik yang direkomendasikan untuk memberikan akses ke workload. Dengan menetapkan kumpulan identitas beban kerja yang dikelola sendiri, Anda dapat memberikan akses ke workload di namespace fleet tertentu dalam cakupan tim tanpa memberikan akses tersebut ke cakupan tim lain yang menjalankan workload di cluster yang sama.
Cara kerja Workload Identity Federation untuk fleet
Bagian berikut menjelaskan cara kerja Workload Identity Federation untuk fleet, termasuk alur kredensial autentikasi dan ID utama IAM yang didukung.
Alur kredensial
Agar aplikasi di namespace tertentu dapat melakukan autentikasi menggunakan Workload Identity Federation armada, Anda harus melakukan hal berikut:
Deploy ConfigMap di namespace tersebut yang memiliki informasi berikut:
- Workload identity pool dan penyedia identitas untuk cluster Anda.
- Jalur di setiap Pod tempat Kubernetes memasang token ServiceAccount. Token ini adalah Token Web JSON (JWT) yang ditandatangani.
ConfigMap ini berfungsi sebagai file kredensial default aplikasi (ADC) untuk workload.
Buat kebijakan izin IAM yang memberikan akses pada resourceGoogle Cloud tertentu ke ID akun utama dari akun utama di cluster Anda, seperti ServiceAccount di namespace.
Pastikan beban kerja Anda di namespace memiliki konfigurasi berikut dalam spesifikasi Pod:
- Variabel lingkungan
GOOGLE_APPLICATION_CREDENTIALS
ditetapkan ke jalur pemasangan ConfigMap di Pod. - Volume yang diproyeksikan yang berisi token ServiceAccount dan ConfigMap yang Anda buat, dipasang di jalur yang sama dengan yang Anda tentukan dalam variabel lingkungan
GOOGLE_APPLICATION_CREDENTIALS
. - Pemasangan volume dalam penampung yang mereferensikan volume yang diproyeksikan.
- Variabel lingkungan
Saat workload melakukan panggilan API Google Cloud , langkah-langkah berikut akan terjadi:
- Library autentikasi Google Cloud menggunakan Kredensial Default
Aplikasi (ADC) untuk menemukan kredensial. ADC memeriksa jalur yang Anda
tentukan dalam variabel lingkungan
GOOGLE_APPLICATION_CREDENTIALS
untuk mencari token autentikasi. - Library autentikasi ADC menggunakan data dalam ConfigMap untuk menukar JWT ServiceAccount yang Anda pasang di Pod dengan token akses gabungan berumur pendek dari Layanan Token Keamanan yang mereferensikan ID utama beban kerja.
- ADC menyertakan token akses gabungan dengan permintaan API.
- Kebijakan izin IAM memberikan otorisasi kepada ID akun utama untuk melakukan operasi yang diminta pada resource Google Cloud .
ID akun utama yang didukung untuk Workload Identity Federation armada
Tabel berikut menjelaskan pemilih yang dapat Anda gunakan dalam kebijakan izin IAM untuk mereferensikan akun utama di fleet:
Jenis ID utama | Sintaks |
---|---|
Semua Pod yang menggunakan Akun Layanan Kubernetes tertentu | Pilih ServiceAccount berdasarkan namanya:
principal://iam.googleapis.com/projects/ Ganti kode berikut:
Pilih ServiceAccount menurut UID: principal://iam.googleapis.com/projects/ Ganti kode berikut:
|
Langkah berikutnya
- Mengautentikasi beban kerja fleet kepercayaan bersama ke Google Cloud API
- Mengautentikasi beban kerja fleet dengan kepercayaan campuran ke Google Cloud API
- Praktik terbaik untuk menggunakan Workload Identity Federation armada