Workforce identity federation

Dokumen ini menjelaskan konsep utama workforce identity federation.

Apa itu 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 layanan Google Cloud. Dengan workforce identity federation, Anda tidak perlu menyinkronkan identitas pengguna dari IdP yang 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 Azure Active Directory (Azure AD), 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 resource Google Cloud.

Kumpulan memungkinkan Anda melakukan hal berikut:

  • Mengelompokkan identitas pengguna; misalnya, employees atau partners
  • 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 tingkat organisasi Google Cloud. 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 organisasi Google Cloud 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.

Konsol workforce identity federation Google Cloud

Pengguna dalam kumpulan identitas tenaga kerja dapat mengakses konsol Google Cloud Workforce Identity Federation, yang juga dikenal sebagai konsol (federasi). Konsol ini memberi pengguna akses UI ke produk Google Cloud yang mendukung workforce identity federation.

Pemetaan atribut

IdP Anda menyediakan atribut, yang disebut oleh beberapa IdP sebagai klaim. Atribut berisi informasi tentang pengguna Anda. 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 oleh Google 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 4 KB.

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 untuk google.groups adalah sebagai berikut:

    • Sebaiknya batasi nama grup hingga 100 karakter.

    • Jika satu pengguna dikaitkan dengan lebih dari 100 grup, tentukan kumpulan grup yang lebih kecil, dan hanya sertakan grup tersebut dalam pernyataan 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 sesuai dengan POSIX digunakan untuk hal berikut:

    Atribut ini tidak dapat digunakan dalam kebijakan izin IAM atau dalam kondisi atribut. Panjang maksimum adalah 32 karakter.

  • attribute.KEY (Opsional): atribut yang ditentukan pelanggan yang ada di token IdP pengguna. Anda dapat menggunakan atribut khusus ini untuk menentukan strategi otorisasi dalam kebijakan izin IAM. Misalnya, Anda dapat memilih untuk menentukan atribut seperti pusat biaya pengguna: attribute.costcenter = "1234". Atribut ini kemudian dapat digunakan dalam kondisi IAM untuk memberikan akses hanya kepada pengguna di pusat biaya tersebut.

    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 menggunakan attribute.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 atribut username 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 khusus department 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.

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 kumpulan identitas tenaga kerja principalSet://iam.googleapis.com/locations/global/workforcePools/POOL_ID/*

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 biaya dan penggunaan kuota untuk project yang berisi resource yang diakses oleh permintaan API Anda. API ini disebut API berbasis resource. Beberapa biaya Google Cloud API untuk project yang terkait dengan klien; hal ini disebut API berbasis klien. Project yang digunakan untuk tujuan penagihan dan kuota disebut project kuota.

Saat membuat file konfigurasi penggabungan identitas tenaga kerja, 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 lebih lanjut 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). Untuk tenaga kerja Partner Example Organization yang 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:

  1. Buat identitas seperti partner-organization-admin@example.com untuk administrator Partner Example Organization di IdP Enterprise Example Organization, yang sudah dikonfigurasi di kumpulan bernama enterprise-example-organization-employees.

  2. Buat kumpulan tenaga kerja baru bernama example-organization-partner.

  3. 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"
          ]
        }
      ]
    }
    
  4. Berikan peran untuk kumpulan example-organization-partner pada resource yang perlu diakses di Enterprise Example Organization.

Admin 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 resource Google Cloud, 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

Workforce identity federation, API konfigurasi kumpulan tenaga kerja, dan API Layanan Token Keamanan tidak mendukung Kontrol Layanan VPC. Namun, produk Google Cloud yang digabungkan oleh tenaga kerja pengguna dapat mengakses dukungan Kontrol Layanan VPC. Untuk mempelajari lebih lanjut, lihat halaman produk dan batasan yang didukung di Kontrol Layanan VPC.

Gabungan identitas tenaga kerja dan Kontak Penting

Untuk menerima informasi penting terkait perubahan pada organisasi atau produk Google Cloud, Anda harus memberikan Kontak Penting saat menggunakan federasi identitas tenaga kerja. Pengguna Cloud Identity dapat dihubungi melalui alamat email Cloud Identity mereka, tetapi pengguna federasi identitas tenaga kerja 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 Legal dan Penangguhan. Atau, Anda dapat menentukan kontak dalam kategori Semua jika Anda tidak memiliki kontak terpisah. Menyediakan kontak akan menghapus banner.

Langkah selanjutnya