Referensi atribut untuk IAM Conditions

Dokumen ini menjelaskan atribut yang didukung dalam ekspresi kondisi.

Atribut kondisi yang didukung

Bagian berikut merangkum atribut yang didukung dan menunjukkan layanan Google Cloud yang mengenali setiap atribut.

Atribut resource

Atribut berikut berhubungan dengan resource yang merupakan subjek permintaan.

Atribut Ringkasan penggunaan Layanan Google Cloud yang didukung
Atribut layanan resource

Kelola akses berdasarkan layanan Google Cloud yang digunakan.

Anda dapat menggunakan atribut ini dalam binding peran kebijakan izin.

  • Apigee
  • Application Integration
  • Layanan Cadangan dan DR
  • BigQuery
  • BigQuery Reservation API
  • Bigtable
  • Otorisasi Biner
  • Cloud Deploy
  • Cloud Key Management Service
  • Cloud Logging
  • Cloud SQL
  • Cloud Storage
  • Compute Engine
  • Dataform
  • Google Kubernetes Engine
  • Identity-Aware Proxy
  • Integration Connectors
  • Google Cloud Managed Service for Apache Kafka
  • Pub/Sub Lite
  • Resource Manager
  • Secret Manager
  • Spanner
Atribut jenis resource

Kelola akses berdasarkan jenis resource.

Anda dapat menggunakan atribut ini dalam binding peran kebijakan izin.

  • Apigee
  • Application Integration
  • BigQuery
  • BigQuery Reservation API
  • Bigtable
  • Otorisasi Biner
  • Cloud Key Management Service
  • Cloud Logging
  • Cloud SQL
  • Cloud Storage
  • Compute Engine
  • Dataform
  • Google Kubernetes Engine
  • Identity-Aware Proxy
  • Integration Connectors
  • Google Cloud Managed Service for Apache Kafka
  • Pub/Sub Lite
  • Resource Manager
  • Secret Manager
  • Spanner
Atribut nama resource

Kelola akses berdasarkan nama resource.

Anda dapat menggunakan atribut ini dalam binding peran kebijakan izin.

  • Apigee
  • Application Integration
  • Layanan Cadangan dan DR
  • BigQuery
  • BigQuery Reservation API
  • Bigtable
  • Otorisasi Biner
  • Cloud Deploy
  • Cloud Key Management Service
  • Cloud Logging
  • Cloud SQL
  • Cloud Storage
  • Compute Engine
  • Dataform
  • Google Kubernetes Engine
  • Integration Connectors
  • Google Cloud Managed Service for Apache Kafka
  • Pub/Sub Lite
  • Secret Manager
  • Spanner
Tag resource

Kelola akses berdasarkan tag yang dilampirkan ke resource.

Anda dapat menggunakan atribut ini di tempat berikut:

  • Mengizinkan binding peran kebijakan
  • Aturan tolak kebijakan penolakan
Semua layanan Google Cloud (lihat Dukungan untuk kondisi yang diwariskan)

Untuk mengetahui detail selengkapnya tentang atribut resource, lihat Atribut resource pada halaman ini.

Atribut permintaan

Atribut berikut berkaitan dengan detail permintaan.

Atribut Ringkasan penggunaan Layanan Google Cloud yang didukung

Atribut tingkat akses

Kelola akses berdasarkan tingkat akses tertentu.

Tingkat akses adalah atribut yang dihitung berdasarkan atribut mentah tentang permintaan dan pemohon, seperti alamat IP asal, atribut perangkat, dan waktu. Misalnya, tingkat akses onNetwork mungkin mengharuskan perangkat yang membuat permintaan berasal dari rentang alamat IP tertentu. Tingkat akses ditentukan oleh administrator organisasi.

Anda dapat menggunakan atribut ini dalam binding peran kebijakan izin.

Identity-Aware Proxy

Atribut API

Mengelola akses berdasarkan data yang disediakan oleh Google Cloud Google Cloud API atau layanan tertentu.

Anda dapat menggunakan atribut ini dalam binding peran kebijakan izin.

  • Identity and Access Management
  • Gateway API
  • AutoML
  • Certificate Authority Service
  • Fungsi Cloud Run
  • Cloud Healthcare API
  • Cloud IoT
  • Cloud Key Management Service
  • Cloud Run
  • Cloud Runtime Configuration API
  • Cloud Storage
  • Compute Engine
  • Artifact Analysis
  • Dataproc
  • Earth Engine
  • Game Servers
  • Identity and Access Management
  • Identity-Aware Proxy
  • Layanan Terkelola untuk Microsoft Active Directory
  • Notebook yang dikelola pengguna
  • Resource Manager
  • Secret Manager
  • Pengelolaan Layanan

Atribut tanggal/waktu

Tetapkan akses yang dapat berakhir, dijadwalkan, atau berdurasi terbatas ke resource Google Cloud.

Anda dapat menggunakan atribut ini dalam binding peran kebijakan izin.

Semua layanan Google Cloud (lihat Dukungan untuk kondisi yang diwariskan)

Atribut IP/port tujuan

Kelola akses berdasarkan alamat IP tujuan dan/atau port permintaan. Misalnya, instance mesin virtual (VM) Compute Engine mungkin mengekspos IP eksternal, seperti 10.0.0.2, tetapi port 22 mungkin diekspos untuk penggunaan administratif saja.

Digunakan untuk penerusan Identity-Aware Proxy TCP.

Anda dapat menggunakan atribut ini dalam binding peran kebijakan izin.

Identity-Aware Proxy

Atribut aturan penerusan

Tentukan jenis aturan penerusan yang dapat dibuat oleh akun utama. Misalnya, Anda dapat mengizinkan akun utama membuat aturan penerusan untuk load balancer internal Google Cloud, yang menangani traffic yang berasal dari dalam jaringan Google Cloud, tetapi bukan untuk load balancer Google Cloud eksternal, yang menangani traffic yang berasal dari internet.

Anda dapat menggunakan atribut ini dalam binding peran kebijakan izin.

Atribut host/jalur URL

Kelola akses berdasarkan jalur URL dan/atau host permintaan. Misalnya , sebuah kondisi dapat menentukan bahwa https://example.com adalah aplikasi utama yang dapat diakses oleh domain pengguna umum, sedangkan https://hr.example.com/admin digunakan untuk mengakses halaman didalam aplikasi yang hanya dapat diakses oleh admin Sumber Daya Manusia.

Anda dapat menggunakan atribut ini dalam binding peran kebijakan izin.

  • Identity-Aware Proxy
  • Cloud Run

Untuk mengetahui detail selengkapnya tentang atribut permintaan, lihat Atribut permintaan di halaman ini.

Dukungan untuk kondisi turunan

Beberapa jenis resource Google Cloud tidak mengizinkan kondisi dalam kebijakan izinnya. Namun, Anda dapat menambahkan binding peran bersyarat di tingkat organisasi, folder, atau project, dan resource lainnya akan mewarisi binding peran tersebut melalui hierarki resource. Untuk mengetahui detailnya, lihat Jenis resource yang menerima binding peran bersyarat.

Saat Anda menggunakan atribut di level organisasi, folder, atau project, perlu diingat bahwa sebagian besar atribut hanya tersedia untuk jenis resource tertentu. Jika bagian dari kondisi menggunakan atribut yang tidak tersedia, maka bagian dari kondisi tersebut tidak pernah ditafsirkan sebagai pemberian akses. Misalnya, kondisi destination.port == 21 tidak akan pernah memberikan akses ke resource BigQuery mana pun karena resource BigQuery tidak menyediakan atribut IP/port tujuan.

Untuk mencegah masalah ini, gunakan atribut jenis resource dan layanan resource yang dijelaskan di halaman ini untuk membatasi cakupan kondisi. Misalnya, kondisi berikut bernilai true untuk semua jenis resource selain instance tunnel Identity-Aware Proxy; Sebaliknya, untuk instance tunnel Identity-Aware Proxy, kondisi akan memeriksa port tujuan:

resource.type != 'iap.googleapis.com/TunnelInstance' ||
    destination.port == 21

Anda tidak perlu membatasi cakupan kondisi yang memeriksa tag yang dilampirkan ke resource. Saat memeriksa nilai dan kunci tag, kondisi tidak dapat memeriksa atribut lainnya, termasuk jenis resource dan layanan resource.

Atribut resource

Layanan resource, jenis resource, dan atribut nama resource biasanya digunakan untuk mengubah cakupan pemberian akses yang disediakan oleh binding peran. Jika suatu peran berisi izin yang berlaku untuk atribut spesifik resource yang berbeda, kondisi berbasis resource dapat digunakan untuk memberikan subset izin peran bagi jenis tertentu atau layanan tertentu.

Atribut resource.service

Atribut resource.service dapat digunakan untuk menetapkan kondisi berdasarkan layanan Google Cloud yang digunakan. Misalnya, Anda dapat menetapkan kondisi yang membatasi akses pengguna ke resource yang menggunakan layanan cloudresourcemanager.googleapis.com. Untuk daftar nilai yang didukung, lihat Nilai layanan resource.

Anda dapat menggunakan atribut resource.service dalam binding peran kebijakan izin.

Variabel atribut resource.service
Jenis atribut

string

Untuk daftar nilai yang didukung, lihat Nilai layanan resource.

Operator yang didukung ,
Detail Saat Anda menggunakan atribut resource.type pada kondisi, periksa kesetaraan tepat () atau ketidaksetaraan persis () dengan atribut tersebut. Perbandingan lainnya, seperti memeriksa awalan atau akhiran, dapat memberi Anda hasil yang tidak terduga.
Contoh

Menampilkan true untuk resource Compute Engine:

resource.service == "compute.googleapis.com"
Layanan yang didukung
  • Apigee
  • Application Integration
  • Layanan Cadangan dan DR
  • BigQuery
  • BigQuery Reservation API
  • Bigtable
  • Otorisasi Biner
  • Cloud Deploy
  • Cloud Key Management Service
  • Cloud Logging
  • Cloud SQL
  • Cloud Storage
  • Compute Engine
  • Dataform
  • Google Kubernetes Engine
  • Identity-Aware Proxy
  • Integration Connectors
  • Google Cloud Managed Service for Apache Kafka
  • Pub/Sub Lite
  • Resource Manager
  • Secret Manager
  • Spanner

atribut resource.type

Atribut resource.type memungkinkan Anda menetapkan kondisi berdasarkan jenis resource. Misalnya, Anda dapat menetapkan kondisi yang membatasi akses pengguna ke jenis resource storage.googleapis.com/Object. Untuk daftar nilai yang didukung, lihat Nilai jenis resource.

Jika kondisi Anda menggunakan atribut resource.name, sebaiknya gunakan atribut resource.type untuk mengontrol jenis resource yang diterapkan dengan kondisi tersebut. Untuk mengetahui detailnya, lihat atribut resource.name di halaman ini.

Anda dapat menggunakan atribut resource.type dalam binding peran kebijakan izin.

Variabel atribut resource.type
Jenis atribut

string

Untuk daftar nilai yang didukung, lihat Nilai jenis resource.

Operator yang didukung ,
Detail Saat Anda menggunakan atribut resource.type dalam kondisi, periksa kesetaraan tepat () atau ketidaksetaraan persis () dengan atribut tersebut. Perbandingan lainnya, seperti memeriksa awalan atau akhiran, dapat memberi Anda hasil yang tidak terduga.
Contoh

Menampilkan true kecuali jika resource adalah image Compute Engine:

resource.type != "compute.googleapis.com/Image"

Menampilkan true hanya jika resource adalah image Compute Engine atau persistent disk:

(resource.type == "compute.googleapis.com/Image" ||
 resource.type == "compute.googleapis.com/Disk")
Jenis resource yang didukung
Apigee
  • Atribut produk API
  • Produk API
  • Proxy API
  • Entri peta nilai kunci proxy API
  • Peta nilai kunci proxy API
  • Revisi proxy API
  • Cache
  • Atribut aplikasi developer
  • Aplikasi developer
  • Atribut developer
  • Developer
  • Entri peta nilai kunci lingkungan
  • Peta nilai kunci lingkungan
  • Ekspor
  • Flow hook
  • Keystore alias
  • Keystore
  • Kueri
  • Paket Tarif
  • Referensi
  • Revisi alur bersama
  • Alur bersama
  • Server target
  • Sesi Trace (debug)
Layanan Cadangan dan DR
  • Vault cadangan
BigQuery
  • Set data
  • Model
  • Rutinitas
  • Tabel
BigQuery Reservation API
  • Tugas
  • Reservasi BI
  • Komitmen kapasitas
  • Lokasi
  • Reservasi
Application Integration
  • Konfigurasi Auth
  • Eksekusi
  • Versi integrasi
  • Integrasi
  • Lokasi
  • Penangguhan.
Otorisasi Biner
  • Attestor
  • Konfigurasi Validasi Berkelanjutan
  • Kebijakan
Bigtable
  • Cluster
  • Instance
  • Tables
Cloud Key Management Service
  • Versi Crypto Key
  • Kunci kripto
  • Key ring
Cloud Logging
  • Bucket log
  • Tampilan log
Spanner
  • Cadangan
  • Database
  • Instance
Cloud SQL
  • Cadangan yang dijalankan
  • Instance
Cloud Storage
  • Bucket
  • Folder terkelola
  • Objek
Compute Engine
  • Layanan backend (global dan regional)
  • Firewall
  • Aturan penerusan (global dan regional)
  • Image
  • Template instance
  • Instance
  • Persistent disk (regional dan zona)
  • Snapshot
  • Proxy HTTP(S) target (global dan regional)
  • Proxy SSL target
  • Proxy TCP target
Dataform
  • Hasil kompilasi
  • Lokasi
  • Konfigurasi rilis
  • Repositories
  • Konfigurasi alur kerja
  • Pemanggilan alur kerja
  • Ruang kerja
Google Cloud
  • Lokasi1
Google Kubernetes Engine
  • Cluster
Firestore
  • Database
Identity-Aware Proxy
  • Semua layanan backend dan aplikasi App Engine
  • Semua Resource Tunnel
  • Semua zona tunnel
  • Semua layanan web
  • Versi layanan aplikasi App Engine
  • Layanan aplikasi App Engine
  • Layanan backend Compute Engine
  • Instance tunnel
Integration Connectors
  • Koneksi
  • Metadata skema koneksi
  • Lampiran endpoint
  • Langganan acara
  • Zona terkelola
Google Cloud Managed Service for Apache Kafka
  • Cluster
  • Grup konsumen
  • Operasi
  • Topik
Pub/Sub Lite
  • Lokasi
  • Langganan
  • Topik
Resource Manager
  • Project
Secret Manager
  • Versi rahasia
  • Rahasia

1 Cloud Key Management Service menggunakan jenis resource ini sebagai induk dari resource key ring.

Atribut resource.name

Atribut resource.name memungkinkan Anda menetapkan kondisi berdasarkan semua atau sebagian dari nama resource. Untuk daftar format nama resource, lihat Format nama resource.

Atribut resource.name hanya tersedia untuk jenis resource tertentu, yang tercantum dalam tabel di bagian ini. Sebaiknya Anda membatasi penerapan kondisi ke jenis resource yang diinginkan. Jika peran berisi izin untuk jenis resource yang tidak menyediakan atribut resource.name, Anda harus memastikan bahwa izin tersebut tidak dibatasi oleh bagian kondisi yang memeriksa resource.name.

Contoh berikut menunjukkan cara memastikan perilaku ini. Dalam contoh ini, kondisi mengizinkan akses ke semua jenis resource kecuali bucket dan objek Cloud Storage. Sebaliknya, untuk bucket dan objek, kondisi hanya mengizinkan akses ke bucket example-bucket dan objek yang ada di dalamnya:

(resource.type != 'storage.googleapis.com/Bucket' &&
 resource.type != 'storage.googleapis.com/Object') ||
resource.name.startsWith('projects/_/buckets/example-bucket')

Perhatikan bahwa bagian pertama kondisi memeriksa apakah resource bukan bucket ataupun objek. Jika resource memiliki jenis yang berbeda, seluruh kondisi akan bernilai true, terlepas dari nama resource-nya.

Selain itu, perhatikan bahwa kondisi memeriksa atribut resource.type, bukan atribut resource.service. Ada beberapa manfaat memeriksa atribut resource.type:

  • Fungsi ini membatasi pemeriksaan resource.name pada kumpulan resource yang sesuai. Misalnya, jika Anda ingin memberikan akses ke instance Compute Engine dengan nama tertentu, tidak ada salahnya untuk mengecualikan semua jenis resource selain instance Compute Engine.
  • Hal ini mencegah cakupan kondisi berubah jika layanan menambahkan jenis resource baru di masa mendatang.

Terakhir, perhatikan bahwa kondisi tersebut menggunakan fungsi startsWith() untuk mengevaluasi nama resource, bukan memeriksa kesetaraan dengan operator . Karena kondisi terlihat di awal nama resource, kondisi tersebut cocok dengan bucket serta objek dalam bucket tersebut. Jika memeriksa kesetaraan, bucket hanya akan cocok dengan bucket.

Anda tidak dapat menggunakan karakter pengganti seperti * untuk mencocokkan beberapa nama resource. Pertimbangkan alternatif berikut:

  • Gunakan fungsi extract() untuk mengekstrak nilai dari nama resource. Misalnya, Anda dapat mengekstrak project ID dari nama resource instance VM Compute Engine, lalu menulis ekspresi kondisi yang mengacu pada project ID tersebut.

    Untuk mengetahui detailnya, lihat Mengekstrak nilai dari atribut di halaman ini.

  • Gunakan fungsi startsWith() atau endsWith() untuk menulis kondisi yang mengevaluasi awal atau akhir nama resource.

Anda dapat menggunakan atribut resource.name dalam binding peran kebijakan izin.

Variabel atribut resource.name
Jenis atribut

string

Setiap jenis resource menggunakan format tertentu untuk nama resource. Untuk daftar format, lihat Format nama resource.

Fungsi dan operator yang didukung startsWith(), endsWith(), extract(), ,
Detail

resource.name berisi nama resource relatif untuk resource target dalam permintaan. Nama resource relatif adalah jalur URI tanpa garis miring ke depan (/).

Fungsi startsWith() menggunakan literal string awalan yang akan dievaluasi terhadap resource.name.

Fungsi endsWith() menggunakan literal string akhiran untuk dievaluasi terhadap resource.name.

Fungsi extract() menggunakan template ekstraksi untuk mengekstrak bagian dari resource.name. Untuk detailnya, lihat Mengekstrak nilai dari nama resource di halaman ini.

Operator dan adalah untuk perbandingan dengan seluruh resource.name, atau bagian yang diekstrak dari resource.name.

Contoh

Menampilkan true kecuali jika nama resource mengidentifikasi bucket Cloud Storage bernama secret-bucket-123:

resource.name != "projects/_/buckets/secret-bucket-123"

Menampilkantrue jika nama resource diawali dengan awalan yang ditentukan, dalam format yang digunakan oleh instance VM Compute Engine:

resource.name.startsWith("projects/project-123/zones/us-east1-b/instances/prod-")

Menampilkan true jika nama resource diawali dengan awalan yang ditentukan, dalam format yang digunakan oleh bucket Cloud Storage:

resource.name.startsWith("projects/_/buckets/my_bucket/objects/test-object-")

Menampilkan true jika nama resource diakhiri dengan akhiran yang ditentukan—misalnya, ekstensi file objek Cloud Storage:

resource.name.endsWith(".jpg")

Menampilkan nama atau nomor project jika ada:

resource.name.extract("projects/{project}/")
Jenis resource yang didukung
Apigee
  • Atribut produk API
  • Produk API
  • Proxy API
  • Entri peta nilai kunci proxy API
  • Peta nilai kunci proxy API
  • Revisi proxy API
  • Cache
  • Atribut aplikasi developer
  • Aplikasi developer
  • Atribut developer
  • Developer
  • Entri peta nilai kunci lingkungan
  • Peta nilai kunci lingkungan
  • Ekspor
  • Flow hook
  • Keystore alias
  • Keystore
  • Kueri
  • Paket Tarif
  • Referensi
  • Revisi alur bersama
  • Alur bersama
  • Server target
  • Sesi Trace (debug)
Layanan Cadangan dan DR
  • Vault cadangan
BigQuery
  • Set data
  • Model
  • Rutinitas
  • Tabel
BigQuery Reservation API
  • Tugas
  • Reservasi BI
  • Komitmen kapasitas
  • Lokasi
  • Reservasi
Application Integration
  • Konfigurasi Auth
  • Eksekusi
  • Versi integrasi
  • Integrasi
  • Lokasi
  • Penangguhan.
Otorisasi Biner
  • Attestor
  • Konfigurasi Validasi Berkelanjutan
  • Kebijakan
Bigtable
  • Cluster
  • Instance
  • Tabel
Cloud Deploy
  • Otomatisasi berjalan
  • Otomatisasi
  • Jenis target kustom
  • Pipeline pengiriman
  • Tugas berjalan
  • Rilis
  • Peluncuran
  • Target
Cloud Key Management Service
  • Kunci kripto
  • Versi Crypto Key
  • Key ring
Cloud Logging
  • Bucket log
  • Tampilan log
Spanner
  • Cadangan
  • Database
  • Instance
Cloud SQL
  • Cadangan yang dijalankan
  • Instance
Cloud Storage
  • Bucket
  • Folder terkelola
  • Objek
Compute Engine
  • Layanan backend (global dan regional)
  • Firewall
  • Aturan penerusan (global dan regional)
  • Image
  • Template instance
  • Instance
  • Persistent disk (regional dan zona)
  • Snapshot
  • Proxy HTTP(S) target (global dan regional)
  • Proxy SSL target
  • Proxy TCP target
Google Kubernetes Engine
  • Cluster
Firestore
  • Database
Dataform
  • Hasil kompilasi
  • Lokasi
  • Konfigurasi rilis
  • Repositories
  • Konfigurasi alur kerja
  • Pemanggilan alur kerja
  • Ruang kerja
Integration Connectors
  • Koneksi
  • Metadata skema koneksi
  • Lampiran endpoint
  • Langganan acara
  • Zona terkelola
Google Cloud Managed Service for Apache Kafka
  • Cluster
  • Grup konsumen
  • Operasi
  • Topik
Pub/Sub Lite
  • Lokasi
  • Langganan
  • Topik
Secret Manager
  • Versi rahasia
  • Rahasia

Tag resource

Fungsi untuk tag resource memungkinkan Anda menetapkan kondisi berdasarkan tag yang dilampirkan ke, atau diwarisi oleh, resource. Misalnya, Anda dapat menetapkan kondisi yang memberikan peran hanya untuk resource yang melampirkan tag env: prod . Untuk mempelajari lebih lanjut cara mengontrol akses dengan tag, lihat Tag dan kontrol akses.

Setiap tag terdiri dari kunci dan nilai. Ada beberapa jenis ID untuk setiap kunci dan nilai:

  • ID permanen, yang bersifat unik secara global dan tidak dapat digunakan kembali. Misalnya, kunci tag dapat memiliki ID permanen tagKeys/123456789012, dan nilai tag dapat memiliki ID permanen tagValues/567890123456.
  • Nama pendek. Nama pendek untuk setiap kunci harus unik dalam project atau organisasi tempat kunci ditentukan, dan nama pendek untuk setiap nilai harus unik untuk kunci yang terkait. Misalnya, kunci tag dapat memiliki nama pendek env, dan nilai tag dapat memiliki nama pendek prod.
  • Nama dengan namespace, yang menambahkan ID numerik organisasi atau ID project Anda ke nama pendek kunci tag. Misalnya, kunci tag yang dibuat untuk organisasi dapat memiliki nama dengan namespace 123456789012/env. Untuk mempelajari cara mendapatkan ID organisasi, lihat Mendapatkan ID resource organisasi. Kunci tag yang dibuat untuk project dapat memiliki nama dengan namespace myproject/env. Untuk mempelajari cara mendapatkan project ID, lihat Mengidentifikasi project.

Untuk mendapatkan panduan dalam memilih jenis ID yang akan digunakan dalam kondisi Anda, lihat Definisi dan ID tag.

Anda dapat menggunakan kondisi berbasis tag untuk membuat akses ke resource apa pun bersifat kondisional. Hal ini menyertakan resource dengan tagnya sendiri, serta resource yang mewarisi tag dari resource lain. Untuk mempelajari lebih lanjut cara tag diwariskan melalui hierarki resource, lihat Pewarisan tag.

Anda dapat menggunakan kondisi berbasis tag dalam hal berikut:

  • Mengizinkan binding peran kebijakan
  • Aturan tolak kebijakan penolakan

Anda dapat menggunakan fungsi berikut untuk menetapkan kondisi berdasarkan tag:

Fungsi Deskripsi
resource.hasTagKey(
  keyName: string
)
  bool

Memeriksa apakah resource untuk permintaan memiliki tag dengan kunci yang ditentukan. Kunci tag dicari berdasarkan nama namespace. Untuk memeriksa kunci tag menggunakan ID permanen, gunakan fungsi resource.hasTagKeyId().

Parameter
keyName: Nama kunci tag dengan namespace, dengan ID numerik organisasi dan garis miring ke depan sebagai awalan. Contoh , 123456789012/env.
Contoh

Menampilkan true jika resource untuk permintaan memiliki tag dengan kunci env:

resource.hasTagKey('123456789012/env')
resource.hasTagKeyId(
  keyId: string
)
  bool

Memeriksa apakah resource untuk permintaan memiliki tag dengan kunci yang ditentukan. Kunci tag dicari berdasarkan ID permanen. Untuk memeriksa kunci tag menggunakan nama dengan namespace, gunakan fungsi resource.hasTagKey().

Parameter
keyId: ID permanen untuk kunci tag. Contoh, tagKeys/123456789012.
Contoh

Menampilkan true jika resource untuk permintaan memiliki tag dengan kunci tagKeys/123456789012:

resource.hasTagKeyId('tagKeys/123456789012')
resource.matchTag(
  keyName: string,
  valueShortName: string
)
  bool

Memeriksa apakah resource untuk permintaan memiliki tag dengan kunci dan nilai yang ditentukan. Kunci dicari berdasarkan nama dengan namespace, dan nilainya dicari berdasarkan nama pendeknya. Untuk memeriksa nilai dan kunci tag menggunakan ID permanen, gunakan fungsi resource.matchTagId().

Parameter
  • keyName: Nama namespace untuk kunci tag, dengan numerik organisasi dan garis miring ke depan sebagai awalan. Contoh, 123456789012/env.
  • valueShortName: Nama pendek untuk nilai tag. Contoh, prod.
Contoh

Menampilkan true jika resource untuk permintaan memiliki tag dengan kunci 123456789012/env dan nilai prod:

resource.matchTag('123456789012/env', 'prod')
resource.matchTagId(
  keyId: string,
  valueId: string
)
  bool

Memeriksa apakah resource untuk permintaan memiliki tag dengan kunci dan nilai yang ditentukan. Kunci dan nilai dicari berdasarkan ID permanen. Untuk memeriksa kunci tag menggunakan nama dengan namespace dan nilai menggunakan nama pendeknya, gunakan fungsi resource.matchTag().

Parameter
  • keyId: ID permanen untuk kunci tag. Contoh , tagKeys/123456789012.
  • valueId: ID permanen untuk nilai tag. Contoh , tagValues/567890123456.
Contoh

Menampilkan true jika resource untuk permintaan memiliki tag dengan kunci tagKeys/123456789012 dan nilai tagValues/567890123456:

resource.matchTagId('tagKeys/123456789012', 'tagValues/567890123456')

Atribut permintaan

Atribut permintaan memungkinkan Anda membuat kondisi yang mengevaluasi detail tentang permintaan, seperti tingkat akses, tanggal/waktu, port dan alamat IP tujuan (untuk tunneling TCP IAP), atau jalur/host URL yang diharapkan (untuk IAP dan Cloud Run).

Atribut tingkat akses

Dengan atribut tingkat akses, pengguna dapat menetapkan kondisi yang mengharuskan permintaan memenuhi satu atau beberapa tingkat akses agar dapat diotorisasi. Anda dapat menggunakan atribut tingkat akses dalam binding peran kebijakan izinkan.

Atribut tingkat akses berasal dari atribut permintaan, seperti alamat IP asal, atribut perangkat, dan waktu. Misalnya, tingkat akses bernama fullyTrusted mungkin mengharuskan perangkat yang membuat permintaan dimiliki oleh perusahaan dan memiliki kunci layar. Tingkat akses onNetwork mungkin mengharuskan perangkat yang membuat permintaan berasal dari rentang alamat IP tertentu. Lihat dokumentasi Access Context Manager untuk mengetahui informasi selengkapnya tentang tingkat akses.

Atribut tingkat akses hanya tersedia saat Anda menggunakan Identity-Aware Proxy untuk mengakses instance tunnel, atau untuk mengakses aplikasi web yang berjalan di layanan backend App Engine atau Compute Engine. Lebih khusus lagi, atribut tingkat akses hanya tersedia untuk permintaan yang memeriksa salah satu izin berikut:

  • iap.tunnelInstances.accessViaIAP
  • iap.webServiceVersions.accessViaIAP

Anda dapat menggunakan atribut tingkat akses saat memberikan ketentuan peran yang telah ditetapkan berikut secara bersyarat:

  • IAP-secured Tunnel User (roles/iap.tunnelResourceAccessor)

    Berisi izin tunggal, iap.tunnelInstances.accessViaIAP.

  • IAP-secured Web App User (roles/iap.httpsResourceAccessor)

    Berisi izin tunggal, iap.webServiceVersions.accessViaIAP.

Anda juga dapat menggunakan atribut tingkat akses untuk memberikan secara bersyarat peran khusus yang berisi izin tersebut. Peran khusus tidak boleh berisi izin lainnya.

request.auth.access_levels atribut

Variabel atribut request.auth.access_levels
Jenis atribut list<string>
Operator yang didukung in
Detail

Untuk memeriksa apakah permintaan memenuhi tingkat akses tertentu, gunakan operator in:

ACCESS_LEVEL_FULL_NAME in request.auth.access_levels

Nama lengkap tingkat akses menggunakan format berikut:

accessPolicies/POLICY_NUMBER/accessLevels/ACCESS_LEVEL
Contoh

Menampilkan true jika permintaan memenuhi tingkat akses CorpNet:

"accessPolicies/199923665455/accessLevels/CorpNet"
    in request.auth.access_levels
Jenis resource yang didukung Tersedia untuk permintaan yang menggunakan Identity-Aware Proxy untuk mengakses instance tunnel, grup tujuan tunnel, aplikasi web yang berjalan di load balancing Google Cloud, atau aplikasi web yang berjalan di App Engine.

Atribut API

Atribut API membantu Anda mengelola akses berdasarkan data yang disediakan oleh Google Cloud API atau layanan tertentu. Anda dapat menggunakan atribut API dalam binding peran kebijakan izin.

Misalnya, saat menggunakan Cloud Storage untuk mencantumkan objek di bucket, Anda dapat menggunakan parameter prefix dalam permintaan hanya menyertakan objek yang namanya diawali dengan awalan tertentu. Jika Anda menggunakanBatas Akses Kredensial untuk menurunkan cakupan kredensial bermasa pendek, Anda dapat membuat Batas Akses Kredensial yang membatasi izin untuk mencantumkan objek dengan memeriksa atribut API storage.googleapis.com/objectListPrefix. Atribut API ini berisi nilai parameter prefix dari permintaan.

Untuk contoh kapan Anda mungkin perlu menggunakan atribut API dalam suatu kondisi, lihat halaman berikut:

Tidak semua layanan mengenali atribut API. Bagian berikut menunjukkan layanan mana yang mengenali setiap atribut API.

Fungsi untuk atribut API

Anda dapat menggunakan fungsi berikut untuk menggunakan atribut API:

Fungsi Deskripsi
api.getAttribute(
  attributeName: string,
  defaultValue: V<T>
)
  V<T>

Mendapatkan atribut API yang diminta.

Parameter
  • attributeName: Atribut API yang akan didapatkan. Untuk mengetahui nilai yang didukung, lihat Atribut Cloud Storage API dan Atribut IAM API di halaman ini.
  • defaultValue: Nilai default (V) yang akan digunakan jika atribut API tidak tersedia. Nilai V adalah jenis T, dengan T adalah jenis yang sama dengan nilai atribut API. Misalnya, jika nilai atribut API adalah string, Anda dapat menggunakan string kosong, atau string placeholder seperti undefined.

Contoh

Menampilkan salah satu dari berikut ini:

  • Untuk permintaan yang mencantumkan objek di bucket Cloud Storage, jika permintaan menyertakan parameter prefix, fungsi tersebut akan menampilkan nilainya.
  • Untuk permintaan mencantumkan objek yang menghilangkan parameter prefix, an untuk semua jenis permintaan lainnya, fungsi ini akan menampilkan string kosong.
api.getAttribute("storage.googleapis.com/objectListPrefix", "")
hasOnly(
  items: list<T>
)
  bool

Memeriksa apakah daftar hanya berisi item yang diizinkan, atau subset dari item tersebut. Anda dapat memanggil fungsi pada daftar yang ditampilkan oleh api.getAttribute().

Parameter
items: Daftar item dengan jenis T. Setiap item adalah nilai yang boleh dimuat oleh atribut API.
Contoh

Memeriksa apakah permintaan tersebut akan memberikan atau mencabut peran selain Pub/Sub Editor (roles/pubsub.editor) atau Pub/Sub Publisher (roles/pubsub.publisher):

api.getAttribute('iam.googleapis.com/modifiedGrantsByRole', [])
    .hasOnly(['roles/pubsub.editor', 'roles/pubsub.publisher'])

Berikut ini menunjukkan hasil untuk nilai permintaan yang berbeda:

Peran yang diberikan/dicabut Hasil
Tidak ada

true

Jika tidak ada peran yang diubah, maka api.getAttribute() akan menampilkan nilai default. Untuk atribut ini, nilai defaultnya selalu berupa daftar kosong. Menurut definisi, daftar kosong tidak berisi nilai yang tidak ada dalam daftar yang diizinkan.

roles/pubsub.editor

true

Peran ada dalam daftar yang diizinkan.

roles/pubsub.editor
roles/pubsub.publisher

true

Kedua peran tersebut tercantum dalam daftar yang diizinkan.

roles/billing.admin

false

Peran tidak ada dalam daftar yang diizinkan.

roles/billing.admin
roles/pubsub.editor

false

Satu peran tercantum dalam daftar yang diizinkan, tetapi peran lainnya tidak.

Atribut Cloud Storage API

Cloud Storage menyediakan atribut API berikut.

Variabel atribut storage.googleapis.com/objectListPrefix
Jenis atribut string
Detail

Untuk permintaan yang ingin mencantumkan objek dalam bucket, berisi nilai parameter prefix dari permintaan tersebut. Jika permintaan menghilangkan parameter prefix, atribut tidak akan ditentukan.

Untuk jenis permintaan lainnya, atribut tidak ditentukan.

Layanan yang mengenali atribut ini Cloud Storage

Atribut IAM API

IAM menyediakan atribut API berikut:

Variabel atribut iam.googleapis.com/modifiedGrantsByRole
Jenis atribut list<string>
Detail

Untuk permintaan menetapkan kebijakan izin resource, atribut ini berisi nama peran dari binding peran yang diubah oleh permintaan.

Untuk jenis permintaan lainnya, atribut tidak ditentukan.

Jenis resource yang menerima atribut ini

Jenis resource berikut menerima kondisi dengan atribut modifiedGrantsByRole dalam kebijakan izinkan:

  • Project
  • Folder
  • Organisasi
Layanan yang mengenali atribut ini

Layanan berikut mengenali atribut modifiedGrantsByRole:

  • Gateway API
  • AutoML
  • Certificate Authority Service
  • Fungsi Cloud Run
  • Cloud Healthcare API
  • Cloud IoT
  • Cloud Key Management Service
  • Cloud Run
  • Cloud Runtime Configuration API
  • Cloud Storage
  • Compute Engine
  • Artifact Analysis
  • Dataproc
  • Earth Engine
  • Game Servers
  • Identity and Access Management
  • Identity-Aware Proxy
  • Layanan Terkelola untuk Microsoft Active Directory
  • Notebook yang dikelola pengguna
  • Resource Manager
  • Secret Manager
  • Pengelolaan Layanan

Atribut tanggal/waktu

Atribut tanggal/waktu digunakan untuk menetapkan akses yang dapat habis masa berlakunya, dijadwalkan, atau berdurasi terbatas ke resource Google Cloud. Anda dapat menggunakan atribut tanggal/waktu dalam pengikatan peran kebijakan izin.

Atribut ini didukung untuk semua layanan Google Cloud dan jenis resource. Untuk mempelajari cara menerapkan kondisi tanggal/waktu ke resource yang tidak mendukungnya secara langsung, lihat Dukungan untuk kondisi yang diwariskan di halaman ini.

Atribut request.time berisi stempel waktu untuk permintaan. Anda dapat membandingkan stempel waktu ini dengan stempel waktu lain, atau dengan durasi waktu.

Bagian berikut mencantumkan fungsi yang dapat Anda gunakan untuk menetapkan kondisi berdasarkan stempel waktu dan durasi.

Membuat, membandingkan, dan mengubah stempel waktu dan durasi

Fungsi atau operator Deskripsi
date(
  value: string
)
  Timestamp

Mengonversi tanggal dari string menjadi Timestamp.

Parameter
value: Tanggal dalam format YYYY-MM-DD, dengan YYYY adalah tahun, MM adalah bulan dengan dua digit, dan DD adalah hari dengan dua digit. yang dihasilkan Timestamp berisi tanggal dan waktu yang ditentukan 00:00:00.000 UTC.
Contoh

Membuat Timestamp yang mewakili tanggal 2023-02-01 dan waktu 00:00:00.000 UTC:

date("2023-02-01")
duration(
  value: string
)
  Duration

Mengonversi jumlah waktu daria string menjadi Duration.

Parameter
value: Duration dalam detik, diikuti oleh s.
Contoh

Membuat durasi yang mewakili 1,5 menit:

duration("90s")

Membuat durasi yang mewakili 30 hari:

duration("2592000s")
timestamp(
  value: string
)
  Timestamp

Mengonversi string menjadi Timestamp.

Parameter

value: Stempel waktu UTC yang mematuhi RFC 3339.

Contoh

Membuat stempel waktu yang mewakili 12 April 2023, pukul 23:20:50.52 dalam UTC:

timestamp("2023-04-12T23:20:50.52Z")
, , ,

Membandingkan dua nilai Timestamp.

Contoh

Menampilkan true jika waktu permintaan adalah sebelum 12 April 2022, pukul 00.00.00 UTC:

request.time < timestamp("2022-04-12T00:00:00.00Z")

Menampilkan true jika waktu permintaan adala sebelum atau sama dengan 12 April 2022, pukul 00.00.00 UTC:

request.time <= timestamp("2022-04-12T00:00:00.00Z")

Menampilkan true jika waktu permintaan adalah setelah 12 April 2022, pukul 00.00.00 UTC:

request.time > timestamp("2022-04-12T00:00:00.00Z")

Menampilkan true jika waktu permintaan adalah setelah atau sama dengan 12 April 2022, pukul 00.00.00 UTC:

request.time >= timestamp("2022-04-12T00:00:00.00Z")
  • timestamp + duration   Timestamp
  • timestamp - duration   Timestamp

Tambahkan atau kurangi Duration dari Timestamp.

Contoh

Menampilkan Timestamp yang jatuh 30 menit setelah pukul 14.30.00 UTC pada 12-04-2024:

timestamp("2024-04-12T14:30:00.00Z") + duration("1800s")

Menampilkan Timestamp yang jatuh 60 hari sebelum pukul 14.30.00 UTC pada 12-04-2024:

timestamp("2024-04-12T14:30:00.00Z") - duration("5184000s")

Mengekstrak informasi dari stempel waktu

Fungsi di bagian ini memungkinkan Anda mengekstrak informasi dari stempel waktu, seperti hari dalam seminggu saat stempel waktu tersebut jatuh.

Pada IAM Conditions, semua stempel waktu dalam UTC. Namun, Anda mungkin ingin mengekstrak informasi berdasarkan zona waktu yang berbeda. Misalnya, Anda mungkin ingin mengetahui apakah stempel waktu UTC jatuh pada hari Senin dalam zona waktu Berlin, Jerman.

Untuk menentukan zona waktu lain, masukkan zona waktu ke dalam fungsi. Gunakan nama atau offset UTC dari Database Zona Waktu IETF. Misalnya, Anda dapat menggunakan Europe/Berlin atau +01:00 untuk Waktu Eropa Tengah (CET).

Fungsi dan operator yang didukung Deskripsi
Timestamp.getDate(
  timeZone: string
)
  int

Mendapatkan hari dalam sebulan dari Timestamp. Nilai ini menggunakan pengindeksan berbasis satu; hari pertama setiap bulan adalah 1.

Parameter
timeZone: Zona waktu yang digunakan untuk menghitung hasil. Setelan defaultnya adalah UTC.
Contoh

Menampilkan true jika permintaan dikirim setelah tanggal 15 pada bulan tertentu dalam UTC:

request.time.getDate() > 15
Timestamp.getDayOfMonth(
  timeZone: string
)
  int

Mendapatkan hari dalam sebulan dari Timestamp. Nilainya menggunakan pengindeksan berbasis nol; hari pertama setiap bulan adalah 0.

Parameter
timeZone: Zona waktu yang digunakan untuk menghitung hasil. Setelan defaultnya adalah UTC.
Contoh

Menampilkan true jika permintaan dikirim setelah tanggal 15 pada bulan tertentu dalam UTC:

request.time.getDayOfMonth() > 14
Timestamp.getDayOfWeek(
  timeZone: string
)
  int

Mendapatkan hari dari Timestamp. Nilainya menggunakan pengindeksan berbasis nol; misalnya, Minggu adalah 0.

Parameter
timeZone: Zona waktu yang digunakan untuk menghitung hasil. Setelan defaultnya adalah UTC.
Contoh

Menampilkan true jika permintaan dikirim antara hari Senin dan Jumat di Berlin, Jerman:

request.time.getDayOfWeek("Europe/Berlin") > 0 &&
    request.time.getDayOfWeek("Europe/Berlin") < 6
Timestamp.getDayOfYear(
  timeZone: string
)
  int

Mendapatkan hari dalam setahun dari Timestamp. Nilainya menggunakan pengindeksan berbasis nol; hari pertama dalam setahun adalah 0.

Parameter
timeZone: Zona waktu yang digunakan untuk menghitung hasil. Setelan defaultnya adalah UTC.
Contoh

Menampilkan true jika permintaan dikirim selama 5 hari pertama dalam setahun di Mountain View, California:

request.time.getDayOfYear("America/Los_Angeles") >= 0 &&
    request.time.getDayOfYear("America/Los_Angeles") < 5
Timestamp.getFullYear(
  timeZone: string
)
  int

Mendapatkan tahun dari Timestamp.

Parameter
timeZone: Zona waktu yang digunakan untuk menghitung hasil. Setelan defaultnya adalah UTC.
Contoh

Menampilkan true jika permintaan dikirim selama tahun 2023 di Mountain View, California:

request.time.getFullYear("America/Los_Angeles") == 2023

Menampilkan true jika permintaan dikirim selama tahun 2022 dalam UTC:

request.time.getFullYear() == 2022
Timestamp.getHours(
  timeZone: string
)
  int

Mendapatkan jam dari Timestamp. Nilainya menggunakan pengindeksan berbasis nol; rentang nilai dari 0 hingga 23.

Anda dapat menggabungkan fungsi ini dengan getDayofWeek() untuk memberikan akses hanya selama jam kerja yang diizinkan di wilayah hukum Anda.

Parameter
timeZone: Zona waktu yang digunakan untuk menghitung hasil. Setelan defaultnya adalah UTC.
Contoh

Menampilkan true jika permintaan dikirim antara pukul 09.00 (09.00) dan 17.00 (17.00) pada hari kerja di Berlin, Jerman:

request.time.getDayOfWeek("Europe/Berlin") >= 1 &&
    request.time.getDayOfWeek("Europe/Berlin") <= 5 &&
    request.time.getHours("Europe/Berlin") >= 9 &&
    request.time.getHours("Europe/Berlin") <= 17
Timestamp.getMilliseconds(
  timeZone: string
)
  int

Mendapatkan jumlah milidetik dari Timestamp. Nilainya menggunakan pengindeksan berbasis nol; rentang nilai dari 0 hingga 999.

Parameter
timeZone: Zona waktu yang digunakan untuk menghitung hasil. Setelan defaultnya adalah UTC.
Timestamp.getMinutes(
  timeZone: string
)
  int

Mendapatkan jumlah menit setelah satu jam dari Timestamp. Nilainya menggunakan pengindeksan berbasis nol; rentang nilai dari 0 hingga 59.

Parameter
timeZone: Zona waktu yang digunakan untuk menghitung hasil. Setelan defaultnya adalah UTC.
Contoh

Menampilkan true jika permintaan dikirim pada atau setelah pukul 09.30 (09.30) di Berlin, Jerman:

request.time.getHours("Europe/Berlin") >= 9 &&
    request.time.getMinutes("Europe/Berlin") >= 30
Timestamp.getMonth(
  timeZone: string
)
  int

Mendapatkan bulan dalam setahun dari Timestamp. Nilainya menggunakan pengindeksan berbasis nol; rentang nilai dari 0 hingga 11.

Parameter
timeZone: Zona waktu yang digunakan untuk menghitung hasil. Setelan defaultnya adalah UTC.
Contoh

Menampilkan true jika permintaan dikirim selama bulan April di Mountain View, California:

request.time.getMonth("America/Los_Angeles") == 3
Timestamp.getSeconds(
  timeZone: string
)
  int

Mendapatkan jumlah detik dari Timestamp. Nilainya menggunakan pengindeksan berbasis nol; rentang nilai dari 0 hingga 59.

Parameter
timeZone: Zona waktu yang digunakan untuk menghitung hasil. Setelan defaultnya adalah UTC.
, , ,

Membandingkan output dua fungsi dalam tabel ini.

Atribut IP/port tujuan

Dengan atribut IP/port tujuan, pengguna dapat mengelola akses berdasarkan alamat IP dan port tujuan internal untuk permintaan. Anda dapat menggunakan atribut IP/port tujuan dalam binding peran kebijakan izin.

Misalnya, instance VM Compute Engine mungkin memetakan port dan alamat IP eksternal 132.168.42.21:3001 ke alamat IP internal dan port 10.0.0.1:2300 untuk penggunaan umum. Sebaliknya, alamat IP internal dan port 10.0.0.1:22 mungkin hanya tersedia secara internal untuk penggunaan administratif. Anda dapat menggunakan atribut IP/port tujuan untuk memberikan jumlah akses yang berbeda berdasarkan port dan alamat IP internal.

Untuk mengetahui informasi selengkapnya tentang penerusan TCP, baca dokumentasi Identity-Aware Proxy.

atribut destination.ip

Variabel atribut destination.ip
Jenis atribut string
Operator yang didukung ,
Detail

Variabel destination.ip mengidentifikasi alamat IP internal dalam format IPv4.

Contoh

Menampilkan true jika alamat IP tujuan adalah 10.0.0.1:

destination.ip == "10.0.0.1"

Menampilkan true kecuali jika alamat IP tujuan adalah 10.0.0.1:

destination.ip != "10.0.0.1"
Jenis resource yang didukung Tersedia untuk permintaan yang menggunakan Identity-Aware Proxy untuk mengakses instance tunnel

Atribut destination.port

Variabel atribut destination.port
Jenis atribut int
Operator yang didukung , , , , ,
Detail

Variabel destination.port mengidentifikasi nomor port TCP internal.

Contoh

Menampilkan true jika port tujuan adalah 21:

destination.port == 21

Menampilkan true jika port tujuan kurang dari 3001:

destination.port < 3001
Jenis resource yang didukung Tersedia untuk permintaan yang menggunakan Identity-Aware Proxy untuk mengakses instance tunnel

Atribut aturan penerusan

Atribut aturan penerusan memungkinkan Anda menentukan jenis aturan penerusan yang dapat dibuat oleh akun utama. Misalnya, Anda dapat mengizinkan akun utama untuk membuat aturan penerusan untuk load balancer Google Cloud internal, yang menangani traffic yang berasal dari dalam jaringan Google Cloud, tetapi tidak untuk load balancer Google Cloud eksternal, yang menangani traffic yang berasal dari internet. Anda dapat menggunakan atribut aturan penerusan dalam binding peran kebijakan izinkan.

Untuk Cloud Load Balancing, atribut aturan penerusan tidak memengaruhi kemampuan untuk membuat komponen load balancer Google Cloud lain, seperti layanan backend, proxy target, health check, dan peta URL.

Fungsi yang didukung

Fungsi Deskripsi
compute.isForwardingRuleCreationOperation()   bool

Memeriksa apakah permintaan membuat aturan penerusan.

Contoh
Lihat contoh untuk compute.matchLoadBalancingSchemes().
compute.matchLoadBalancingSchemes(
  schemes: list<string>
)
  bool

Memeriksa apakah permintaan memengaruhi salah satu jenis skema load balancing yang ditentukan. Guna menemukan ID untuk setiap skema load balancing, serta detail lebih lanjut, lihat Menggunakan IAM Conditions pada load balancer Google Cloud.

Parameter
schemes: Skema load balancing yang dapat dipengaruhi oleh permintaan.
Contoh

Menampilkan salah satu dari berikut ini:

  • Jika permintaan tidak membuat aturan penerusan, true akan ditampilkan.
  • Jika permintaan tersebut membuat aturan penerusan, menampilkan, menampilkan true hanya jika aturan penerusan memengaruhi INTERNAL, INTERNAL_MANAGED, atau INTERNAL_SELF_MANAGED skema load balancing.
!compute.isForwardingRuleCreationOperation() || (
  compute.isForwardingRuleCreationOperation() &&
  compute.matchLoadBalancingSchemes([
    'INTERNAL', 'INTERNAL_MANAGED', 'INTERNAL_SELF_MANAGED'
  ])
)

Jenis resource yang didukung

Atribut ini tersedia untuk permintaan pembuatan jenis resource berikut:

Layanan Jenis resource
Cloud Load Balancing Aturan penerusan
Cloud VPN Aturan penerusan (global dan regional)
Compute Engine Aturan penerusan (untuk penerusan protokol)
Cloud Service Mesh1 Aturan penerusan

1 Menggunakan atribut resource untuk Compute Engine.

Jalur URL/atribut host

Dengan atribut jalur/host URL, pengguna dapat mengelola akses berdasarkan jalur URL dan host permintaan. Misalnya, suatu kondisi dapat menentukan bahwa https://example.com adalah aplikasi utama yang dapat diakses oleh domain umum pengguna, sedangkan https://hr.example.com/admin digunakan untuk mengakses halaman dalam aplikasi dimana hanya Human Admin resource yang dapat mengakses bagian ini.

Anda dapat menggunakan atribut jalur/host URL dalam binding peran kebijakan izin.

Atribut request.path

Variabel atribut request.path
Jenis atribut string
Fungsi dan operator yang didukung , startsWith(), endsWith()
Detail Kami tidak merekomendasikan penggunaan operator dengan atribut ini. Daripada memeriksa ketidaksetaraan, seperti dalam request.path != "/admin", periksa awalan atribut, seperti pada !request.path.startsWith("/admin"). Dengan memeriksa awalan, Anda juga melindungi jalur URL dalam hierarki /admin, seperti /admin/payroll/.
Contoh

Menampilkan true jika jalur permintaan sama dengan jalur URL yang ditentukan:

request.path == "/admin"
request.path == "/admin/payroll"

Menampilkan true jika jalur permintaan dimulai dengan jalur URL yang ditentukan:

request.path.startsWith("/admin")

Menampilkan true jika jalur permintaan diakhiri dengan jalur URL yang ditentukan:

request.path.endsWith("/payroll.js")
Jenis resource yang didukung
  • Versi layanan aplikasi Identity-Aware Proxy (App Engine): Tersedia untuk permintaan yang menggunakan Identity-Aware Proxy untuk mengakses aplikasi web yang berjalan di App Engine atau Compute Engine
  • Layanan Cloud Run

Atribut request.host

Variabel atribut request.host
Jenis atribut string
Fungsi dan operator yang didukung , endsWith()
Detail Kami tidak merekomendasikan penggunaan fungsi .startsWith() atau operator dengan atribut ini. Fungsi dan operator ini dapat memberikan hasil yang tidak terduga.
Contoh

Menampilkan true jika nama host sama dengan nilai yang ditentukan:

request.host == "www.example.com"
request.host == "hr.example.com"

Menampilkan true jika nama host diakhiri dengan nilai yang ditentukan:

request.host.endsWith("example.com")
Jenis resource yang didukung
  • Versi layanan aplikasi Identity-Aware Proxy (App Engine): Tersedia untuk permintaan yang menggunakan Identity-Aware Proxy untuk mengakses versi layanan aplikasi.
  • Layanan Cloud Run

Mengekstrak nilai dari atribut

Anda dapat menggunakan fungsi extract() untuk mengekstrak nilai dari atribut. Misalnya, Anda dapat mengekstrak bagian arbitrer dari nama resource, lalu tulis ekspresi kondisi yang merujuk pada teks yang Anda ekstrak.

Untuk menggunakan fungsi extract(), berikan template ekstraksi, yang menentukan bagian atribut yang akan diekstrak. Misalnya, jika ingin mengekstrak project ID dari nama resource instance VM Compute Engine, Anda dapat menggunakan template projects/{project}/.

Template ekstraksi berisi bagian berikut:

  • ID, diapit tanda kurung kurawal yang mengidentifikasi substring yang akan diekstrak.

    Pilih ID yang pendek dan juga bermakna yang memperjelas nilai yang ingin Anda ekstrak. Anda dapat menggunakan huruf besar dan kecil dari A hingga Z; digit numerik; dan garis bawah (_).

    Di template projects/{project}/, ID-nya adalah project.

  • Opsional: Awalan, yang harus muncul sebelum substring yang akan diekstrak.

    Pada template projects/{project}/, awalannya adalah projects/.

  • Opsional: Akhiran, yang harus muncul setelah substring yang akan diekstrak.

    Di template projects/{project}/, akhirannya adalah /.

Fungsi extract() mengekstrak berbagai bagian atribut berdasarkan apakah template ekstraksi memiliki awalan, akhiran, atau keduanya:

Memiliki awalan Memiliki akhiran Nilai yang diekstrak
Seluruh atribut
Karakter setelah kemunculan pertama dari awalan, atau string kosong jika tidak ada karakter setelah awalan
Karakter sebelum kemunculan akhiran yang pertama, atau string kosong jika tidak ada karakter sebelum akhiran
Karakter di antara kemunculan pertama dari awalan dan kemunculan akhiran berikutnya, atau string kosong jika tidak ada karakter di antara awalan dan akhiran

Jika Anda menentukan awalan atau akhiran yang tidak muncul dalam atribut, atau jika akhiran hanya muncul sebelum awalan, fungsi extract() akan menampilkan string kosong.

Contoh berikut menunjukkan output dari beberapa template ekstraksi yang berbeda. Contoh ini merujuk pada nama resource untuk objek Cloud Storage, projects/_/buckets/acme-orders-aaa/objects/data_lake/orders/order_date=2019-11-03/aef87g87ae0876:

Template ekstraksi Output
/order_date={date}/ 2019-11-03
buckets/{name}/ acme-orders-aaa
/orders/{empty}order_date Kosongkan string
{start}/objects/data_lake projects/_/buckets/acme-orders-aaa
orders/{end} order_date=2019-11-03/aef87g87ae0876
{all} projects/_/buckets/acme-orders-aaa/objects/data_lake/orders/order_date=2019-11-03/aef87g87ae0876
/orders/{none}/order_date= Kosongkan string
/orders/order_date=2019-11-03/{id}/data_lake Kosongkan string

Jika mengekstrak string yang mewakili tanggal, Anda dapat menggunakan fungsi dan operator tanggal/waktu di halaman ini untuk mengonversi nilai yang diekstrak menjadi Timestamp. Misalnya, lihat Mengonfigurasi akses berbasis resource.