Menggunakan klien OAuth kustom dengan IAP

Dokumen ini menjelaskan kapan dan cara menggunakan klien OAuth kustom untuk Identity-Aware Proxy (IAP).

Secara default, IAP menggunakan klien OAuth yang dikelola Google untuk mengautentikasi pengguna. Klien OAuth yang dikelola Google hanya dapat digunakan untuk mengelola akses bagi pengguna internal yang berada dalam organisasi.

Anda harus menggunakan konfigurasi OAuth kustom untuk melakukan hal berikut:

  • Mengelola akses ke aplikasi yang mendukung IAP untuk pengguna eksternal yang berada di luar organisasi Anda.
  • Mengelola akses ke aplikasi web yang ada di project yang tidak ada di Google Cloud organisasi.
  • Menampilkan informasi merek kustom di layar izin selama autentikasi.

Anda dapat mengonfigurasi klien OAuth kustom di IAP atau langsung di platform Anda.

Saat menggunakan klien OAuth kustom, Anda harus mengonfigurasi layar izin OAuth. Agar branding kustom muncul di layar izin, Anda harus mengirimkan aplikasi untuk verifikasi Google. Untuk mengetahui informasi selengkapnya tentang proses verifikasi, lihat Menyiapkan layar izin OAuth.

Saat mengonfigurasi klien OAuth kustom, Anda bertanggung jawab untuk membuat dan mengelola kredensial, yang mencakup menyimpan rahasia klien secara aman dan membagikannya kepada klien yang berwenang jika diperlukan.

Membandingkan klien OAuth yang dikelola Google dan klien OAuth kustom

Klien OAuth yang dikelola Google tidak dapat mengakses aplikasi yang dilindungi IAP secara terprogram. Namun, aplikasi yang dilindungi IAP yang menggunakan klien OAuth yang dikelola Google masih dapat diakses secara terprogram menggunakan klien OAuth terpisah yang dikonfigurasi melalui setelan programmatic_clients atau JWT akun layanan.

Tabel berikut memberikan perbandingan antara klien OAuth yang dikelola Google dan klien OAuth kustom.

Klien OAuth yang dikelola Google Klien OAuth kustom
Pengguna Khusus internal Internal dan Eksternal
Merek Google Cloud brand Merek milik pelanggan
Konfigurasi OAuth Dikonfigurasi oleh Google Pelanggan dikonfigurasi
Kredensial OAuth Dikelola Google Dikelola pelanggan
Akses aplikasi Alur browser saja Alur browser dan Akses terprogram

Mengonfigurasi halaman branding

Untuk mengonfigurasi halaman branding kustom menggunakan konsol Google Cloud , lakukan hal berikut:

  1. Di konsol Google Cloud , buka halaman Branding OAuth:

    Buka Branding

  2. Klik Mulai.

  3. Di Nama aplikasi, masukkan nama aplikasi untuk layar izin.

  4. Di bagian Email dukungan pengguna, masukkan alamat email administrator untuk dukungan.

  5. Untuk Audiens, pilih Internal untuk membatasi akses ke pengguna dalam organisasi Anda atau Eksternal untuk mengizinkan akses ke pengguna di luar organisasi Anda.

  6. Di Informasi kontak, masukkan email administrator yang akan dihubungi untuk aplikasi yang dilindungi oleh klien OAuth. Anda akan mengonfigurasi klien OAuth pada langkah berikutnya.

  7. Untuk membuat konfigurasi OAuth, klik Buat.

Mengonfigurasi klien OAuth kustom di IAP

Bagian ini menjelaskan cara menyiapkan klien OAuth kustom di IAP.

Buat klien OAuth kustom

Bagian ini menjelaskan cara membuat klien OAuth kustom menggunakan konsolGoogle Cloud . Anda dapat menyiapkan klien OAuth IAP kustom di tingkat mana pun dalam hierarki resource.

Untuk membuat klien OAuth kustom untuk resource menggunakan konsol Google Cloud , lakukan hal berikut:

  1. Di konsol Google Cloud , buka halaman IAP.

    Buka IAP

  2. Di tab Aplikasi, dalam daftar resource, temukan resource yang ingin Anda konfigurasi.

    Untuk resource tingkat project, lakukan hal berikut:

    • Buat klien OAuth menggunakan Google Cloud konsol:

      1. Di kolom Tindakan, klik Opsi lainnya > Setelan.

      2. Di dialog Setelan, pilih OAuth Kustom.

      3. Jika Anda belum mengonfigurasi layar izin, lakukan langkah berikut:

        1. Klik Konfigurasi layar izin.

        2. Ikuti petunjuk untuk mengonfigurasi halaman branding yang diberikan sebelumnya dalam dokumen ini.

      4. Pada dialog setelan IAP, klik Buat Otomatis Kredensial. IAP membuat klien dan rahasia OAuth baru untuk digunakan dengan resource ini. Di Google Auth Platform, kolom Authorized redirect URIs berisi entri dalam format berikut:

        https://iap.googleapis.com/v1/oauth/clientIds/CLIENT_ID:handleRedirect
      5. Untuk mengakses ID dan rahasia klien, klik Download kredensial. Kredensial disimpan dalam file berformat JSON. Karena file tersebut berisi kredensial sensitif untuk mengakses resource, pastikan file tersebut diamankan atau dihapus.

      6. Untuk menyimpan konfigurasi OAuth IAP dan menerapkan klien OAuth ke IAP, klik Simpan.

Menerapkan klien OAuth kustom ke IAP

Bagian ini menjelaskan cara menerapkan klien OAuth ke IAP. Anda dapat menggunakan metode ini, bukan menerapkan klien secara langsung di platform Anda.

  1. Untuk membuat klien OAuth kustom, ikuti Google Cloud petunjuk konsol yang diberikan sebelumnya dalam dokumen ini.

  2. Terapkan klien OAuth kustom.

    gcloud

    Untuk menerapkan klien OAuth kustom menggunakan gcloud CLI, lakukan langkah berikut:

    1. Buat file YAML setelan.

      cat << EOF > iap-oauth.yaml
      accessSettings:
      oauthSettings:
        clientId: CLIENT_ID
        clientSecret: CLIENT_SECRET
      EOF
      

      Ganti kode berikut:

      • CLIENT_ID: ID klien dari kredensial OAuth yang Anda buat sebelumnya.
      • CLIENT_SECRET: Rahasia klien dari kredensial OAuth yang Anda buat sebelumnya.
    2. Untuk menyetel konfigurasi OAuth, lakukan salah satu hal berikut:

      • Untuk menetapkan konfigurasi OAuth di tingkat project, jalankan perintah berikut:
      gcloud iap settings set iap-oauth.yaml

      Untuk menyetel konfigurasi di tingkat hierarki resource lain, gunakan salah satu flag berikut, bukan flag --project. Menetapkan klien OAuth kustom di tingkat hierarki resource memberikan branding kustom yang sama untuk semua layanan yang berjalan dalam tingkat tersebut.

      * <code>--folder=<var>FOLDER_ID</var></code>
      * <code>--organization=<var>ORGANIZATION_ID</var></code>
      
      • Untuk menyetel konfigurasi pada layanan tertentu, jalankan perintah berikut:
      gcloud iap settings set iap-oauth.yaml \
          --project=PROJECT_ID \
          --resource-type= RESOURCE_TYPE \
          --region=REGION \
          --service=SERVICE_NAME

      Ganti kode berikut:

      • PROJECT_ID: ID resource project. Untuk menyetel konfigurasi di tingkat lain, gunakan salah satu flag berikut, bukan flag --project:

        • --folder=FOLDER_ID
        • --organization=ORGANIZATION_ID
      • RESOURCE_TYPE: ganti dengan salah satu jenis resource berikut, bergantung pada resource:

        • app-engine
        • backend-services
        • cloud-run
        • compute
        • folder
        • forwarding-rule
        • iap_web
        • organization
      • REGION: region tempat Anda menjalankan layanan Cloud Run.

      • SERVICE_NAME: Nama layanan Anda.

    Terraform

    Untuk menerapkan klien OAuth kustom menggunakan Terraform, lakukan hal berikut:

    resource "google_iap_settings" "iap_settings" {
    name = IAP_RESOURCE_NAME
    access_settings {
      oauth_settings {
          oauth_client_id = CLIENT_ID
          oauth_client_secret = CLIENT_SECRET
      }
    }
    }
    

    Ganti kode berikut:

    • IAP_RESOURCE_NAME: nama resource iap_settings untuk layanan, yang memiliki format berikut: projects/PROJECT_NUMBER/iap_web/REGION/services/SERVICE_NAME
    • CLIENT_ID: ID klien dari kredensial OAuth yang Anda buat sebelumnya
    • CLIENT_SECRET: rahasia klien dari kredensial OAuth yang Anda buat sebelumnya

    REST API

    1. Buat file JSON setelan.

      cat << EOF > iap-oauth.json
      {
      "accessSettings": {
        "oauthSettings": {
          "clientId": "CLIENT_ID",
          "clientSecret": "CLIENT_SECRET"
        }
      }
      }
      EOF

      Ganti kode berikut:

      • CLIENT_ID: ID klien dari kredensial OAuth yang Anda buat sebelumnya.
      • CLIENT_SECRET: Rahasia klien dari kredensial OAuth yang Anda buat sebelumnya.
    2. Terapkan file setelan.

      curl -X PATCH \
      -H "Authorization: Bearer $(gcloud auth print-access-token)"
      -H "Content-Type: application/yaml" \
      "https://iap.googleapis.com/v1/projects/cb-managed-ingress-demo/iap_web/forwarding_rule-us-central1/services/psc-fr:iapSettings?update_mask=iapSettings.accessSettings.oauthSettings.oauthClientId,iapSettings.accessSettings.oauthSettings.oauthClientSecret" \
      -d @iap-oauth.json
      

Untuk menguji bahwa aplikasi web Anda dilindungi oleh IAP dengan klien OAuth, lihat Menguji akses.

Konfigurasi klien OAuth kustom lama pada resource

Bagian berikut menjelaskan metode lama untuk mengonfigurasi klien OAuth kustom di IAP untuk jenis resource tertentu. Anda dapat melewati bagian ini jika menggunakan metode yang dijelaskan sebelumnya dalam dokumen ini.

App Engine

Bagian ini menjelaskan cara mengaktifkan klien OAuth kustom di App Engine.

gcloud

Sebelum menyiapkan project dan IAP, Anda memerlukan gcloud CLI versi terbaru. Untuk mengetahui petunjuk cara menginstal gcloud CLI, lihat Menginstal gcloud CLI.

  1. Untuk mengautentikasi, gunakan Google Cloud CLI dan jalankan perintah berikut.
    gcloud auth login
  2. Untuk login, ikuti URL yang muncul.
  3. Setelah Anda login, salin kode verifikasi yang muncul dan tempelkan di command line.
  4. Jalankan perintah berikut untuk menentukan project yang berisi resource yang ingin Anda lindungi dengan IAP.
    gcloud config set project PROJECT_ID
  5. Ikuti petunjuk di Membuat klien OAuth untuk IAP untuk mengonfigurasi layar izin OAuth dan membuat klien OAuth.
  6. Simpan ID dan rahasia klien OAuth.
  7. Untuk mengaktifkan IAP, jalankan perintah berikut.
    gcloud iap web enable \
        --oauth2-client-id=CLIENT_ID \
        --oauth2-client-secret=CLIENT_SECRET \
        --resource-type=app-engine

Setelah mengaktifkan IAP, Anda dapat menggunakan gcloud CLI untuk mengubah kebijakan akses IAP menggunakan peran IAM roles/iap.httpsResourceAccessor. Pelajari lebih lanjut cara mengelola peran dan izin.

API

  1. Ikuti petunjuk di Membuat klien OAuth untuk IAP guna mengonfigurasi layar izin OAuth dan membuat klien OAuth.

  2. Simpan ID dan rahasia klien OAuth.

  3. Jalankan perintah berikut untuk menyiapkan file settings.json.

    cat << EOF > settings.json
    {
    "iap":
      {
        "enabled": true,
        "oauth2ClientId": "CLIENT_ID",
        "oauth2ClientSecret":" CLIENT_SECRET"
      }
    }
    EOF
    

  4. Jalankan perintah berikut untuk mengaktifkan IAP.

    curl -X PATCH \
    -H "Authorization: Bearer $(gcloud auth application-default 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"
    

Setelah mengaktifkan IAP, Anda dapat menggunakan Google Cloud CLI untuk mengubah kebijakan akses IAP menggunakan peran IAM roles/iap.httpsResourceAccessor. Pelajari lebih lanjut cara mengelola peran dan izin.

GKE

Bagian ini menjelaskan cara mengaktifkan klien OAuth kustom di GKE.

Mengonfigurasi BackendConfig

Jika menjalankan cluster GKE versi 1.24 atau yang lebih baru, Anda dapat mengonfigurasi IAP dan GKE menggunakan Kubernetes Gateway API. Lihat Mengonfigurasi IAP untuk mengetahui petunjuknya.

  1. Ikuti petunjuk di Membuat klien OAuth untuk IAP guna mengonfigurasi layar izin OAuth dan membuat klien OAuth.

  2. Buat Secret Kubernetes untuk membungkus klien OAuth.

    kubectl create secret generic MY_SECRET --from-literal=client_id=CLIENT_ID \
      --from-literal=client_secret=CLIENT_SECRET
    
    Ganti kode berikut:

    • MY_SECRET: Nama secret yang akan dibuat
    • CLIENT_ID: ID klien OAuth
    • CLIENT_SECRET: Rahasia klien OAuth

    Anda akan menerima konfirmasi, seperti output berikut, bahwa Secret berhasil dibuat:

    secret "MY_SECRET" created
    

  3. Tambahkan kredensial OAuth ke BackendConfig.

    apiVersion: cloud.google.com/v1
    kind: BackendConfig
    metadata:
      name: CONFIG_DEFAULT
      namespace: my-namespace
    spec:
    iap:
      enabled: true
      oauthclientCredentials:
        secretName: MY_SECRET
    

  4. Aktifkan IAP dengan mengaitkan port Layanan dengan BackendConfig Anda. Lihat Mengaitkan BackendConfig dengan Ingress Anda. Salah satu cara untuk membuat asosiasi ini adalah dengan menetapkan semua port untuk layanan secara default ke BackendConfig Anda, yang dapat Anda lakukan dengan menambahkan anotasi berikut ke resource Layanan Anda:

    metadata:
      annotations:
          beta.cloud.google.com/backend-config: '{"default": "CONFIG_DEFAULT"}}'
    

Setelah mengaktifkan IAP, Anda dapat menggunakan gcloud CLI untuk mengubah kebijakan akses IAP menggunakan peran IAM roles/iap.httpsResourceAccessor. Pelajari lebih lanjut cara mengelola peran dan izin.

Pemecahan masalah

Jika secretName yang Anda rujuk tidak ada atau tidak terstruktur dengan benar, salah satu pesan error berikut akan ditampilkan:

  • BackendConfig default/config-default is not valid: error retrieving secret "foo": secrets "foo" not found. Untuk mengatasi error ini, pastikan Anda telah membuat Secret Kubernetes dengan benar seperti yang dijelaskan di langkah 2.

  • BackendConfig default/config-default is not valid: secret "foo" missing client_secret data. Untuk mengatasi error ini, pastikan Anda telah membuat kredensial OAuth dengan benar. Selain itu, pastikan Anda mereferensikan kunci client_id dan client_secret yang benar.

Layanan backend penyeimbang beban

Untuk pengguna Compute Engine dan Cloud Run, bagian ini menjelaskan cara menyiapkan klien OAuth di IAP untuk layanan backend load balancer.

gcloud

Sebelum menyiapkan project dan IAP, Anda memerlukan gcloud CLI versi terbaru. Untuk mengetahui petunjuk cara menginstal gcloud CLI, lihat Menginstal gcloud CLI.

  1. Untuk mengautentikasi, gunakan Google Cloud CLI dan jalankan perintah berikut.
    gcloud auth login
  2. Untuk login, ikuti URL yang muncul.
  3. Setelah Anda login, salin kode verifikasi yang muncul dan tempelkan di command line.
  4. Jalankan perintah berikut untuk menentukan project yang berisi resource yang ingin Anda lindungi dengan IAP.
    gcloud config set project PROJECT_ID
  5. Ikuti petunjuk di Membuat klien OAuth untuk IAP. guna mengonfigurasi layar izin OAuth dan membuat klien OAuth.
  6. Simpan ID dan rahasia klien OAuth.
  7. Untuk mengaktifkan IAP, jalankan perintah yang tercakup secara global atau regional.

    Cakupan global
    gcloud compute backend-services update BACKEND_SERVICE_NAME \
        --global \
        --iap=enabled,oauth2-client-id=CLIENT_ID,oauth2-client-secret=CLIENT_SECRET
    Cakupan regional
    gcloud compute backend-services update BACKEND_SERVICE_NAME \
        --region REGION_NAME \
        --iap=enabled,oauth2-client-id=CLIENT_ID,oauth2-client-secret=CLIENT_SECRET
        

Setelah mengaktifkan IAP, Anda dapat menggunakan gcloud CLI untuk mengubah kebijakan akses IAP menggunakan peran IAM roles/iap.httpsResourceAccessor. Pelajari lebih lanjut cara mengelola peran dan izin.

API

  1. Ikuti petunjuk di Membuat klien OAuth untuk IAP guna mengonfigurasi layar izin OAuth dan membuat klien OAuth.

  2. Simpan ID dan rahasia klien OAuth.

  3. Jalankan perintah berikut untuk menyiapkan file settings.json.

    cat << EOF > settings.json
    {
    "iap":
      {
        "enabled": true,
        "oauth2ClientId": "CLIENT_ID",
        "oauth2ClientSecret": "CLIENT_SECRET"
      }
    }
    EOF
    

  4. Jalankan perintah berikut untuk mengaktifkan IAP.

    curl -X PATCH \
    -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -d @settings.json \
    "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/REGION/backendServices/BACKEND_SERVICE_NAME"
    

Setelah mengaktifkan IAP, Anda dapat menggunakan gcloud CLI untuk mengubah kebijakan akses IAP menggunakan peran IAM roles/iap.httpsResourceAccessor. Pelajari lebih lanjut cara mengelola peran dan izin.

Menguji akses

Setelah mengonfigurasi klien OAuth kustom, Anda dapat menguji bahwa IAP menggunakannya untuk melindungi layanan Anda dengan melakukan hal berikut:

  1. Di halaman IAP, di tab Aplikasi, lihat aplikasi yang dikelola IAP.

  2. Akses URL salah satu aplikasi. Jika Anda mengakses aplikasi untuk pertama kalinya sejak mengonfigurasi layar izin, Anda akan melihat layar izin yang Anda konfigurasi sebelumnya.