Dokumen ini menjelaskan konsep utama Workforce Identity Federation.
Apa yang dimaksud dengan Workforce Identity Federation?
Workforce Identity Federation memungkinkan Anda menggunakan penyedia identitas (IdP) eksternal untuk mengautentikasi dan memberi otorisasi kepada tenaga kerja; sekelompok pengguna seperti karyawan, partner, dan kontraktor; menggunakan IAM, sehingga pengguna dapat mengakses Google Cloud layanan. Dengan Penggabungan Identitas Tenaga Kerja, Anda tidak perlu menyinkronkan identitas pengguna dari IdP yang sudah ada ke identitas Google Cloud , seperti yang Anda lakukan dengan Google Cloud Directory Sync (GCDS) di Cloud Identity. Workforce Identity Federation memperluas kemampuan identitas Google Cloud untuk mendukung single sign-on berbasis atribut yang tidak sinkron.
Setelah autentikasi pengguna, informasi yang diterima dari IdP akan digunakan untuk menentukan cakupan akses ke resource Google Cloud .
Anda dapat menggunakan Workforce Identity Federation dengan IdP apa pun yang mendukung OpenID Connect (OIDC) atau SAML 2.0, seperti Microsoft Entra ID, Active Directory Federation Services (AD FS), Okta, dan lainnya.
Kumpulan identitas tenaga kerja
Kumpulan identitas tenaga kerja dapat digunakan untuk mengelola kelompok identitas tenaga kerja dan akses mereka ke Google Cloud resource.
Kumpulan memungkinkan Anda melakukan hal berikut:
- Mengelompokkan identitas pengguna; misalnya,
employees
ataupartners
- Memberikan akses IAM ke seluruh kumpulan atau subset-nya.
- Menggabungkan identitas dari satu atau beberapa IdP.
- Menentukan kebijakan pada grup pengguna yang memerlukan izin akses serupa.
- Menentukan informasi konfigurasi khusus IdP, termasuk pemetaan atribut dan kondisi atribut.
- Mengaktifkan akses API dan Google Cloud CLI untuk identitas pihak ketiga.
- Akses log oleh pengguna dalam kumpulan ke Cloud Audit Logs, bersama dengan ID kumpulan.
Anda dapat membuat beberapa kumpulan. Untuk contoh yang menjelaskan satu pendekatan tersebut, lihat Contoh: Beberapa kumpulan identitas tenaga kerja.
Kumpulan dikonfigurasi di Google Cloud tingkat organisasi. Oleh karena itu, kumpulan tersedia di semua project dan folder dalam organisasi, selama Anda memiliki izin IAM yang sesuai untuk melihat kumpulan tersebut. Saat pertama kali menyiapkan Workforce Identity Federation untuk organisasi, Anda harus memberikan nama untuk kumpulan tersebut. Dalam kebijakan izin IAM, Anda mereferensikan kumpulan berdasarkan namanya. Oleh karena itu, sebaiknya beri nama kumpulan tersebut sehingga dapat mendeskripsikan identitas yang ada di dalamnya dengan jelas.
Penyedia kumpulan identitas tenaga kerja
Penyedia kumpulan identitas tenaga kerja adalah entitas yang menjelaskan hubungan antara Google Cloud organisasi dan IdP Anda.
Workforce Identity Federation mengikuti spesifikasi OAuth 2.0 Token Exchange (RFC 8693). Anda memberikan kredensial dari penyedia identitas eksternal ke Layanan Token Keamanan, yang memverifikasi identitas dalam kredensial, lalu menampilkan token akses Google Cloud yang memiliki masa aktif singkat sebagai gantinya.
Jenis alur OIDC
Untuk penyedia OIDC, Workforce Identity Federation mendukung alur kode otorisasi dan alur implisit. Alur kode otorisasi dianggap yang paling aman, karena token ditampilkan dari IdP dalam transaksi backend yang terpisah dan aman, langsung dari IdP ke Google Cloud, setelah pengguna melakukan autentikasi. Oleh karena itu, transaksi alur kode dapat mengambil token dari berbagai ukuran, sehingga Anda dapat memiliki lebih banyak klaim untuk digunakan untuk pemetaan atribut dan kondisi atribut. Dalam alur implisit, sebagai perbandingan, Token ID ditampilkan dari IdP ke browser. Token tunduk pada batas ukuran URL browser individual.
Google Cloud Konsol Workforce Identity Federation
Pengguna dalam kumpulan identitas tenaga kerja dapat mengakses konsol Workforce Identity Federation Google Cloud , yang juga dikenal sebagai konsol (gabungan). Konsol ini memberi pengguna akses UI ke Google Cloud produk yang mendukung Workforce Identity Federation.
Atribut
IdP Anda menyediakan atribut, yang disebut oleh beberapa IdP sebagai klaim. Atribut berisi informasi tentang pengguna Anda. Anda dapat menggunakan atribut ini dalam pemetaan atribut dan kondisi atribut.
Pemetaan atribut
Anda dapat memetakan atribut ini untuk digunakan oleh Google Cloud menggunakan Common Expression Language (CEL).
Bagian ini menjelaskan kumpulan atribut wajib dan opsional yang disediakan olehGoogle Cloud .
Anda juga dapat menentukan atribut khusus di IdP yang kemudian dapat digunakan oleh produk Google Cloud tertentu; misalnya dalam kebijakan izin IAM.
Ukuran maksimum untuk pemetaan atribut adalah 16 KB. Jika ukuran pemetaan atribut melebihi batas 16 KB, upaya login akan gagal.
Atribut tersebut adalah sebagai berikut:
google.subject
(Wajib): ID unik untuk pengguna yang melakukan autentikasi. Hal ini sering kali menjadi pernyataan subjek JWT, karena log Cloud Audit Logs mencatat konten kolom ini sebagai akun utama. Anda dapat menggunakan kolom ini untuk mengonfigurasi IAM untuk keputusan otorisasi. Sebaiknya Anda tidak menggunakan nilai yang dapat diubah karena jika Anda mengubah nilai di direktori pengguna IdP, pengguna akan kehilangan akses.Panjang maksimum adalah 127 byte.
google.groups
(Opsional): kumpulan grup tempat pengguna yang melakukan autentikasi menjadi anggota. Anda dapat mengonfigurasi ekspresi logika menggunakan subset CEL yang menghasilkan array string. Anda juga dapat menggunakan kolom ini untuk mengonfigurasi IAM untuk keputusan otorisasi. Batasan untukgoogle.groups
adalah sebagai berikut:Sebaiknya batasi nama grup hingga 40 karakter.
Jika satu pengguna tergabung dalam lebih dari 400 grup, upaya login pengguna tersebut akan gagal. Untuk mengatasi hal ini, Anda harus menentukan kumpulan grup yang lebih kecil dalam pernyataan, dan memetakan hanya grup yang digunakan untuk menggabungkan pengguna ke Google Cloud.
Jika Anda menggunakan atribut ini untuk memberikan akses di IAM, setiap anggota dalam grup yang dipetakan akan diberi akses. Oleh karena itu, sebaiknya Anda memastikan bahwa hanya pengguna yang diizinkan di organisasi Anda yang dapat mengubah keanggotaan grup yang dipetakan.
google.display_name
(Opsional): atribut yang digunakan untuk menetapkan nama pengguna yang login di konsol Google Cloud . Atribut ini tidak dapat digunakan dalam kebijakan izin IAM atau dalam kondisi atribut.Panjang maksimum adalah 100 byte.
google.profile_photo
(Opsional): URL foto thumbnail pengguna. Sebaiknya foto berukuran 400x400 piksel. Jika atribut ini ditetapkan, gambar akan terlihat sebagai foto profil pengguna di konsol Google Cloud . Jika nilai ini tidak ditetapkan, atau tidak dapat diambil, ikon pengguna umum akan ditampilkan. Atribut ini tidak dapat digunakan dalam kebijakan izin IAM atau dalam kondisi atribut.google.posix_username
(Opsional): string nama pengguna unik yang mematuhi POSIX yang digunakan untuk hal berikut:Atribut ini tidak dapat digunakan dalam kebijakan izin IAM atau dalam kondisi atribut. Panjang maksimum adalah 32 karakter.
google.email
(Opsional): atribut yang digunakan untuk memetakan alamat email pengguna gabungan yang login dari IdP ke produk yang Anda integrasikan menggunakan Integrasi klien OAuth Federasi Identitas Tenaga Kerja. Atribut ini tidak dapat digunakan dalam kebijakan izin IAM atau dalam kondisi atribut.Misalnya, untuk memetakan alamat email dari Okta menggunakan protokol OIDC, sertakan
google.email=assertion.email
dalam pemetaan atribut Anda.Contoh produk yang mendukung integrasi klien OAuth mencakup produk berikut: Google Cloud
attribute.KEY
(Opsional): atribut yang ditentukan IdP eksternal yang ada di token IdP pengguna. Anda dapat menggunakan atribut kustom untuk menentukan strategi otorisasi dalam kebijakan izin IAM.Misalnya, di IdP, Anda dapat memilih untuk menentukan atribut seperti pusat biaya pengguna sebagai
costcenter = "1234"
, lalu merujuk ke principal dengan cara berikut:principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workforcePools/WORKFORCE_POOL_ID/attribute.costcenter/1234
Setelah Anda memberikan akses ke Google Cloud resource untuk ID pokok ini, semua identitas yang dikonfigurasi di IdP agar memiliki atribut
costcenter
yang ditetapkan ke1234
akan memiliki akses ke resource.Anda dapat mengonfigurasi maksimal 50 aturan pemetaan atribut khusus. Ukuran maksimum setiap aturan tersebut adalah 2048 karakter.
Meskipun kami tidak memiliki batasan untuk atribut yang dapat Anda petakan di sini, kami sangat menyarankan agar Anda memilih atribut yang nilainya stabil. Misalnya, atribut seperti
attribute.job_description
dapat berubah karena berbagai alasan (seperti meningkatkan keterbacaannya). Sebagai alternatif, pertimbangkan untuk menggunakanattribute.role
. Perubahan pada yang terakhir menunjukkan perubahan tanggung jawab yang ditetapkan dan selaras dengan perubahan dalam akses yang diberikan kepada pengguna.
Anda dapat mengubah nilai atribut menggunakan fungsi CEL standar. Anda juga dapat menggunakan fungsi kustom berikut:
Fungsi
split
membagi string pada nilai pemisah yang disediakan. Misalnya, untuk mengekstrak atributusername
dari atribut alamat email dengan memisahkan nilainya pada@
dan menggunakan string pertama, gunakan pemetaan atribut berikut:attribute.username=assertion.email.split("@")[0]
Fungsi
join
menggabungkan daftar string pada nilai pemisah yang disediakan. Misalnya, untuk mengisi atribut khususdepartment
dengan menyambungkan daftar string dengan.
sebagai pemisah, gunakan pemetaan atribut berikut:attribute.department=assertion.department.join(".")
Kondisi atribut
Kondisi atribut adalah ekspresi CEL opsional yang memungkinkan Anda menetapkan batasan pada atribut identitas yang diterima Google Cloud .
Manfaat menggunakan kondisi atribut meliputi hal berikut:
- Anda dapat menggunakan kondisi atribut agar hanya mengizinkan subset identitas eksternal untuk melakukan autentikasi ke project Google Cloud Anda. Misalnya, Anda mungkin hanya ingin mengizinkan identitas yang berada di tim tertentu untuk login, terutama jika Anda menggunakan IdP publik. Misalnya, Anda mungkin ingin mengizinkan tim akuntansi untuk login, tetapi tidak mengizinkan tim teknik Anda.
- Dengan kondisi atribut, Anda dapat mencegah penggunaan kredensial yang dimaksudkan untuk digunakan dengan platform lain dengan Google Cloud, dan sebaliknya. Hal ini membantu menghindari masalah deputi yang membingungkan.
Menggunakan kondisi atribut saat melakukan penggabungan dengan GitHub atau penyedia identitas multi-tenant lainnya
Workforce Identity Federation tidak mengelola direktori akun pengguna;
melainkan menerapkan identitas berbasis klaim. Akibatnya, jika dua token dikeluarkan oleh penyedia identitas (IdP) yang sama dan klaimnya dipetakan ke nilai google.subject
yang sama, kedua token tersebut dianggap mengidentifikasi pengguna yang sama. Untuk
mengetahui IdP mana yang menerbitkan token, Workforce Identity Federation memeriksa dan
memverifikasi URL penerbit token.
IdP multi-tenant, seperti GitHub dan Terraform Cloud, menggunakan satu URL penerbit di semua tenantnya. Untuk penyedia ini, URL penerbit mengidentifikasi semua organisasi GitHub atau Terraform Cloud, bukan organisasi GitHub atau Terraform Cloud tertentu.
Saat Anda menggunakan penyedia identitas ini, tidak cukup membiarkan Workforce Identity Federation memeriksa URL penerbit token untuk memastikan bahwa token tersebut berasal dari sumber tepercaya dan klaimnya dapat dipercaya. Jika IdP multi-tenant Anda memiliki satu URL penerbit, sebaiknya Anda menggunakan kondisi atribut untuk memastikan akses dibatasi ke tenant yang benar.
Mewakili pengguna kumpulan tenaga kerja dalam kebijakan IAM
Tabel berikut menunjukkan ID utama yang Anda gunakan untuk memberikan peran kepada pengguna tunggal, sekelompok pengguna, pengguna yang memiliki klaim tertentu, atau semua pengguna dari workforce pool.
Identitas | Format ID |
---|---|
Identitas tunggal dalam workforce identity pool |
principal://iam.googleapis.com/locations/global/workforcePools/POOL_ID/subject/SUBJECT_ATTRIBUTE_VALUE
|
Semua identitas workforce dalam grup |
principalSet://iam.googleapis.com/locations/global/workforcePools/POOL_ID/group/GROUP_ID
|
Semua identitas workforce dengan nilai atribut tertentu |
principalSet://iam.googleapis.com/locations/global/workforcePools/POOL_ID/attribute.ATTRIBUTE_NAME/ATTRIBUTE_VALUE
|
Semua identitas dalam workforce identity pool |
principalSet://iam.googleapis.com/locations/global/workforcePools/POOL_ID/*
|
Untuk mengetahui daftar lengkap ID utama, lihat ID utama.
Logging audit mendetail
Logging audit mendetail adalah fitur Workforce Identity Federation yang mencatat atribut yang diterima dari IdP Anda ke Cloud Audit Logs.
Anda dapat mengaktifkan logging audit mendetail saat membuat penyedia workforce identity pool.
Untuk mempelajari cara memecahkan masalah error pemetaan atribut dengan logging audit mendetail, lihat Error pemetaan atribut umum.
Kunci web JSON
Penyedia kumpulan tenaga kerja dapat mengakses kunci web JSON (JWK)
yang disediakan oleh IdP Anda di kolom jwks_uri
dalam
dokumen /.well-known/openid-configuration
. Jika penyedia OIDC Anda tidak
memberikan informasi ini, atau penerbit Anda tidak dapat diakses secara publik, Anda dapat
mengupload JWK secara manual saat membuat atau memperbarui penyedia OIDC.
Membatasi akses lintas organisasi
Akun utama kumpulan identitas tenaga kerja tidak dapat langsung mengakses resource di luar organisasi tempatnya berada. Namun, jika akun utama diberi izin untuk meniru identitas akun layanan dalam organisasi, batasan ini dapat diabaikan karena akun layanan tidak dibatasi secara sama.
Project pengguna kumpulan tenaga kerja
Sebagian besar Google Cloud API menagih penggunaan penagihan dan kuota ke project yang berisi resource yang diakses oleh permintaan API Anda. API ini disebut API berbasis resource. Beberapa API mengenakan biaya ke project yang terkait dengan klien; API ini disebut API berbasis klien. Google Cloud Project yang digunakan untuk tujuan penagihan dan kuota disebut project kuota.
Saat membuat file konfigurasi Workforce Identity Federation, Anda
menentukan project pengguna kumpulan tenaga kerja. Project ini digunakan untuk mengidentifikasi aplikasi Anda ke Google API yang dipanggilnya. Project pengguna kumpulan tenaga kerja
juga digunakan sebagai project kuota default untuk API berbasis klien, kecuali jika Anda menggunakan
gcloud CLI untuk memulai permintaan API. Anda harus memiliki izin
serviceusage.services.use
, yang disertakan dalam peran Service Usage
Consumer (roles/serviceusage.serviceUsageConsumer
), untuk project yang
Anda tentukan.
Untuk mengetahui informasi selengkapnya tentang project kuota, API berbasis resource, dan API berbasis klien, lihat Ringkasan project kuota.
Contoh: beberapa kumpulan identitas tenaga kerja
Bagian ini berisi contoh yang menggambarkan penggunaan umum beberapa kumpulan.
Anda dapat membuat satu kumpulan untuk karyawan dan satu kumpulan untuk partner. Organisasi multinasional dapat membuat kumpulan terpisah untuk divisi yang berbeda dalam organisasi mereka. Kumpulan memungkinkan pengelolaan terdistribusi, di mana berbagai grup dapat mengelola kumpulan spesifik mereka secara mandiri, di mana peran hanya diberikan ke identitas dalam kumpulan tersebut.
Misalnya, sebuah perusahaan bernama Enterprise Example Organization
mengontrak perusahaan lain bernama Partner Example Organization Inc untuk menyediakan
layanan DevOps Google Kubernetes Engine (GKE). Agar tenaga kerja Partner Example Organization
dapat menyediakan layanan, tenaga kerja mereka harus diizinkan untuk mengakses
Google Kubernetes Engine (GKE) dan resource Google Cloud lainnya dalam organisasi
Enterprise Example Organization. Enterprise Example Organization sudah
memiliki kumpulan identitas tenaga kerja yang disebut enterprise-example-organization-employees
.
Agar Partner Example Organization dapat mengelola akses ke resource Enterprise Example Organization, kumpulan tenaga kerja terpisah dibuat oleh Enterprise Example Organization untuk pengguna tenaga kerja Partner Example Organization sehingga Partner Example Organization dapat mengelolanya. Enterprise Example Organization menyediakan kumpulan tenaga kerja ke administrator Partner Example Organization. Administrator Partner Example Organization menggunakan IdP mereka sendiri untuk memberikan akses ke tenaga kerja mereka.
Untuk melakukannya, Admin Enterprise Example Organization melakukan tugas berikut:
Buat identitas seperti
partner-organization-admin@example.com
untuk administrator Partner Example Organization di IdP Enterprise Example Organization, yang sudah dikonfigurasi di kumpulan bernamaenterprise-example-organization-employees
.Buat kumpulan tenaga kerja baru bernama
example-organization-partner
.Buat kebijakan izin berikut untuk kumpulan
example-organization-partner
:{ "bindings": [ { "role": "roles/iam.workforcePoolEditor", "members": [ "principalSet://iam.googleapis.com/locations/global/workforcePools/enterprise-example-organization-employees/subject/partner-organization-admin@example.com" ] } ] }
Berikan peran untuk kumpulan
example-organization-partner
pada resource yang perlu diakses di Enterprise Example Organization.
Administrator Partner Example Organization kini dapat mengonfigurasi kumpulan example-organization-partner
untuk terhubung dengan IdP mereka. Kemudian, mereka dapat
mengizinkan tenaga kerja Partner Example Organization untuk login dengan
kredensial IdP Partner Example Organization. Setelah login, pengguna tenaga kerja Partner Example Organization
dapat mengakses Google Cloud resource, yang dibatasi oleh kebijakan
yang ditetapkan oleh Enterprise Example Organization.
Pengelolaan akses yang lebih mudah
Di perusahaan besar, administrator IT sering membuat grup keamanan sebagai bagian dari model kontrol akses praktik terbaik. Grup keamanan mengatur akses ke resource internal. Selain itu, perusahaan sering kali membuat grup tambahan untuk karyawan dan grup lainnya agar partner dapat memperluas model kontrol akses ini ke resource cloud. Hal ini dapat menyebabkan proliferasi grup bertingkat banyak yang dapat menjadi sangat sulit untuk dikelola.
Organisasi Anda mungkin juga memiliki kebijakan yang membatasi jumlah grup yang dapat dibuat untuk menjaga hierarki direktori pengguna tetap datar. Solusi yang lebih baik untuk mencegah kesalahan konfigurasi kebijakan IAM dan membatasi pertumbuhan grup adalah dengan menggunakan beberapa kumpulan untuk membuat pemisahan pengguna yang lebih luas dari unit organisasi dan unit bisnis yang berbeda, serta organisasi partner. Selanjutnya, Anda dapat mereferensikan kumpulan dan grup ini yang termuat dalam kumpulan ini untuk menentukan kebijakan IAM (lihat contoh di langkah Mengonfigurasi IAM).
Batasan Kontrol Layanan VPC
Fitur administratif Workforce Identity Federation, termasuk API konfigurasi kumpulan tenaga kerja, dan API Layanan Token Keamanan tidak mendukung Kontrol Layanan VPC. Namun, Google Cloud produk yang mendukung Workforce Identity Federation dan Kontrol Layanan VPC beroperasi seperti yang didokumentasikan dan tunduk pada pemeriksaan kebijakan Kontrol Layanan VPC. Selain itu, Anda dapat menggunakan identitas pihak ketiga seperti pengguna kumpulan tenaga kerja dan identitas beban kerja dalam aturan masuk atau keluar Kontrol Layanan VPC.
Workforce Identity Federation dan Kontak Penting
Untuk menerima informasi penting tentang perubahan pada organisasi atau produk Anda, Anda harus memberikan Kontak Penting saat menggunakan Workforce Identity Federation.Google Cloud Pengguna Cloud Identity dapat dihubungi melalui alamat email Cloud Identity mereka, tetapi pengguna Workforce Identity Federation dihubungi menggunakan Kontak Penting.
Saat menggunakan konsol Google Cloud untuk membuat atau mengelola kumpulan identitas tenaga kerja, Anda akan melihat banner yang meminta Anda mengonfigurasi kontak penting dengan kategori Hukum dan Penangguhan. Atau, Anda dapat menentukan kontak dalam kategori Semua jika Anda tidak memiliki kontak terpisah. Menyediakan kontak akan menghapus banner.
Langkah berikutnya
- Untuk mempelajari cara menyiapkan Workforce Identity Federation, lihat Mengonfigurasi Workforce Identity Federation. Untuk mengetahui petunjuk khusus IdP, lihat:
- Mendapatkan token berumur pendek untuk Workforce Identity Federation
- Mengelola penyedia kumpulan tenaga kerja
- Menghapus pengguna Workforce Identity Federation dan datanya
- Melihat log audit Workforce Identity Federation
- Melihat produk yang mendukung Workforce Identity Federation
- Menyiapkan akses pengguna ke konsol (gabungan)