Menyesuaikan IAP

Artikel ini menjelaskan cara menyesuaikan setelan Identity-Aware Proxy (IAP). Dengan setelan ini, Anda dapat mengontrol perilaku, termasuk:

  • Kompatibilitas dengan GKE Enterprise dan Istio di Google Kubernetes Engine.
  • Penanganan permintaan preflight CORS.
  • Cara pengguna diautentikasi.
  • Halaman error yang ditampilkan kepada pengguna saat akses ditolak.

Mengelola setelan

Anda dapat melihat dan memperbarui setelan IAP di load balancer dan aplikasi App Engine menggunakan konsol Google Cloud, IAP API, atau Google Cloud CLI.

Untuk memperbarui setelan IAP di semua resource, termasuk folder, project, dan organisasi, gunakan Google Cloud CLI atau API.

Untuk mengelola setelan di IAP:

Konsol

Untuk melihat dan mengubah setelan menggunakan konsol Google Cloud:

  1. Buka halaman Identity-Aware Proxy.
    Buka halaman Identity-Aware Proxy
  2. Temukan referensi Anda di tab APPLICATIONS.
  3. Buka menu tindakan lainnya , lalu klik Setelan.
  4. Klik Simpan.

gcloud

Untuk mendapatkan dan mengubah setelan menggunakan Google Cloud CLI, gunakan perintah gcloud iap settings get dan gcloud iap settings set seperti yang ditunjukkan di bawah ini:

  • Untuk mendapatkan setelan project, folder, atau organisasi, gunakan perintah berikut. Untuk mengonfigurasi setelan IAP menggunakan konsol Google Cloud atau gcloud CLI, lihat Menyesuaikan IAP.
gcloud iap settings get --project=PROJECT-ID
gcloud iap settings get --folder=FOLDER-ID
gcloud iap settings get --organization=ORGANIZATION-ID
  • Untuk mendapatkan setelan jenis resource IAP tertentu dalam project:
gcloud iap settings get --project=PROJECT-ID \
  --resource-type=RESOURCE-TYPE-NAME
  • Untuk menetapkan setelan untuk project, folder, atau organisasi, atau jenis resource IAP dalam project, buat file JSON atau YAML yang berisi setelan baru yang diinginkan dan tentukan jalur ke file tersebut. Lihat topik gcloud iap settings set untuk mengetahui informasi selengkapnya:
gcloud iap settings set SETTING_FILE --project=PROJECT-ID \
  --resource-type=RESOURCE-TYPE-NAME

API

Untuk mendapatkan dan mengubah setelan menggunakan IAP API, buat permintaan menggunakan kata kerja HTTP GET atau PATCH ke endpoint resource yang diinginkan di Google Cloud. Gabungkan akhiran jalur :iapSettings, jalur resource (seperti yang dijelaskan dalam Resource dan izin), dan metode HTTP yang sesuai untuk mendapatkan atau mengubah setelan. Lihat getIapSettings() dan updateIapSettings() untuk mengetahui informasi selengkapnya:

  • Untuk mendapatkan atau menetapkan setelan untuk jenis resource IAP tertentu dalam project:
https://iap.googleapis.com/v1/projects/PROJECT-ID/iap_web/appengine-APP-ID/services/SERVICE-ID/versions/VERSION-ID:iapSettings
  • Untuk mendapatkan atau menetapkan setelan project:
https://iap.googleapis.com/v1/projects/PROJECT-ID:iapSettings
  • Untuk mendapatkan atau menetapkan setelan untuk folder:
https://iap.googleapis.com/v1/folders/FOLDER-ID:iapSettings
  • Untuk mendapatkan atau menetapkan setelan untuk organisasi:
https://iap.googleapis.com/v1/organizations/ORGANIZATION-ID:iapSettings

Memahami kontrol akses untuk setelan

Izin tertentu diperlukan untuk melihat dan mengubah setelan IAP. Tabel di bawah ini mencantumkan izin yang diperlukan untuk membaca dan mengubah setelan untuk setiap jenis resource. Lihat Resource dan izin untuk mengetahui deskripsi berbagai jenis resource.

Resource Izin untuk melihat setelan Izin untuk mengubah setelan
Organisasi iap.organizations.getSettings iap.organizations.updateSettings
Folder iap.folders.getSettings iap.folders.updateSettings
Project iap.projects.getSettings iap.projects.updateSettings
Semua layanan web iap.web.getSettings iap.web.updateSettings
Jenis layanan web iap.webTypes.getSettings iap.webTypes.updateSettings
Layanan web iap.webServices.getSettings iap.webServices.updateSettings
Versi Layanan Web iap.webServiceVersions.getSettings iap.webServiceVersions.updateSettings

Peran IAP Settings Admin (roles/iap.settingsAdmin) memberikan semua izin ini, begitu juga dengan Project Editor (roles/editor). Project Viewer (roles/viewer) memberikan semua izin getSettings.

Untuk mempelajari lebih lanjut cara memberikan peran IAM, lihat Memberikan, mengubah, dan mencabut akses.

Menyesuaikan setelan IAP

IAP menyediakan setelan penyesuaian berikut:

Kolom Deskripsi
access_settings.cors_settings.allow_http_options Mengontrol HTTP OPTIONS (preflight CORS)
access_settings.oauth_settings.login_hint Menyederhanakan login untuk pengguna domain G Suite
application_settings.access_denied_page_settings.access_denied_page_uri Menampilkan halaman error kustom saat akses ditolak
application_settings.csm_settings.rctoken_aud Mengeluarkan RCToken GKE Enterprise dan Istio
access_settings.gcip_settings Mengautentikasi dengan Identity Platform
access_settings.ReauthSettings Tetapkan kebijakan autentikasi ulang. Untuk mengetahui detailnya, lihat Mengonfigurasi autentikasi ulang

Anda dapat menerapkan setelan di level project, atau di level resource IAP yang lebih rendah.

Anda dapat mengonfigurasi setelan untuk resource IAP berbasis web, tetapi bukan resource yang diakses dengan IAP untuk penerusan TCP.

Dengan menggunakan access_settings.cors_settings.allow_http_options sebagai contoh, Anda dapat mengonfigurasi setelan penyesuaian sebagai berikut:

YAML

access_settings:
  cors_settings:
    allow_http_options: "false"

JSON

{
  "access_settings": {
    "cors_settings": {
      "allow_http_options": "false"
    }
  }
}

Bagian berikut memberikan informasi selengkapnya tentang setiap setelan.

Mengizinkan permintaan OPTIONS HTTP (preflight CORS)

Kolom Nilai default
access_settings.cors_settings.allow_http_options false

Kebijakan origin yang sama web memblokir browser agar tidak mengirim permintaan AJAX antarsitus. Secara default, JavaScript di halaman yang ditayangkan dari satu origin tidak dapat menggunakan AJAX untuk mengirim permintaan ke aplikasi yang diamankan dengan IAP yang dihosting di origin yang berbeda.

Dalam beberapa kasus, browser akan otomatis mencoba permintaan, tetapi menghapus konten respons jika tidak menyertakan header Access-Control-Allow-Origin. Untuk mengizinkan jenis permintaan ini, sertakan header ini dalam respons aplikasi Anda.

Dalam kasus lain, browser akan mengirim permintaan preflight CORS, jenis permintaan OPTIONS HTTP, sebelum mengirim permintaan lintas origin. Jika aplikasi Anda tidak merespons dengan respons preflight yang sesuai (berisi header respons Access-Control-* yang diperlukan), browser akan memblokir permintaan dengan error. Selain itu, karena permintaan pra-penerbangan tidak dikirim dengan kredensial autentikasi apa pun (seperti cookie sesi IAP), IAP juga akan merespons dengan error.

Untuk mengizinkan permintaan ini:

  1. Tambahkan kode ke aplikasi Anda yang merespons permintaan OPTIONS.

  2. Ubah setelan access_settings.cors_settings.allow_http_options menjadi true agar IAP meneruskan permintaan OPTIONS ke aplikasi Anda.

Mengautentikasi menggunakan domain Google Workspace

Kolom Nilai default
access_settings.oauth_settings.login_hint ""

Jika hanya anggota domain Google Workspace tertentu yang akan menggunakan aplikasi Anda, Anda dapat mengonfigurasi IAP untuk mengoptimalkan alur autentikasi. Hal ini memiliki beberapa manfaat:

  • Jika pengguna login dengan beberapa akun (seperti akun kerja dan akun pribadi), sistem akan otomatis memilih akun kerja mereka, bukan menampilkan UI pemilihan akun.

  • Jika pengguna tidak login ke Akun Google-nya, UI login akan otomatis mengisi bagian domain alamat email mereka (artinya, pengguna hanya perlu mengetik alice, bukan alice@example.com, misalnya).

  • Jika domain Google Workspace Anda dikonfigurasi untuk menggunakan penyedia single sign-on pihak ketiga, sistem akan menampilkan halaman login kustom tersebut, bukan halaman login Google.

Untuk mengaktifkan perilaku ini, tetapkan nilai access_settings.oauth_settings.login_hint ke nama domain Google Workspace Anda (seperti example.com). Kepemilikan domain harus telah diverifikasi: Anda tidak dapat menggunakan domain DNS internet arbitrer yang Anda miliki. (Domain yang telah ditambahkan sebagai domain primer atau sekunder Google Workspace telah diverifikasi sehingga dapat digunakan di sini.)

Jika perlu mengautentikasi pengguna di luar domain, Anda dapat menggunakan autentikasi terprogram.

Untuk mengetahui informasi selengkapnya, lihat dokumentasi OpenID Connect.

Menetapkan halaman error akses ditolak kustom

Kolom Nilai default
application_settings.access_denied_page_settings.access_denied_page_uri ""

Anda dapat menetapkan URL di kolom ini yang mengalihkan pengguna ke halaman kustom, bukan halaman error IAP default setiap kali akses ditolak oleh kebijakan.

Anda juga dapat menyematkan URL pemecahan masalah dengan fitur ini. Untuk informasi selengkapnya, lihat Mengaktifkan URL pemecahan masalah untuk halaman error Akses Ditolak kustom.

Mengeluarkan ID mesh RCToken GKE Enterprise dan Istio

Kolom Nilai default
application_settings.csm_settings.rctoken_aud ""

Jika menggunakan Istio di GKE, Anda dapat mengonfigurasi IAP untuk menghasilkan RCToken yang kompatibel dengan Istio. Jika kolom ini ditetapkan ke string yang tidak kosong, IAP akan menambahkan header HTTP Ingress-Authorization yang berisi RCToken. Klaim aud akan ditetapkan ke nilai kolom.

Melakukan autentikasi dengan Identity Platform

Kolom Nilai default
access_settings.gcip_settings null

Secara default, IAP menggunakan sistem identitas native Google. Jika kolom ini ditetapkan, IAP akan menggunakan Identity Platform untuk mengautentikasi pengguna.

Memahami pewarisan setelan dalam hierarki resource

IAP selalu mengevaluasi permintaan untuk versi layanan web tertentu. Jenis resource ini berada di level terendah hierarki resource, yang terlihat seperti ini:

- Organization
  - Folder
    - Project
      - All web services
        - Web service type
          - Web service
            - Web service version

Untuk menentukan setelan yang akan diterapkan untuk versi layanan web, IAP dimulai dengan kumpulan nilai default, lalu melacak hierarki dari atas ke bawah. Setelan diterapkan saat ditemukan, sehingga nilai yang ditetapkan pada tingkat yang lebih rendah akan menggantikan nilai yang ditetapkan pada tingkat yang lebih tinggi. Misalnya, jika access_settings.cors_settings.allow_http_options ditetapkan ke true di tingkat project, tetapi false di tingkat layanan, nilai efektifnya adalah false.

Lihat Resource dan izin untuk mempelajari hierarki resource IAP lebih lanjut.