Mengelola akses ke resource yang diamankan oleh IAP

Halaman ini menjelaskan cara mengelola akses individu atau grup ke resource yang diamankan Identity-Aware Proxy (IAP) di tingkat resource.

Ringkasan

IAP memungkinkan Anda mengonfigurasi kebijakan IAP untuk resource individual dan Cloud Run dalam project Google Cloud. Beberapa aplikasi dalam project dapat memiliki kebijakan akses yang berbeda. Hal ini termasuk project yang memiliki aplikasi Compute Engine, Google Kubernetes Engine, dan App Engine. Untuk aplikasi App Engine, setiap versi dan layanan dapat menerapkan kebijakan akses yang berbeda.

Untuk mengelola akses level project dan yang lebih tinggi, gunakan halaman admin IAM. Daftar pengguna yang memiliki akses ("prinsipal") di tingkat project berlaku untuk semua resource yang diamankan IAP dalam project.

Sebelum memulai

Sebelum memulai, Anda memerlukan hal-hal berikut:

  • Resource yang diamankan IAP tempat Anda ingin menambahkan akses individu atau grup.
  • Nama pengguna atau grup yang aksesnya ingin Anda tambahkan.

Mengaktifkan dan menonaktifkan IAP

Untuk mengaktifkan dan menonaktifkan IAP, izin tertentu diperlukan. Tabel berikut menunjukkan izin yang diperlukan untuk setiap jenis aplikasi.

Jenis aplikasi Perlu izin
App Engine appengine.applications.update
Compute Engine, Google Kubernetes Engine, atau Cloud Run compute.backendServices.update

Izin ini diberikan oleh peran seperti Project Editor, App Engine Admin, dan Compute Network Admin. Meskipun peran ini memungkinkan pengaktifan dan penonaktifan IAP, peran ini tidak memiliki izin yang diperlukan untuk mengubah kebijakan akses.

Selain itu, mengaktifkan IAP dengan konsol Google Cloud mungkin juga memerlukan izin clientauthconfig.clients.create dan clientauthconfig.clients.getWithSecret. Izin ini diberikan oleh peran Project Editor.

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

Mengelola akses di konsol Google Cloud

Untuk mengontrol akses ke resource yang diamankan IAP dengan konsol Google Cloud, ikuti proses untuk menambahkan atau menghapus akses.

Menambahkan akses

  1. Buka halaman Identity-Aware Proxy.
    Buka halaman Identity-Aware Proxy

  2. Pilih resource yang ingin Anda amankan dengan IAP. Pilihan resource berikut mengamankan sekumpulan resource yang ditetapkan:

    • Semua Layanan Web: Semua resource dalam project akan diamankan. Perhatikan bahwa hal ini tidak sama dengan memberikan akses tingkat project dengan halaman admin IAM. Pengguna yang diberi peran IAP Policy Admin di tingkat resource All Web Services hanya akan memiliki izin ke kebijakan IAP.

    • Layanan Backend: Semua layanan backend akan diamankan.

  3. Di Panel info sebelah kanan, tambahkan alamat email grup atau individu yang ingin Anda beri peran Identity and Access Management (IAM) untuk resource tersebut.

  4. Terapkan peran kebijakan akses ke akun utama dengan memilih dari peran berikut di dropdown Pilih peran:

    • Pemilik: Memberikan akses yang sama seperti IAP Policy Admin. Sebagai gantinya, gunakan peran IAP Policy Admin. Peran ini hanya mengizinkan modifikasi kebijakan, dan tidak memberikan akses ke aplikasi.

    • IAP Policy Admin: Memberikan hak administrator atas kebijakan IAP.

    • IAP-Secured Web App User: Memberikan akses ke aplikasi dan resource HTTPS lainnya yang menggunakan IAP.

    • Peninjau Keamanan: Memberikan izin untuk melihat dan mengaudit kebijakan IAP.

  5. Setelah selesai menambahkan alamat email dan menetapkan peran, klik Tambahkan

Hapus akses

  1. Buka halaman Identity-Aware Proxy.
    Buka halaman Identity-Aware Proxy
  2. Pilih resource yang diamankan dengan IAP.
  3. Di Panel info sebelah kanan, pilih bagian yang sesuai dengan peran yang ingin Anda hapus dari akun utama.
  4. Di bagian yang diperluas, klik Hapus di samping setiap nama pengguna atau grup yang peranannya ingin Anda hapus.
  5. Di dialog Hapus akun utama yang muncul, klik Hapus.

Mengelola akses dengan API

IAM menyediakan serangkaian metode standar untuk membuat dan mengelola kebijakan kontrol akses di resource Google Cloud.

Referensi dan izin

IAP API memungkinkan Anda menerapkan izin IAM ke setiap resource dalam project yang diamankan oleh IAP. Izin IAM yang diberikan pada tingkat tertentu berlaku untuk semua tingkat di bawahnya. Misalnya, izin yang diberikan di level project berlaku untuk semua resource Google Cloud dalam project. Akses untuk level project dan di atas dikelola di halaman admin IAM, tetapi akan ditampilkan di halaman admin IAP.

Pengguna memerlukan izin tertentu untuk mengakses aplikasi yang diamankan oleh IAP. Untuk memberikan izin ini, administrator dapat menggunakan API untuk memperbarui kebijakan IAM. Izin iap.webServiceVersions.accessViaIAP memberikan akses pengguna ke aplikasi. Jika Anda menggunakan IAP untuk mengontrol akses ke layanan administratif seperti SSH dan RDP, pengguna akan memerlukan izin iap.tunnelInstances.accessViaIAP.

Setiap resource IAP memiliki izin getIamPolicy dan setIamPolicy sendiri yang memberikan kemampuan untuk mengelola kebijakan akses untuk resource tersebut dan turunannya.

Untuk memanggil IAM API, buat panggilan dengan jalur URL ke resource. Berikut adalah contoh panggilan yang mendapatkan kebijakan IAM untuk versi layanan aplikasi App Engine.

https://iap.googleapis.com/v1/projects/PROJECT_NUMBER/iap_web/
appengine-APP_ID/services/SERVICE_ID/versions/VERSION_ID:getIamPolicy

Tabel berikut mencantumkan jenis resource yang didukung, serta izin yang diperlukan untuk memanggil IAM API.

Jenis resource Izin
Setiap aplikasi web yang diamankan IAP dalam project
Ini sama dengan kotak centang Semua Layanan Web di halaman admin IAP.

Jalur
https://iap.googleapis.com/v1/projects/PROJECT_NUMBER/iap_web
iap.web.getIamPolicy

iap.web.setIamPolicy
Setiap Layanan backend dalam project
Ini sama dengan kotak centang Layanan Backend di halaman admin IAP.

Jalur
Cakupan global:
https://iap.googleapis.com/v1/projects/
PROJECT_NUMBER/iap_web/compute

Cakupan regional:
https://iap.googleapis.com/v1/projects/
PROJECT_NUMBER/iap_web/compute-REGION_NAME
iap.webTypes.getIamPolicy

iap.webTypes.setIamPolicy
Setiap aturan penerusan di project
Izin untuk semua aturan penerusan di project.

Jalur
Cakupan global:
https://iap.googleapis.com/v1/projects/
PROJECT_NUMBER/iap_web/forwarding_rule

Cakupan regional:
https://iap.googleapis.com/v1/projects/
PROJECT_NUMBER/iap_web/forwarding_rule-REGION_NAME
iap.webTypes.getIamPolicy

iap.webTypes.setIamPolicy
Aplikasi App Engine
Ini sama dengan kotak centang Aplikasi App Engine di halaman admin IAP.

Jalur
https://iap.googleapis.com/v1/projects/
PROJECT_NUMBER/iap_web/appengine-APP_ID
iap.webTypes.getIamPolicy

iap.webTypes.setIamPolicy
Layanan backend Compute Engine
Jalur layanan backend dapat menentukan ID layanan backend atau nama layanan backend.

Jalur
Cakupan global:
https://iap.googleapis.com/v1/projects/
PROJECT_NUMBER/iap_web/compute/services/
BACKEND_SERVICE_ID or BACKEND_SERVICE_NAME

Cakupan regional:
https://iap.googleapis.com/v1/projects/
PROJECT_NUMBER/iap_web/compute-REGION_NAME/
services/BACKEND_SERVICE_ID or BACKEND_SERVICE_NAME
iap.webServices.getIamPolicy

iap.webServices.setIamPolicy
Aturan penerusan Compute Engine
Izin untuk aturan penerusan. Jalur aturan penerusan dapat menentukan ID aturan penerusan atau nama aturan penerusan.

Jalur
Cakupan global:
https://iap.googleapis.com/v1/projects/
PROJECT_NUMBER/iap_web/forwarding_rule/services/
FORWARDING_RULE_ID or FORWARDING_RULE_NAME

Cakupan regional:
https://iap.googleapis.com/v1/projects/
PROJECT_NUMBER/iap_web/forwarding_rule-REGION_NAME/
services/FORWARDING_RULE_ID or FORWARDING_RULE_NAME
iap.webServices.getIamPolicy

iap.webServices.setIamPolicy
Layanan aplikasi App Engine

Jalur
https://iap.googleapis.com/v1/projects/
PROJECT_NUMBER/iap_web/appengine-APP_ID/
services/APP_SERVICE_ID
iap.webServices.getIamPolicy

iap.webServices.setIamPolicy
An App Engine service version
Compute Engine doesn't support versioning.

Path
https://iap.googleapis.com/v1/projects/
PROJECT_NUMBER/iap_web/appengine-APP_ID/
services/APP_SERVICE_ID/versions/VERSION_ID
iap.webServiceVersions.getIamPolicy

iap.webServiceVersions.setIamPolicy
Setiap instance VM yang diamankan IAP dalam project
Ini sama dengan kotak centang Semua Resource Tunnel di halaman admin IAP.

Jalur
https://iap.googleapis.com/v1/projects/
PROJECT_NUMBER/iap_tunnel
iap.tunnel.getIamPolicy

iap.tunnel.setIamPolicy
Zona yang memiliki minimal satu instance VM
Ini sama dengan kotak centang nama zona di halaman admin IAP, misalnya, us-central1-c.

Jalur
https://iap.googleapis.com/v1/projects/
PROJECT_NUMBER/iap_tunnel/zones/ZONE_NAME
iap.tunnelZones.getIamPolicy

iap.tunnelZones.setIamPolicy
Setiap instance VM

Jalur
https://iap.googleapis.com/v1/projects/
PROJECT_NUMBER/iap_tunnel/zones/ZONE_NAME
/instances/INSTANCE_ID or INSTANCE_NAME
iap.tunnelInstances.getIamPolicy

iap.tunnelInstances.setIamPolicy
Region yang memiliki minimal satu grup tujuan, misalnya, us-central1

Jalur
https://iap.googleapis.com/v1/projects/
PROJECT_NUMBER/iap_tunnel/locations/REGION_NAME
iap.tunnelLocations.getIamPolicy

iap.tunnelLocations.setIamPolicy
Kelompok tujuan individual

Jalur
https://iap.googleapis.com/v1/projects/
PROJECT_NUMBER/iap_tunnel/locations/REGION_NAME
/destGroups/GROUP_NAME
iap.tunnelDestGroups.getIamPolicy

iap.tunnelDestGroups.setIamPolicy

Peran

Tabel berikut mencantumkan peran IAM IAP dengan daftar terkait semua izin khusus IAP yang disertakan dalam setiap peran. Untuk mengetahui informasi selengkapnya tentang peran IAM, lihat Mengelola Peran dan Izin.

Peran Mencakup izin Deskripsi
IAP-Secured Web App User (roles/iap.httpsResourceAccessor) iap.webServiceVersions.accessViaIAP Memberikan akses ke resource App Engine dan Compute Engine.
IAP-Secured Tunnel User (roles/iap.tunnelResourceAccessor) iap.tunnelInstances.accessViaIAP
iap.tunnelDestGroups.accessViaIAP
Memberikan akses ke instance VM yang diamankan oleh IAP.
IAP Policy Admin (roles/iap.admin) iap.web.getIamPolicy
iap.web.setIamPolicy
iap.webTypes.getIamPolicy
iap.webTypes.setIamPolicy
iap.webServices.getIamPolicy
iap.webServices.setIamPolicy
iap.webServiceVersions.getIamPolicy
iap.webServiceVersions.setIamPolicy
iap.tunnel.getIamPolicy
iap.tunnel.setIamPolicy
iap.tunnelZones.getIamPolicy
iap.tunnelZones.setIamPolicy
iap.tunnelInstances.getIamPolicy
iap.tunnelInstances.setIamPolicy
Memberikan hak administratif IAP untuk mengelola kebijakan akses IAP resource.

Mengelola akses dengan Google Cloud CLI

Menolak akses

Kebijakan tolak Identity and Access Management (IAM) memungkinkan Anda menetapkan batasan pada akses ke resource Google Cloud. Untuk mengetahui daftar skenario tempat kebijakan penolakan berguna, lihat kasus penggunaan.

Anda dapat membuat kebijakan penolakan dan menyertakan semua izin IAP dalam kebijakan tersebut. Untuk mengetahui daftar izin IAP yang dapat Anda tambahkan ke kebijakan tolak, lihat Izin yang didukung dalam kebijakan tolak dan telusuri iap.googleapis.com. Meskipun kebijakan penolakan dapat diterapkan ke izin IAP apa pun, efektivitasnya terkait dengan titik lampiran kebijakan penolakan.

Beberapa izin IAP hanya berlaku pada level resource tertentu, bukan pada turunannya. Misalnya,iap.organizations.getSettings memberikan akses ke getSettings di tingkat organisasi, bukan ke turunan organisasi. Artinya, admin harus mencantumkan semua izin terperinci yang relevan secara eksplisit saat membuat kebijakan tolak untuk menolak akses di titik lampiran dan turunannya.

Untuk mengetahui daftar lengkap izin terperinci tersebut, lihat Izin yang didukung dalam kebijakan tolak. Semua izin di FQDN iap.googleapis.com dan jenis resource iap.organizations, iap.folders, iap.projects, iap.web, iap.webTypes, iap.webServices, iap.webServicesVersions adalah izin terperinci.

Berikut adalah contoh kebijakan penolakan IAM untuk menolak akses ke API getSettings kepada akun utama di organisasi dan turunannya.

{
  "name": "policies/cloudresourcemanager.googleapis.com%2Forganizations%2F253519172624/denypolicies/testpolicyid",
  "uid": "06ccd2eb-d2a5-5dd1-a746-eaf4c6g3f816",
  "kind": "DenyPolicy",
  "displayName": "Only project admins can delete projects.",
  "etag": "MTc1MTkzMjY0MjUyMTExODMxMDQ=",
  "createTime": "2021-09-07T23:15:35.258319Z",
  "updateTime": "2021-09-07T23:15:35.258319Z",
  "rules": [
    {
      "denyRule": {
        "deniedPrincipals": [
          "principalSet://goog/public:all"
        ],
        "deniedPermissions": [
          "iap.googleapis.com/iap.organizations.getSettings",
          "iap.googleapis.com/iap.folders.getSettings",
          "iap.googleapis.com/iap.projects.getSettings",
          "iap.googleapis.com/iap.web.getSettings",
          "iap.googleapis.com/iap.webTypes.getSettings",
          "iap.googleapis.com/iap.webServices.getSettings",
          "iap.googleapis.com/iap.webServicesVersions.getSettings",
        ],
      }
    }
  ]
}

Daripada menentukan semua izin terperinci, berikut adalah contoh kebijakan penolakan IAM dengan hanya satu izin: *.getSettings.

{
  "name": "policies/cloudresourcemanager.googleapis.com%2Forganizations%2F253519172624/denypolicies/testpolicyid",
  "uid": "06ccd2eb-d2a5-5dd1-a746-eaf4c6g3f816",
  "kind": "DenyPolicy",
  "displayName": "Only project admins can delete projects.",
  "etag": "MTc1MTkzMjY0MjUyMTExODMxMDQ=",
  "createTime": "2021-09-07T23:15:35.258319Z",
  "updateTime": "2021-09-07T23:15:35.258319Z",
  "rules": [
    {
      "denyRule": {
        "deniedPrincipals": [
          "principalSet://goog/public:all"
        ],
        "deniedPermissions": [
          "iap.googleapis.com/*.getSettings",
        ],
      }
    }
  ]
}

Berikut adalah beberapa cara yang lebih sederhana untuk membuat kebijakan penolakan IAM tanpa harus menentukan semua izin terperinci.

Tindakan admin Izin dalam kebijakan tolak
Menolak izin IAP tertentu di semua jenis resource IAP *.updateSettings
*.getSettings
*.setIamPolicy
*.getIamPolicy
Menolak semua izin IAP pada jenis resource tertentu iap.organizations.*
iap.folders.*
iap.projects.*
iap.web.*
iap.webTypes.*
iap.webServices.*
iap.webServicesVersions.*

Akses publik

Untuk memberi semua orang akses ke resource, berikan peran ke salah satu akun utama berikut:

  • allAuthenticatedUsers: Siapa saja yang diautentikasi dengan Akun Google atau akun layanan.
  • allUsers: Siapa saja yang menggunakan internet, termasuk pengguna yang diautentikasi dan tidak diautentikasi. Header yang ditandatangani untuk permintaan tidak akan memiliki klaim sub atau email.

Jika akses publik diberikan, IAP tidak akan membuat log Cloud Audit Logs untuk permintaan tersebut.

Saat ini, binding yang memberikan akses publik tidak dapat memiliki kondisi yang terkait dengannya. Misalnya, kebijakan yang mengizinkan siapa saja mengakses resource jika jalur permintaan dimulai dengan /public/ tidak valid.