Topik 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. |
|
Atribut jenis resource | Kelola akses berdasarkan jenis resource. | |
Atribut nama resource | Kelola akses berdasarkan nama resource. |
|
Tag resource | Kelola akses berdasarkan tag yang dilampirkan ke resource. | 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 |
---|---|---|
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 |
Identity-Aware Proxy |
|
Mengelola akses berdasarkan data yang disediakan oleh Google Cloud Google Cloud API atau layanan tertentu. |
|
|
Tetapkan akses yang dapat berakhir, dijadwalkan, atau berdurasi terbatas ke resource Google Cloud. |
Semua layanan Google Cloud (lihat Dukungan untuk kondisi yang diwariskan) |
|
Kelola akses berdasarkan alamat IP tujuan dan/atau port
permintaan. Misalnya, instance mesin virtual (VM) Compute Engine
mungkin mengekspos IP eksternal, seperti Digunakan untuk penerusan Identity-Aware Proxy TCP. |
Identity-Aware Proxy |
|
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. |
|
|
Kelola akses berdasarkan jalur URL dan/atau host permintaan. Misalnya
, sebuah kondisi dapat menentukan bahwa
|
|
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.
Variabel atribut | resource.service |
---|---|
Jenis atribut |
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 resource.service == "compute.googleapis.com" |
Layanan yang didukung |
|
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.
Variabel atribut | resource.type |
||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Jenis atribut |
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 resource.type != "compute.googleapis.com/Image"
Menampilkan (resource.type == "compute.googleapis.com/Image" || resource.type == "compute.googleapis.com/Disk") |
||||||||||||||||||||||||||||||||||||||||
Jenis resource yang didukung |
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 bawah. Kami sangat menyarankan agar 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()
atauendsWith()
untuk menulis kondisi yang mengevaluasi awal atau akhir nama resource.
Variabel atribut | resource.name |
||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Jenis atribut |
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 |
Fungsi
Fungsi
Fungsi
Operator |
||||||||||||||||||||||||||||||||||
Contoh |
Menampilkan resource.name != "projects/_/buckets/secret-bucket-123"
Menampilkan resource.name.startsWith("projects/project-123/zones/us-east1-b/instances/prod-")
Menampilkan resource.name.startsWith("projects/_/buckets/my_bucket/objects/test-object-")
Menampilkan resource.name.endsWith(".jpg") Menampilkan nama atau nomor project jika ada: resource.name.extract("projects/{project}/") |
||||||||||||||||||||||||||||||||||
Jenis resource yang didukung |
|
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 permanentagValues/567890123456
. -
Nama pendek. Nama pendek untuk setiap kunci harus unik dalam organisasi Anda, 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 pendekprod
. -
Nama dengan namespace, yang menambahkan ID numerik organisasi Anda ke nama pendek kunci
tag. Misalnya, kunci tag dapat memiliki nama dengan namespace
123456789012/env
. Pelajari cara mendapatkan ID organisasi Anda.
Untuk mendapatkan panduan dalam memilih jenis ID yang akan digunakan dalam kondisi Anda, lihat Definisi dan ID tag.
Kondisi pada tag didukung untuk semua layanan dan jenis resource Google Cloud. Untuk mempelajari cara menerapkan kondisi tag ke resource yang tidak secara langsung mendukungnya, lihat Dukungan untuk kondisi yang diwariskan di halaman ini.
Anda dapat menggunakan fungsi berikut untuk menetapkan kondisi berdasarkan tag:
Fungsi | Deskripsi |
---|---|
resource.hasTagKey(
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(
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.matchTag(
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(
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
|
Atribut permintaan
Atribut permintaan memungkinkan Anda membuat kondisi yang mengevaluasi detail permintaan, seperti tingkat akses, tanggal/waktunya, port dan alamat IP tujuan (untuk tunneling TCP IAP), atau host/jalur 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.
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 dokumen
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 ACCESS_LEVEL_FULL_NAME in request.auth.access_levels Nama lengkap tingkat akses menggunakan format berikut: accessPolicies/POLICY_NUMBER/accessLevels/ACCESS_LEVEL |
Contoh |
Menampilkan "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.
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(
V<T>
|
Mendapatkan atribut API yang diminta.
|
||||||||||||
hasOnly(
bool |
Memeriksa apakah daftar hanya berisi item yang diizinkan, atau subset dari
item tersebut. Anda dapat memanggil fungsi pada daftar yang ditampilkan oleh
|
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 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
|
Layanan yang mengenali atribut ini |
Layanan berikut mengenali
atribut
|
Atribut tanggal/waktu
Atribut tanggal/waktu digunakan untuk menetapkan akses yang dapat habis masa berlakunya, dijadwalkan, atau berdurasi terbatas ke resource Google Cloud.
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(
Timestamp |
Mengonversi tanggal dari
|
duration(
Duration |
Mengonversi jumlah waktu daria
|
timestamp(
Timestamp |
Mengonversi
|
, , , |
Membandingkan dua nilai
|
|
Tambahkan atau kurangi
|
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(
int
|
Mendapatkan hari dalam sebulan dari
|
Timestamp.getDayOfMonth(
int
|
Mendapatkan hari dalam sebulan dari
|
Timestamp.getDayOfWeek(
int
|
Mendapatkan hari dari
|
Timestamp.getDayOfYear(
int
|
Mendapatkan hari dalam setahun dari
|
Timestamp.getFullYear(
int
|
Mendapatkan tahun dari
|
Timestamp.getHours(
int
|
Mendapatkan jam dari
Anda dapat menggabungkan fungsi ini dengan
|
Timestamp.getMilliseconds(
int
|
Mendapatkan jumlah milidetik dari
|
Timestamp.getMinutes(
int
|
Mendapatkan jumlah menit setelah satu jam dari
|
Timestamp.getMonth(
int
|
Mendapatkan bulan dalam setahun dari
|
Timestamp.getSeconds(
int
|
Mendapatkan jumlah detik dari
|
, , , |
Membandingkan output dua fungsi dalam tabel ini. |
Atribut IP/port tujuan
Dengan atribut IP/port tujuan, pengguna dapat mengelola akses berdasarkan alamat IP dan/atau port tujuan internal untuk permintaan.
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 |
Contoh |
Menampilkan destination.ip == "10.0.0.1"
Menampilkan 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 |
Contoh |
Menampilkan
|
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. from the internet.
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.isForwardingRule
bool
|
Memeriksa apakah permintaan membuat aturan penerusan.
|
compute.matchLoad
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.
|
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) |
Traffic Director1 | Aturan penerusan |
1 Menggunakan atribut resource untuk Compute Engine.
Jalur URL/atribut host
Dengan atribut lokasi/host URL, pengguna dapat mengelola akses berdasarkan jalur URL
dan/atau 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.
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 request.path == "/admin" request.path == "/admin/payroll"
Menampilkan request.path.startsWith("/admin")
Menampilkan request.path.endsWith("/payroll.js") |
Jenis resource yang didukung |
|
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 request.host == "www.example.com" request.host == "hr.example.com"
Menampilkan request.host.endsWith("example.com") |
Jenis resource yang didukung |
|
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
hinggaZ
; digit numerik; dan garis bawah (_
).Di template
projects/{project}/
, ID-nya adalahproject
.Opsional: Awalan, yang harus muncul sebelum substring yang akan diekstrak.
Pada template
projects/{project}/
, awalannya adalahprojects/
.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/
:
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/ |
/orders/{none}/order_date= |
Kosongkan string |
/orders/order_date=2019-11-03/ |
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.