Menyesuaikan IAP

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

  • 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 pada aplikasi load balancer dan App Engine menggunakan Google Cloud Console, 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 APLIKASI.
  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 Google Cloud Console 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
  • Guna mendapatkan setelan untuk jenis resource IAP tertentu dalam project:
gcloud iap settings get --project=PROJECT-ID \
  --resource-type=RESOURCE-TYPE-NAME
  • Untuk menetapkan setelan 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 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 informasi selengkapnya:

  • Untuk mendapatkan atau menetapkan setelan 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

Perlu izin khusus 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 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 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 OPSI HTTP (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 Tampilkan halaman error khusus saat akses ditolak
application_settings.csm_settings.rctoken_aud Menerbitkan GKE Enterprise dan Istio RCTokens
access_settings.gcip_settings Melakukan Autentikasi dengan Identity Platform
access_settings.ReauthSettings Tetapkan kebijakan autentikasi ulang. Untuk mengetahui detailnya, lihat Mengonfigurasi autentikasi ulang

Anda dapat menerapkan setelan pada level project, atau pada 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 OPSI HTTP (preflight CORS)

Kolom Nilai default
access_settings.cors_settings.allow_http_options false

Kebijakan asal yang sama web memblokir browser agar tidak mengirim permintaan AJAX antar-situs. Secara default, JavaScript pada halaman yang disalurkan dari satu origin tidak dapat menggunakan AJAX untuk mengirim permintaan ke aplikasi yang diamankan dengan IAP yang dihosting di origin lain.

Dalam beberapa kasus, browser akan otomatis mencoba permintaan, tetapi akan 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 mengirimkan permintaan preflight CORS, suatu 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 preflight 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 sehingga 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 kerjanya, bukan menampilkan UI pemilihan akun.

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

  • 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 sudah diverifikasi: Anda tidak dapat menggunakan domain DNS internet arbitrer yang Anda miliki. (Domain yang telah ditambahkan sebagai domain primer atau sekunder Google Workspace diverifikasi sehingga dapat digunakan di sini.)

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

Untuk informasi selengkapnya, lihat dokumentasi OpenID Connect.

Menyetel halaman error akses kustom ditolak

Kolom Nilai default
application_settings.access_denied_page_settings.access_denied_page_uri ""

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

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

Memberikan ID mesh GKE Enterprise dan Istio RCToken

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.

Mengautentikasi 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 pada 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 pada versi layanan web, IAP dimulai dengan serangkaian nilai default, lalu mengikuti hierarki dari atas ke bawah. Setelan akan diterapkan begitu ditemukan, jadi 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 pada level project, tetapi false pada tingkat layanan, nilai efektif akan menjadi false.

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