Tetap teratur dengan koleksi
Simpan dan kategorikan konten berdasarkan preferensi Anda.
Halaman ini menjelaskan objek dan atribut yang digunakan untuk membuat ekspresi
Common Expression Language (CEL)
untuk tingkat akses kustom. Contoh disertakan.
Berisi atribut yang mendeskripsikan perangkat tempat permintaan berasal.
Atribut origin
Bagian ini mencantumkan atribut yang didukung oleh objek origin.
Atribut
ip
Jenis
string
Deskripsi
Alamat IP tempat permintaan berasal. Jika alamat IP
tidak dapat ditentukan, origin.ip akan dievaluasi
ke error. Sebaiknya gunakan
inIpRange untuk memeriksa apakah alamat IP asal berada dalam
rentang alamat IP tertentu, bukan melakukan perbandingan string.
Contoh:
inIpRange(origin.ip,["203.0.113.24"])
region_code
Jenis
string
Deskripsi
Kode ISO 3166-1 alpha-2 untuk negara atau wilayah asal permintaan. Jika kode wilayah tidak dapat
ditentukan, origin.region_code akan dievaluasi
sebagai error.
Bagian ini mencantumkan atribut yang didukung oleh objek levels.
Atribut
level name
Jenis
boolean
Deskripsi
level name sesuai dengan nama tingkat akses yang ada.
Jika digunakan, kondisi tingkat akses yang ditentukan juga harus dipenuhi selain persyaratan lain dari tingkat akses kustom Anda.
Contoh:
levels.allow_corp_ips
Dengan allow_corp_ips adalah nama
tingkat akses.
device atribut
Bagian ini mencantumkan atribut yang didukung oleh objek device. Jika tidak ada perangkat
yang terkait dengan ID dalam permintaan yang ditemukan, semua atribut berikut
akan dievaluasi sebagai error.
Atribut
encryption_status
Jenis
enum
Deskripsi
Menjelaskan status enkripsi perangkat.
Nilai enum:
enumDeviceEncryptionStatus{// The encryption status of the device is not specified or not known.ENCRYPTION_UNSPECIFIED==0;// The device does not support encryption.ENCRYPTION_UNSUPPORTED==1;// The device supports encryption, but is currently unencrypted.UNENCRYPTED==2;// The device is encrypted.ENCRYPTED==3;}
Apakah perangkat telah disetujui oleh administrator
domain.
Contoh:
device.is_admin_approved_device==true
is_corp_owned_device
Jenis
boolean
Deskripsi
Apakah perangkat dimiliki oleh organisasi.
Contoh:
device.is_corp_owned_device==true
is_secured_with_screenlock
Jenis
boolean
Deskripsi
Apakah fungsi kunci layar perangkat diaktifkan atau tidak.
Contoh:
device.is_secured_with_screenlock==true
os_type
Jenis
enum
Deskripsi
Mengidentifikasi sistem operasi yang digunakan perangkat.
Nilai enum:
enumOsType{// The operating system of the device is not specified or not known.OS_UNSPECIFIED==0;// A desktop Mac operating system.DESKTOP_MAC==1;// A desktop Windows operating system.DESKTOP_WINDOWS==2;// A desktop Linux operating system.DESKTOP_LINUX==3;// An Android operating system.ANDROID==4;// An iOS operating system.IOS==5;// A desktop ChromeOS operating system.DESKTOP_CHROME_OS==6;}
Objek vendors digunakan untuk mengakses data yang disediakan oleh vendor pihak ketiga untuk keamanan dan pengelolaan endpoint. Setiap
vendor dapat mengisi tiga atribut tingkat teratas bersama:
is_compliant_device,
is_managed_device, dan
device_health_score.
Selain itu, vendor dapat memberikan kunci dan nilai mereka sendiri
yang dirujuk menggunakan atribut data.
Kunci yang tersedia untuk atribut data bervariasi
dari vendor ke vendor. Pastikan Anda konsisten saat membandingkan nilai kunci dalam ekspresi kebijakan. Misalnya, jika Anda mengharapkan nilai kunci berupa string atau boolean, pastikan Anda membandingkannya dengan string atau boolean dalam ekspresi kebijakan yang sesuai. Perhatikan bahwa jika nilainya adalah bilangan bulat, Anda harus membandingkannya dengan angka ganda dalam ekspresi kebijakan.
Untuk mereferensikan status perangkat, gunakan format key-acme dengan acme adalah ID pelanggan organisasi. Anda bisa mendapatkan ID pelanggan dari URL GET https://www.googleapis.com/admin/directory/v1/customers/my_customer. Kolom ID dalam respons berisi ID pelanggan yang dimulai dengan huruf C. Gunakan string setelah huruf C, tidak termasuk huruf C, untuk ID pelanggan.
Nilai enum:
// Health score of the device as provided by the vendor (possibly third party).enumDeviceHealthScore{// The health score for the device is not specified or unknown.DEVICE_HEALTH_SCORE_UNSPECIFIED=0;// The health of the device is very poor.VERY_POOR=1;// The health of the device is poor.POOR=2;// The health of the device is ok.NEUTRAL=3;// The health of the device is good.GOOD=4;// The health of the device is very good.VERY_GOOD=5;}
Apakah browser dikelola, di tingkat browser atau di tingkat profil, dan oleh perusahaan dalam domain yang benar.
Browser dianggap terkelola jika kebijakan dikelola dan didorong secara terpusat, dan domain browser atau profil terkelola cocok dengan domain yang diharapkan di sisi server.
Berikut adalah status pengelolaan Chrome yang tersedia:
Negara bagian/Provinsi
MANAGED
Browser atau profil dikelola oleh pelanggan.
UNMANAGED
Browser atau profil tidak dikelola oleh pelanggan mana pun.
Menguji apakah operand string dimulai dengan argumen awalan.
Contoh:
"Sample string".startsWith("Sample")
endsWith()
Jenis
string.(string) -> bool
Deskripsi
Menguji apakah operand string diakhiri dengan argumen akhiran.
Contoh:
"Sample string".endsWith("string")
origin.clientCertFingerprint()
Jenis
Origin.() -> string
Deskripsi
Menampilkan sidik jari sertifikat yang terkait dengan origin. Anda dapat menggunakannya dalam makro untuk menguji sertifikat perangkat.
Contoh:
// Checks if the enterprise certificate associated with the origin matches the device.device.certificates.exists(cert,cert.is_valid && cert.cert_fingerprint==origin.clientCertFingerprint())
Makro untuk ekspresi CEL
Anda dapat menggunakan makro berikut dalam ekspresi CEL untuk tingkat akses kustom:
Makro
Deskripsi
has(e.f)
Menguji apakah kolom tersedia. Lihat Pemilihan Kolom untuk mengetahui detail selengkapnya. Contoh:
Menguji apakah predikat berlaku untuk semua elemen daftar e atau kunci peta e. Di sini, x adalah ID yang akan digunakan di p yang terikat ke elemen atau kunci. Makro all() menggabungkan hasil predikat per elemen dengan operator and (&&), jadi jika ada predikat yang dievaluasi sebagai salah (false), makro akan dievaluasi sebagai salah (false), dengan mengabaikan error dari predikat lain. Contoh:
Nilai ini menampilkan nilai salah karena tidak semua elemen lebih besar dari 1: [1,2,3].all(x, x > 1)
e.exists(x, p)
Seperti makro all(), tetapi menggabungkan hasil predikat dengan operator or (||). Contoh:
Ini menampilkan nilai benar (true) karena ada setidaknya satu elemen dalam daftar yang lebih besar dari 1: [1,2,3].exists(x, x > 1)
Memeriksa apakah sertifikat perusahaan yang terkait dengan perangkat cocok dengan penerbit: device.certificates.exists(cert, cert.is_valid && cert.issuer == "EMAILADDRESS=test_inter1@beyondcorp.in, CN=inter_1, OU=BCEDemo_1, O=BCEDemo, L=NCR, ST=UP, C=IN")
e.exists_one(x, p)
Seperti makro exists(), tetapi dievaluasi ke benar hanya jika predikat tepat satu elemen atau kunci dievaluasi ke benar, dan sisanya ke salah. Kombinasi hasil boolean lainnya akan dievaluasi sebagai salah (false), dan setiap kesalahan predikat akan menyebabkan makro memunculkan error. Contoh:
Ini menampilkan nilai salah karena ada lebih dari satu elemen yang lebih besar dari 1: [1,2,3].exists_one(x, x > 1)
Contoh ekspresi CEL
Bagian ini mencakup contoh ekspresi CEL yang digunakan untuk membuat tingkat akses
kustom.
Contoh ini menunjukkan tingkat akses yang mengharuskan ketentuan berikut terpenuhi untuk mengizinkan permintaan:
Salah satu hal berikut benar:
Perangkat tempat permintaan berasal menggunakan sistem operasi Windows desktop dan dimiliki oleh organisasi Anda.
Perangkat tempat permintaan berasal menggunakan sistem operasi Mac desktop, disetujui oleh administrator domain, dan menggunakan setidaknya MacOS 10.11.
Contoh ini menunjukkan tingkat akses yang mengharuskan kondisi berikut terpenuhi untuk mengizinkan permintaan:
Fungsi ekstensi certificateBindingState menentukan bahwa sertifikat yang diberikan pada waktu permintaan cocok dengan salah satu sertifikat perangkat yang didaftarkan saat perangkat didaftarkan dalam verifikasi endpoint.
[[["Mudah dipahami","easyToUnderstand","thumb-up"],["Memecahkan masalah saya","solvedMyProblem","thumb-up"],["Lainnya","otherUp","thumb-up"]],[["Sulit dipahami","hardToUnderstand","thumb-down"],["Informasi atau kode contoh salah","incorrectInformationOrSampleCode","thumb-down"],["Informasi/contoh yang saya butuhkan tidak ada","missingTheInformationSamplesINeed","thumb-down"],["Masalah terjemahan","translationIssue","thumb-down"],["Lainnya","otherDown","thumb-down"]],["Terakhir diperbarui pada 2025-07-10 UTC."],[[["This document outlines four primary objects—`origin`, `request.auth`, `levels`, and `device`—used to construct Common Expression Language (CEL) expressions for Access Context Manager, each containing specific attributes to evaluate access levels."],["The `origin` object offers attributes like `ip` and `region_code` to define the request's source, allowing checks like whether a user is within a specific IP range or region, and supports the use of `inIpRange` to compare ip addresses."],["The `request.auth` object verifies user authentication, identifying the user's ID (`principal`) and the method used for authentication, such as password, push notification, or security key, via `claims.crd_str` attributes."],["The `device` object provides detailed information about the requesting device, including its encryption status, admin approval, ownership, OS type, and device-specific attributes for third-party vendor data, and the use of security protocols."],["The document also includes function and macro details for defining CEL expressions, such as `inIpRange`, `device.versionAtLeast`, `certificateBindingState`, `has`, and `e.all` , `e.exists` and `e.exists_one` for constructing complex access control rules."]]],[]]