Dokumen ini menunjukkan cara mengonfigurasi Workforce Identity Federation dengan penyedia identitas (IdP) PingFederate dan mengelola akses ke Google Cloud. Setelah mengonfigurasi IdP PingFederate, pengguna gabungan dapat mengakses Google Cloud layanan yang mendukung Workforce Identity Federation menggunakan protokol SAML 2.0.
Sebelum memulai
- Pastikan Anda menyiapkan organisasi. Google Cloud
-
Instal Google Cloud CLI. Setelah penginstalan, inisialisasi Google Cloud CLI dengan menjalankan perintah berikut:
gcloud initJika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu .
Untuk menyiapkan aplikasi PingFederate yang menggunakan protokol SAML 2.0, lakukan hal berikut di PingFederate:
- Tetapkan SAML 2.0 Entity ID IdP PingFederate Anda. Untuk mengetahui detailnya, lihat Menentukan informasi gabungan.
Buat koneksi SP SAML 2.0, lihat Memilih jenis koneksi SP dan lakukan hal berikut:
- Di Connection Type, pilih Browser SSO Profiles dan SAML 2.0 protocol.
- Di Import Metadata, pilih None.
Di General Info, tetapkan Partner's Entity ID (Connection ID) ke hal berikut:
https://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_IDDi SAML Profiles, aktifkan SP-initiated SSO. Jika Anda berencana menggunakan single sign-on (SSO) yang dimulai IdP, Anda juga dapat mengaktifkannya.
Di Attribute Contract, tentukan atribut kustom (misalnya, email dan grup) yang akan diteruskan dalam pernyataan. Atribut ini dapat digunakan di Google Cloud untuk membuat kebijakan pengelolaan akses nanti.
Di Attribute Contract Fulfillment, pastikan
SAML_SUBJECTdipetakan ke kolom yang memiliki nilai unik untuk setiap pengguna. Misalnya, alamat email biasanya unik untuk setiap pengguna, tidak berubah, dan sering digunakan untuk merujuk ke pengguna tertentu dalam Google Cloud kebijakan pengelolaan akses.Untuk menyiapkan login konsol (gabungan), di Assertion Consumer Service URL, tambahkan URL endpoint berikut:
https://auth.cloud.google/signin-callback/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_IDGanti kode berikut:
WORKFORCE_POOL_ID: ID workforce pool yang Anda buat sebelumnya.WORKFORCE_PROVIDER_ID: ID penyedia workforce yang Anda buat nanti.
Tetapkan Binding untuk endpoint ini ke POST.
Untuk mengaktifkan login konsol (gabungan), di Allowable SAML Bindings, pilih Redirect.
Untuk Signature Policy, pilih Sign Response As Required.
Simpan dan aktifkan koneksi.
Untuk mengonfigurasi aplikasi SAML, lakukan hal berikut:
gcloud
Untuk membuat penyedia workforce identity pool SAML, jalankan perintah berikut:
gcloud iam workforce-pools providers create-saml WORKFORCE_PROVIDER_ID \ --workforce-pool="WORKFORCE_POOL_ID" \ --display-name="DISPLAY_NAME" \ --description="DESCRIPTION" \ --idp-metadata-path="XML_METADATA_PATH" \ --attribute-mapping="ATTRIBUTE_MAPPING" \ --attribute-condition="ATTRIBUTE_CONDITION" \ --location=globalGanti kode berikut:
WORKFORCE_PROVIDER_ID: ID penyedia.WORKFORCE_POOL_ID: ID workforce identity pool.DISPLAY_NAME: nama tampilan.DESCRIPTION: deskripsi.XML_METADATA_PATH: jalur ke file metadata berformat XML dari PingFederate.ATTRIBUTE_MAPPING: pemetaan atribut; misalnya,google.subject=assertion.subject,google.groups=assertion.attributes.groups,attribute.department=assertion.attributes.department[0].ATTRIBUTE_CONDITION: kondisi atribut opsional; misalnya, untuk membatasi atributipaddrke rentang IP tertentu, tetapkan kondisi keassertion.ipaddr.startsWith('98.11.12.').
Perintah ini menetapkan
subject,groups, dandepartmentdalam pernyataan SAML ke atributgoogle.subject,google.groups, danattribute.department. Kondisi atribut juga memastikan bahwa hanya pengguna dalam rentang IP tertentu yang dapat login menggunakan penyedia workforce ini.Konsol
Untuk mengonfigurasi penyedia SAML menggunakan Google Cloud konsol, lakukan hal berikut:
- Di Google Cloud konsol, buka halaman Workforce Identity Pools: Buka Workforce Identity Pools
- Di tabel Workforce Identity Pools, pilih pool yang ingin Anda buatkan penyedia.
- Di bagian Providers, klik Add Provider.
- Di daftar Select a Provider vendor, pilih Generic Identity Provider.
- Di Select an authentication protocol, pilih SAML.
- Di bagian Create a provider, lakukan hal berikut:
- Di bagian Name, masukkan nama penyedia.
- Di IDP metadata file (XML), pilih file XML metadata dari PingFederate.
- Klik Continue.
- Di bagian Share your provider information, klik Continue.
Di bagian Configure provider, lakukan hal berikut:
- Di Attribute mapping, masukkan ekspresi CEL untuk
google.subject(misalnya,assertion.subject). Opsional: Untuk memasukkan pemetaan lain, klik Add mapping , lalu masukkan pemetaan lain, misalnya:
google.subject=assertion.subject, google.groups=assertion.attributes['https://example.com/aliases'], attribute.costcenter=assertion.attributes.costcenter[0]
- Di Attribute mapping, masukkan ekspresi CEL untuk
Untuk mengaktifkan logging audit mendetail, di Detailed logging, klik tombol Enable attribute value audit logging.
Untuk membuat penyedia, klik Submit.
TEST_PROJECT_ID: project ID.WORKFORCE_POOL_ID: ID workforce identity pool.DEPARTMENT_VALUE: nilaiattribute.departmentyang dipetakan.TEST_PROJECT_ID: project ID.WORKFORCE_POOL_ID: ID workforce identity pool.GROUP_ID: grup dalam klaimgoogle.groupsyang dipetakan.-
Buka halaman login konsol (gabungan).
-
Masukkan nama penyedia, dengan format berikut:
locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID
Masukkan kredensial PingFederate Anda saat diminta. WORKFORCE_POOL_ID: ID workforce poolPROVIDER_ID: ID penyediaLOGIN_CONFIG_FILE_PATH: jalur ke file konfigurasi yang Anda tentukan—misalnya,login.json-
Jika Anda menggunakan flag
--activatesaat membuat file konfigurasi, atau jika Anda mengaktifkan file konfigurasi dengangcloud config set auth/login_config_file, gcloud CLI akan menggunakan file konfigurasi Anda secara otomatis:gcloud auth login
-
Untuk login dengan menentukan lokasi file konfigurasi, jalankan perintah berikut:
gcloud auth login --login-config=LOGIN_CONFIG_FILE_PATH
-
Untuk menggunakan variabel lingkungan guna menentukan lokasi file konfigurasi, tetapkan
CLOUDSDK_AUTH_LOGIN_CONFIG_FILEke jalur konfigurasi. -
Jika Anda menggunakan flag
--activatesaat membuat file konfigurasi, atau jika Anda mengaktifkan file konfigurasi dengangcloud config set auth/login_config_file, Anda harus menjalankan perintah berikut untuk membatalkan penetapannya:gcloud config unset auth/login_config_file
-
Hapus variabel lingkungan
CLOUDSDK_AUTH_LOGIN_CONFIG_FILE, jika telah ditetapkan. - Buat pengguna login ke aplikasi PingFederate dan dapatkan respons SAML.
- Simpan respons SAML yang ditampilkan oleh PingFederate di lokasi yang aman pada mesin lokal Anda. Simpan jalur dalam variabel lingkungan—misalnya:
SAML_ASSERTION_PATH=/path/to/assertion.xml. Buat file konfigurasi:
gcloud iam workforce-pools create-cred-config \ locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID \ --subject-token-type=urn:ietf:params:oauth:token-type:saml2 \ --credential-source-file=SAML_ASSERTION_PATH \ --workforce-pool-user-project=PROJECT_ID \ --output-file=config.jsonGanti kode berikut:
SAML_ASSERTION_PATH: jalur file pernyataan SAML.PROJECT_ID: project ID.
File konfigurasi yang dihasilkan akan terlihat mirip dengan berikut:
{ "type": "external_account", "audience": "//iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID", "subject_token_type": "urn:ietf:params:oauth:token-type:saml2", "token_url": "https://sts.googleapis.com/v1/token", "credential_source": { "file": "SAML_ASSERTION_PATH" }, "workforce_pool_user_project": "PROJECT_ID" }Untuk login ke gcloud CLI menggunakan pertukaran token, jalankan perintah berikut:
gcloud auth login --cred-file=config.jsongcloudkemudian secara transparan menukar kredensial PingFederate Anda dengan token akses sementara Google Cloud , sehingga Anda dapat melakukan panggilangcloudlainnya ke Google Cloud. Outputnya mirip dengan hal berikut ini:Authenticated with external account user credentials for: [principal://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/subject/USER_ID].Untuk mencantumkan akun berkredensial dan akun aktif, jalankan perintah berikut:
gcloud auth list- Buka halaman Cloud Storage.
- Pastikan Anda dapat melihat daftar bucket yang ada untuk project
TEST_PROJECT_ID.
Menggunakan atribut
Bagian ini menjelaskan cara menggunakan atribut dari pernyataan SAML.
Gunakan kontrak atribut untuk menentukan atribut kustom dalam pernyataan SAML yang dihasilkan. Setelah mengonfigurasi atribut, Anda dapat menggunakannya di Google Cloud untuk membuat kebijakan pengelolaan akses. Untuk mempelajari kontrak atribut lebih lanjut, lihat Kontrak atribut dalam dokumentasi server PingFederate.
Misalnya, dalam panduan ini, kita menggunakan PingOne sebagai datastore untuk PingFederate dan memetakan kontrak atribut email, firstName, dan groups menggunakan atribut pengguna dari datastore PingOne, sebagai berikut:
| Kontrak Atribut | Nilai |
|---|---|
email |
email |
firstName |
name.given |
groups |
memberOfGroupIDs |
Membuat penyedia workforce identity pool PingFederate
Bagian ini menjelaskan cara membuat penyedia workforce identity pool untuk memungkinkan pengguna IdP Anda mengakses Google Cloud. Anda dapat mengonfigurasi penyedia untuk menggunakan protokol SAML.
Membuat penyedia workforce identity pool SAML 2.0
Mengelola akses ke Google Cloud resource
Bagian ini menunjukkan cara mengelola akses ke Google Cloud resource untuk pengguna PingFederate.
Project contoh yang digunakan dalam panduan ini dapat berbeda dengan project yang Anda gunakan untuk menyiapkan Workforce Identity Federation.
Anda dapat mengelola peran untuk satu identitas, grup identitas, atau keseluruhan pool. Untuk mengetahui informasi selengkapnya, lihat Merepresentasikan pengguna workforce identity pool dalam kebijakan IAM.
Menggunakan atribut departemen yang dipetakan
Untuk memberikan peran Storage Admin (roles/storage.admin) ke semua identitas dalam departemen tertentu untuk project TEST_PROJECT_ID, jalankan perintah berikut:
gcloud projects add-iam-policy-binding TEST_PROJECT_ID \
--role="roles/storage.admin" \
--member="principalSet://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/attribute.department/DEPARTMENT_VALUE"
Ganti kode berikut:
Menggunakan grup yang dipetakan
Untuk memberikan peran Storage Admin (roles/storage.admin) ke semua identitas dalam grup GROUP_ID untuk project TEST_PROJECT_ID, jalankan perintah berikut:
gcloud projects add-iam-policy-binding TEST_PROJECT_ID \
--role="roles/storage.admin" \
--member="principalSet://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/group/GROUP_ID"
Ganti kode berikut:
Login dan uji akses
Di bagian ini, Anda akan login sebagai pengguna workforce identity pool dan menguji akses Anda.
Login
login konsol (gabungan)
Untuk login ke Google Cloud konsol Workforce Identity Federation, yang juga dikenal sebagai konsol (gabungan), lakukan tindakan berikut:
Login berbasis browser gcloud CLI
Untuk login ke gcloud CLI menggunakan alur login berbasis browser:
Untuk membuat file konfigurasi login, jalankan perintah berikut. Secara opsional, Anda dapat mengaktifkan
file sebagai default untuk gcloud CLI dengan menambahkan
--activate flag.
Kemudian, Anda dapat menjalankan gcloud auth login tanpa menentukan
jalur file konfigurasi setiap kali.
gcloud iam workforce-pools create-login-config \ locations/global/workforcePools/WORKFORCE_POOL_ID/providers/PROVIDER_ID \ --output-file=LOGIN_CONFIG_FILE_PATH
Ganti kode berikut:
File ini berisi endpoint yang digunakan oleh gcloud CLI untuk mengaktifkan alur autentikasi berbasis browser dan menetapkan audience ke IdP yang dikonfigurasi di penyedia workforce identity pool. File tidak berisi informasi rahasia apa pun.
Outputnya akan terlihat mirip seperti berikut:
{ "type": "external_account_authorized_user_login_config", "audience": "//iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID", "auth_url": "https://auth.cloud.google/authorize", "token_url": "https://sts.googleapis.com/v1/oauthtoken", "token_info_url": "https://sts.googleapis.com/v1/introspect" }
Untuk menghentikan
gcloud auth login agar tidak menggunakan file konfigurasi ini secara otomatis, Anda dapat membatalkan penetapannya dengan menjalankan gcloud config unset auth/login_config_file.
Untuk mengautentikasi menggunakan autentikasi login berbasis browser, Anda dapat menggunakan salah satu metode berikut:
Untuk menghentikan penggunaan file konfigurasi login, lakukan langkah berikut:
Login headless gcloud CLI
Untuk login ke PingFederate dengan gcloud CLI menggunakan protokol SAML, lakukan langkah berikut:
Menguji akses
Anda memiliki akses ke Google Cloud layanan yang mendukung Workforce Identity Federation dan yang aksesnya diberikan kepada Anda. Sebelumnya dalam panduan ini, Anda telah memberikan peran Storage Admin ke semua identitas dalam departemen atau grup tertentu untuk project TEST_PROJECT_ID. Anda dapat menguji apakah Anda memiliki akses dengan mencantumkan bucket Cloud Storage.
login konsol (gabungan)
Untuk memverifikasi akses Anda di konsol (gabungan), lakukan hal berikut:
gcloud CLI
Untuk mencantumkan bucket dan objek Cloud Storage untuk project yang dapat Anda akses, jalankan perintah berikut:
gcloud alpha storage ls --project="TEST_PROJECT_ID"
Akun utama harus memiliki izin serviceusage.services.use pada project yang ditetapkan di sesi gcloud CLI: PROJECT_ID.