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

Anda dapat menggunakan IAP untuk mengonfigurasi kebijakan IAP untuk resource Cloud Run dan perorangan dalam Google Cloud project. Beberapa aplikasi dalam project dapat memiliki kebijakan akses yang berbeda. Hal ini mencakup 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 (yaitu "pokok") di tingkat project berlaku untuk semua resource yang diamankan oleh IAP dalam project.

Sebelum memulai

Sebelum memulai, Anda memerlukan hal berikut:

  • Resource yang diamankan dengan IAP yang ingin Anda tambahi akses individu atau grup.
  • Nama pengguna atau grup yang ingin Anda tambahi aksesnya.

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 Editor Project, Admin App Engine, dan Admin Jaringan Compute. 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 juga memerlukan izin clientauthconfig.clients.create, clientauthconfig.clients.update, 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 oleh IAP dengan Google Cloud konsol, 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. Pemilihan resource berikut mengamankan grup 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 Admin Kebijakan IAP di tingkat resource Semua Layanan Web hanya akan memiliki izin untuk kebijakan IAP.

    • Layanan Backend: Semua layanan backend akan diamankan.

  3. Di Panel info di sisi 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 Select a role:

    • Pemilik: Memberikan akses yang sama seperti Admin Kebijakan IAP. Sebagai gantinya, gunakan peran Admin Kebijakan IAP. 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, di samping setiap nama pengguna atau grup yang ingin Anda hapus perannya, klik 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 pada resource Google Cloud .

Sumber dan izin

IAP API memungkinkan Anda menerapkan izin IAM ke setiap resource dalam project yang diamankan IAP. Izin IAM yang diberikan di tingkat tertentu berlaku untuk semua tingkat di bawahnya. Misalnya, izin yang diberikan di level project berlaku untuk semua Google Cloud resource dalam project. Akses untuk level project dan yang lebih tinggi 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
Opsi ini sama dengan kotak centang Semua Layanan Web di halaman admin IAP.

Path
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 Backend Service 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 dalam project
Izin untuk semua aturan penerusan dalam 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
Region untuk setiap layanan Cloud Run dalam project
Izin untuk semua layanan Cloud Run dalam suatu region di project.

Path
https://iap.googleapis.com/v1/projects/
PROJECT_NUMBER/iap_web/cloud_run-REGION_NAME
iap.webTypes.getIamPolicy

iap.webTypes.setIamPolicy
Layanan Cloud Run
Izin untuk layanan Cloud Run. Semua layanan Cloud Run bersifat regional.

Path
https://iap.googleapis.com/v1/projects/
PROJECT_NUMBER/iap_web/cloud_run-REGION_NAME/services/SERVICE_NAME
iap.webServices.getIamPolicy

iap.webServices.setIamPolicy
Aplikasi App Engine
Sama dengan kotak centang Aplikasi App Engine di halaman admin IAP.

Path
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.

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

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

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

iap.tunnelZones.setIamPolicy
Instance VM individual

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 setidaknya satu grup tujuan, misalnya, us-central1

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

iap.tunnelLocations.setIamPolicy
Grup 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 beserta daftar terkait dari 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

Anda juga dapat mengelola akses menggunakan Google Cloud CLI.

Menolak akses

Kebijakan penolakan Identity and Access Management (IAM) memungkinkan Anda menetapkan batasan pada akses ke resource Google Cloud . Untuk mengetahui daftar skenario yang dapat memanfaatkan kebijakan penolakan, 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 penolakan, lihat Izin yang didukung dalam kebijakan penolakan 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 di tingkat resource tertentu dan tidak berlaku 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 penolakan untuk menolak akses di titik lampiran dan turunannya.

Untuk daftar lengkap izin terperinci tersebut, lihat Izin yang didukung dalam kebijakan penolakan. Semua izin di bawah 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 bagi 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 penolakan
Menolak izin IAP tertentu pada 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 memberikan akses semua orang ke resource, berikan peran kepada salah satu akun utama berikut:

  • allAuthenticatedUsers: Siapa pun yang diautentikasi dengan akun Google atau akun layanan.
  • allUsers: Siapa pun yang terhubung ke internet, termasuk pengguna yang diautentikasi dan tidak diautentikasi. Header bertanda tangan 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 pun mengakses resource jika jalur permintaan dimulai dengan /public/ tidak valid.