Mengonfigurasi IAP dengan Workforce Identity Federation

Halaman ini menunjukkan cara mengonfigurasi Identity-Aware Proxy (IAP) yang akan digunakan Workforce Identity Federation.

Saat mengonfigurasi Workforce Identity Federation dengan IAP, Anda dapat menggunakan Penyedia Identitas (IdP) eksternal untuk mengautentikasi dan memberi otorisasi tenaga kerja—kelompok pengguna, seperti karyawan, partner, dan kontraktor—menggunakan Identity and Access Management (IAM), sehingga pengguna dapat mengakses layanan yang di-deploy dengan aman atau infrastruktur lokal.

Dengan mengonfigurasi IAP dengan Workforce Identity Federation, Anda dapat hal-hal berikut terkait aplikasi yang diamankan oleh IAP:

  • Mengalihkan pengguna akhir ke IdP eksternal, seperti Okta, untuk login.
  • Konfigurasikan sesi login antara 15 menit dan 12 jam.
  • Hanya izinkan pengguna akhir atau pengguna akhir tertentu yang ditetapkan di IdP untuk mengakses aplikasi.
  • Menentukan konteks yang dapat digunakan pengguna akhir untuk mengakses aplikasi. Sebagai misalnya, hanya mengizinkan akses selama waktu tertentu dalam sehari.

Anda dapat menggunakan IAP dengan Workforce Identity Federation di semua platform resource dan load balancer yang ada yang didukung IAP.

Mengonfigurasi IAP dengan Workforce Identity Federation untuk aplikasi

Mengonfigurasi IAP dengan Workforce Identity Federation terdiri dari tugas utama berikut:

  1. Siapkan kumpulan tenaga kerja dan penyedia.
  2. Buat client ID dan rahasia klien OAuth.
  3. Aktifkan IAP dan konfigurasikan untuk menggunakan Workforce Identity Federation.

Menyiapkan kumpulan tenaga kerja dan penyedia

Untuk menyiapkan kumpulan tenaga kerja dan penyedia, ikuti petunjuk di Workforce Identity Federation, dan kapan untuk menyetel waktu durasi sesi, lihat Mengelola IAP dengan sesi Workforce Identity Federation.

Jika Anda ingin memetakan alamat email dari IdP pihak ketiga ke Google Cloud, Anda harus menambahkan pemetaan atribut di penyedia kumpulan tenaga kerja untuk google.email. Contoh: google.email=assertion.email.

Membuat client ID dan rahasia klien OAuth

  1. Ikuti petunjuk untuk membuat client ID dan rahasia klien OAuth di dalam project di organisasi yang sama dengan kumpulan tenaga kerja yang akan Anda gunakan untuk konfigurasi ini. Proyek tidak harus sama memproyeksikan bahwa resource yang diamankan oleh IAP berada. Saat membuat ID dan rahasia klien OAuth, lakukan hal berikut:

    1. Gunakan placeholder untuk URI pengalihan saat membuat client ID. Sesudah Anda membuat client ID, jalankan describe klien OAuth untuk mendapatkan clientID yang dihasilkan.

    2. Jika Anda memiliki clientID, jalankan update klien OAuth untuk mengupdate allowed-redirect-uris menjadi berikut ini: https://iap.googleapis.com/v1/oauth/clientIds/$CLIENT_ID:handleRedirect.

      Dengan CLIENT_ID adalah clientID yang diambil di langkah sebelumnya.

    3. Setelah Anda membuat rahasia klien, jalankan describe klien OAuth kredensial untuk mendapatkan clientSecret yang dihasilkan.

    Simpan clientId dan clientSecret karena Anda akan membutuhkannya nanti langkah.

Mengaktifkan IAP untuk menggunakan Workforce Identity Federation

console

  1. Di Konsol Google Cloud, buka halaman IAP.
    Buka halaman IAP
  2. Pilih project. Proyek harus berada di organisasi yang sama dengan kumpulan tenaga kerja yang telah Anda buat sebelumnya. Proyek tidak harus menjadi project tempat Anda membuat client ID dan rahasia klien OAuth.
  3. Klik tab Applications, lalu cari aplikasi yang ingin ingin membatasi akses untuk menggunakan IAP.
  4. Di kolom IAP, alihkan tombol ke Aktif.

gcloud

Untuk menggunakan gcloud CLI untuk mengaktifkan IAP, ikuti prosedur untuk layanan yang berlaku:

API

  1. Buat file settings.json.

    cat << EOF > settings.json
    {
    "iap":
      {
        "enabled":true,
     }
    }
    EOF
    
  2. Mengaktifkan IAP di App Engine.

    curl -X PATCH \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -d @settings.json \
    "https://appengine.googleapis.com/v1/apps/PROJECT_ID?updateMask=iap.enabled"
    

    Untuk mengaktifkan IAP pada Compute Engine, gunakan URL berikut: https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/REGION/backendServices/BACKEND_SERVICE_NAME?updateMask=iap.enabled.

Memperbarui setelan IAP

Untuk mengonfigurasi IAP agar dapat menggunakan Workforce Identity Federation, Anda harus konfigurasikan setelan berikut:

  • WorkforceIdentitySettings: Client ID dan rahasia klien OAuth yang dibuat sebelumnya.
  • IdentitySources: Sumber identitas.

Untuk informasi selengkapnya, lihat IAP API.

gcloud

  1. Dengan menggunakan contoh berikut sebagai referensi, buat iap_settings.yaml .

    CLIENT_ID=clientId
    CLIENT_SECRET=clientSecret
    WORKFORCE_POOL_NAME=locations/global/workforcePools/test-pool
    cat <<EOF > iap_settings.yaml
    access_settings:
      identity_sources: ["WORKFORCE_IDENTITY_FEDERATION"]
      workforce_identity_settings:
        workforce_pools: ["$WORKFORCE_POOL_NAME"]
        oauth2:
          client_id: "$CLIENT_ID"
          client_secret: "$CLIENT_SECRET"
    EOF
    
  2. Jalankan perintah berikut untuk memperbarui setelan IAP untuk sumber daya Anda.

    gcloud iap settings set iap_settings.yaml --project=PROJECT --resource-type=RESOURCE_TYPE --service=SERVICE
    

    Ganti kode berikut:

    • PROJECT: Project ID.
    • RESOURCE_TYPE: Jenis resource IAP. Tujuan jenis resource harus app-engine, iap_web, compute, organization, atau folder.
    • SERVICE: Nama layanan. Ini bersifat opsional untuk app-engine dan compute.

    Untuk mengetahui detail tentang perintah ini, lihat gcloud iap settings set.

API

  1. Dengan menggunakan contoh berikut sebagai referensi, buat iap_settings.json setelan.

    CLIENT_ID=clientId
    CLIENT_SECRET=clientSecret
    WORKFORCE_POOL_NAME=locations/global/workforcePools/test-pool
    cat <<EOF > iap_settings.json
    {
       "access_settings": {
         "identity_sources": ["WORKFORCE_IDENTITY_FEDERATION"],
         "workforce_identity_settings": {
           "workforce_pools": ["$WORKFORCE_POOL_NAME"],
           "oauth2": {
             "client_id": "$CLIENT_ID",
             "client_secret": "$CLIENT_SECRET",
           }
        }
      }
    }
    EOF
    
  2. Gunakan gcloud CLI untuk mendapatkan nama resource, lalu salin RESOURCE_NAME dari output karena Anda akan memerlukannya di langkah selanjutnya.

    gcloud iap settings get \
        --project=PROJECT \
        --resource-type=RESOURCE_TYPE \
        --service=SERVICE
    

    Ganti kode berikut:

    • PROJECT: Project ID.
    • RESOURCE_TYPE: Jenis resource IAP. Tujuan jenis resource harus app-engine, iap_web, compute, organization, atau folder.
    • SERVICE: Nama layanan. Ini bersifat opsional untuk app-engine dan compute.
  3. Ganti RESOURCE_NAME di perintah berikut dengan RESOURCE_NAME dari langkah sebelumnya.

    curl -X PATCH \
     -H "Authorization: Bearer $(gcloud auth print-access-token)" \
     -H "Accept: application/json" \
     -H "Content-Type: application/json" \
     -d @iap_settings.json \
    "https://iap.googleapis.com/v1/RESOURCE_NAME:iapSettings?updateMask=iapSettings.accessSettings.identitySources,iapSettings.accessSettings.workforceIdentitySettings.workforcePools,iapSettings.accessSettings.workforceIdentitySettings.oauth2.clientId,iapSettings.accessSettings.workforceIdentitySettings.oauth2.clientSecret" 
    

Memberikan akses ke resource yang diamankan oleh IAP

Untuk mengakses sumber daya yang diamankan oleh IAP, pengguna akhir harus memiliki Pengguna Aplikasi Web yang Diamankan IAP pada resource. Anda dapat memberikan peran IAP-Secured Web App User kepada satu pengguna (utama) atau sekumpulan pengguna (kumpulan utama, yang memetakan ke grup, atribut tertentu, atau keseluruhan kumpulan pengguna).

Akses tidak terbatas ke resource yang diamankan oleh IAP tidak didukung.

console

  1. Di Konsol Google Cloud, buka halaman IAP.
    Buka halaman IAP
  2. Pilih resource yang ingin diamankan dengan IAP.
  3. Klik Add Principal, lalu tambahkan ID utama grup atau individu yang ingin Anda beri Peran IAM untuk resource.
  4. Di bagian Assign roles, pilih IAP-Secured Web App User.
  5. Klik Tambahkan.

gcloud

Jalankan perintah berikut.

gcloud iap web add-iam-policy-binding \
    --member=PRINCIPAL_IDENTIFIER \
    --role='roles/iap.httpsResourceAccessor' \
    --project=PROJECT_ID \
    --resource-type=RESOURCE_TYPE \
    --service=SERVICE \
    --condition=CONDITION

Ganti yang berikut :

  • PRINCIPAL_IDENTIFIER: ID utama.
  • PROJECT_ID: Project ID.
  • RESOURCE_TYPE: Jenis resource IAP, yang dapat menjadi app-engine atau backend-services.
  • SERVICE: (Opsional) Nama layanan.
  • CONDITION: (Opsional) Kondisi IAM. Berikut adalah contoh kondisi yang dikonfigurasi dengan tingkat akses:
expression="accessPolicies/12345678/accessLevels/iap_test_access_level" in request.auth.access_levels,title=iap-test-access-level,description=only access in weekdays

API

Metode ini tidak direkomendasikan karena berhubungan dengan seluruh Kebijakan IAM resource. Error dapat menghapus kebijakan dari resource.

  1. Mendapatkan binding kebijakan IAM yang ada.

    curl -X POST \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Accept: application/json" \
      -H "Content-Type: application/json" \
      -d {} \
    "https://iap.googleapis.com/v1/RESOURCE_NAME:getIamPolicy" -o iam_policy_bindings.json
    

    Ganti RESOURCE_NAME dengan RESOURCE_NAME yang Anda dapatkan di langkah sebelumnya.

  2. Ke file iam_policy_bindings.json yang Anda dapatkan dari hapus baris versi dan etag, lalu tambahkan binding yang Anda inginkan untuk ditambahkan untuk ID utama. Untuk informasi selengkapnya, lihat Memahami kebijakan izin.

    {
      "bindings": [
        {
          // existing bindings
        },
        {
          "role": "roles/iap.httpsResourceAccessor",
          "members": [
          "principal://iam.googleapis.com/locations/global/workforcePools/iap-test-pool/subject/iap-test-subject"
          ],
          "condition": {
            "expression": "\"accessPolicies/12345678/accessLevels/iap_test_access_level\" in request.auth.access_levels",
            "title": "iap-test-access-level",
            "description": "only access in week days"
          }
        }
      ]
    }
    
  3. Memperbarui binding kebijakan IAM.

    curl -X POST \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Accept: application/json" \
      -H "Content-Type: application/json" \
      -d "{"policy":$(cat iam_policy_bindings.json)}" \
    "https://iap.googleapis.com/v1/RESOURCE_NAME:setIamPolicy"
    

    Ganti RESOURCE_NAME dengan RESOURCE_NAME yang Anda dapatkan di langkah sebelumnya.

Lihat GetIamPolicy dan SetIamPolicy untuk mengetahui informasi selengkapnya.

(Opsional) Menyiapkan akses kontekstual

Anda juga dapat menyiapkan aturan akses kontekstual untuk otorisasi lanjutan.

Untuk menyiapkan tingkat akses, lihat Membuat dan menerapkan tingkat akses. Tingkat akses berdasarkan informasi perangkat tidak tersedia saat menggunakan Workforce Identity Federation. Anda masih dapat menggunakan akses berbasis konteks permintaan level dengan kondisi pada alamat IP, serta waktu dan tanggal.

Batasan saat bekerja dengan kumpulan tenaga kerja

  • Untuk setiap aplikasi yang mendukung IAP, hanya satu kumpulan tenaga kerja yang dapat dikonfigurasi, dan kumpulan tenaga kerja hanya boleh berisi satu penyedia.
  • Kumpulan tenaga kerja, ID dan rahasia klien OAuth, dan Semua aplikasi yang mendukung IAP harus berada dalam organisasi yang sama.
  • Tingkat akses untuk informasi terkait perangkat tidak didukung.
  • Hanya konfigurasi setelan IAP berikut yang didukung:
  • Akses terprogram dengan Workforce Identity Federation tidak didukung.