Mantieni tutto organizzato con le raccolte
Salva e classifica i contenuti in base alle tue preferenze.
In questa pagina vengono descritti in dettaglio gli oggetti e gli attributi utilizzati per creare le espressioni del Common Expression Language (CEL) per i livelli di accesso personalizzati. Sono riportati alcuni esempi.
Contiene gli attributi che descrivono il dispositivo da cui ha avuto origine la richiesta.
Attributi origin
Questa sezione elenca gli attributi supportati dall'oggetto origin.
Attributi
ip
Tipo
string
Description
L'indirizzo IP da cui ha avuto origine la richiesta. Se non è possibile determinare l'indirizzo IP, origin.ip restituisce un errore. Ti consigliamo di utilizzare inIpRange per verificare se l'indirizzo IP di origine si trova in un intervallo di indirizzi IP specifico, anziché fare un confronto di stringhe.
Esempio:
inIpRange(origin.ip, ["203.0.113.24"])
region_code
Tipo
string
Description
Il codice ISO 3166-1 alpha-2 per il paese o la regione da cui ha avuto origine la richiesta. Se non è possibile determinare il codice regione, origin.region_code restituisce un errore.
Esempio:
origin.region_code == "GB"
origin.region_code in ["US", "FR", "JP"]
Attributi request.auth
Questa sezione elenca gli attributi supportati dall'oggetto request.auth.
Attributi
principal
Tipo
stringa, elenco(stringa)
Description
L'ID univoco dell'utente che ha emesso la richiesta.
Il valore di request.auth.principal deve essere uno
o più ID utente unici. Gli UUID possono essere ottenuti utilizzando
l'API Admin SDK Directory.
Il valore deve essere nel seguente formato:
https://accounts.google.com/UUID
Dove UUID è l'UUID di un utente.
Esempio:
request.auth.principal == "https://accounts.google.com/1134924314572461055"
request.auth.principal in ["https://accounts.google.com/1134924314572461055", "https://accounts.google.com/3134824314572461115"]
claims.crd_str.pwd
Tipo
boolean
Description
Utente autenticato con una password.
Esempio:
request.auth.claims.crd_str.pwd == true
claims.crd_str.push
Tipo
boolean
Description
Utente autenticato con una notifica push sul dispositivo mobile.
Esempio:
request.auth.claims.crd_str.push == true
claims.crd_str.sms
Tipo
boolean
Description
Utente autenticato utilizzando un codice inviato via SMS o chiamata.
Esempio:
request.auth.claims.crd_str.sms == true
claims.crd_str.swk
Tipo
boolean
Description
Per la verifica in due passaggi è stato usato un token software, ad esempio un telefono, come token di sicurezza.
Esempio:
request.auth.claims.crd_str.swk == true
claims.crd_str.hwk
Tipo
boolean
Description
Per la verifica in due passaggi è stata utilizzata una chiave hardware, ad esempio una chiave Titan di Google.
Esempio:
request.auth.claims.crd_str.hwk == true
claims.crd_str.otp
Tipo
boolean
Description
Utente autenticato con metodi per password monouso (Google Authenticator e codici di backup).
Esempio:
request.auth.claims.crd_str.otp == true
claims.crd_str.mfa
Tipo
boolean
Description
Utente autenticato con uno dei metodi in questa tabella, ad eccezione di pwd.
Questa sezione elenca gli attributi supportati dall'oggetto levels.
Attributi
level name
Tipo
boolean
Description
level name corrisponde al nome di un livello di accesso
esistente.
Se in uso, oltre agli altri requisiti del livello di accesso personalizzato devono essere soddisfatte anche le condizioni del livello di accesso specificato.
Esempio:
levels.allow_corp_ips
Dove allow_corp_ips è il nome di un
livello di accesso.
Attributo device
Questa sezione elenca gli attributi supportati dall'oggetto device. Se non viene trovato alcun dispositivo associato agli identificatori nella richiesta, tutti i seguenti attributi restituiscono un errore.
Attributi
encryption_status
Tipo
enum
Description
Descrive lo stato della crittografia del dispositivo.
Valori enum:
enum DeviceEncryptionStatus {
// 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;
}
Se il dispositivo è stato approvato dall'amministratore di dominio.
Esempio:
device.is_admin_approved_device == true
is_corp_owned_device
Tipo
boolean
Description
Se il dispositivo è di proprietà dell'organizzazione.
Esempio:
device.is_corp_owned_device == true
is_secured_with_screenlock
Tipo
boolean
Description
Indica se sul dispositivo è abilitata la funzione di blocco schermo.
Esempio:
device.is_secured_with_screenlock == true
os_type
Tipo
enum
Description
Identifica il sistema operativo in uso sul dispositivo.
Valori enum:
enum OsType {
// 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;
}
L'oggetto vendors viene utilizzato per accedere ai dati forniti
da fornitori di sicurezza e gestione degli endpoint di terze parti. Ogni fornitore può completare tre attributi di primo livello condivisi: is_compliant_device, is_managed_device e device_health_score.
Inoltre, i fornitori possono fornire le proprie chiavi e valori a cui viene fatto riferimento tramite l'attributo data.
Le chiavi disponibili per l'attributo data variano in base al fornitore. Assicurati di essere coerente quando confronti la coppia chiave-valore nell'espressione del criterio. Ad esempio, se prevedi che il valore della chiave sia una stringa o un valore booleano, assicurati di confrontarlo con una stringa o un valore booleano nell'espressione criterio di conseguenza. Tieni presente che quando il valore è un numero intero, devi confrontarlo con un numero doppio nell'espressione delle norme.
Valori enum:
// Health score of the device as provided by the vendor (possibly third party).
enum DeviceHealthScore {
// 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;
}
È gestito dal browser, a livello di browser o di profilo e dall'azienda nel dominio corretto.
Un browser è considerato gestito se i criteri vengono gestiti e inviati centralmente e se il dominio del browser o del profilo gestito corrisponde a quello previsto sul lato server.
Controlla se il sistema operativo del dispositivo è almeno una determinata versione. Ti consigliamo di utilizzare questa funzione con l'attributo
device.os_type.
Esempio:
device.versionAtLeast("10.0") == true
certificateBindingState(origin, device)
Tipo
(Peer, DeviceType) -> numero intero
Description
Verifica se il certificato client associato all'origine corrisponde al dispositivo e segnala lo stato.
Lo stato restituito dalla funzione può essere uno dei seguenti:
Verifica se l'operando della stringa inizia con l'argomento prefisso.
Esempio:
"Sample string".startsWith("Sample")
endsWith()
Tipo
string.(string) -> bool
Description
Verifica se l'operando della stringa termina con l'argomento del suffisso.
Esempio:
"Sample string".endsWith("string")
origin.clientCertFingerprint()
Tipo
Origin.() -> stringa
Description
Restituisce l'impronta del certificato associato all'origine. Puoi utilizzarlo nelle macro per testare i certificati dei dispositivi.
Esempio:
// Checks if the enterprise certificate associated with the origin matches the device.
device.certificates.exists(cert, cert.is_valid && cert.cert_fingerprint == origin.clientCertFingerprint())
Macro per espressioni CEL
Puoi utilizzare le seguenti macro nelle espressioni CEL per i livelli di accesso personalizzati:
Macro
Descrizione
has(e.f)
Verifica se un campo è disponibile. Per ulteriori dettagli, consulta Selezione campi. Esempio:
Verifica se un predicato contiene tutti gli elementi di un elenco e o le chiavi di una mappa e. Qui x è un identificatore da usare in p che si associa all'elemento o alla chiave. La macro all() combina i risultati del predicato per elemento con l'operatore and (&&), quindi se un predicato restituisce false, la macro restituisce false, ignorando eventuali errori di altri predicati. Esempio:
Questo restituisce false perché non tutti gli elementi sono maggiori di 1: [1,2,3].all(x, x > 1)
e.exists(x, p)
Come la macro all(), ma combina i risultati del predicato con l'operatore or (||). Esempio:
Questo restituisce true perché è presente almeno un elemento nell'elenco maggiore di 1: [1,2,3].exists(x, x > 1)
Verifica se il certificato aziendale associato al dispositivo corrisponde all'emittente: 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)
Come la macro exists(), ma restituisce true solo se il predicato di esattamente un elemento o una chiave ha valore true e il resto è false. Qualsiasi altra combinazione di risultati booleani restituisce false e qualsiasi errore del predicato causa un errore nella macro. Esempio:
Questo codice restituisce false perché più di un elemento è maggiore di 1: [1,2,3].exists_one(x, x > 1)
Espressioni CEL di esempio
Questa sezione include esempi di espressioni CEL utilizzate per creare livelli di accesso personalizzati.
Esempio 1
device.encryption_status == DeviceEncryptionStatus.ENCRYPTED && (origin.region_code in ["US"] || device.is_admin_approved_device)
Questo esempio rappresenta un livello di accesso che richiede che vengano soddisfatte le seguenti condizioni per consentire una richiesta:
Il dispositivo da cui ha avuto origine la richiesta è criptato.
Una o più delle seguenti condizioni sono vere:
La richiesta ha avuto origine negli Stati Uniti.
Il dispositivo da cui ha avuto origine la richiesta è approvato dall'amministratore di dominio.
Questo esempio rappresenta un livello di accesso che richiede che vengano soddisfatte le seguenti condizioni per consentire una richiesta:
Una delle seguenti condizioni è vera:
Il dispositivo da cui ha avuto origine la richiesta utilizza un sistema operativo Windows
desktop ed è di proprietà della tua organizzazione.
Il dispositivo da cui ha avuto origine la richiesta utilizza un sistema operativo Mac desktop, è approvato dall'amministratore di dominio e utilizza almeno MacOS 10.11.
Questo esempio rappresenta un livello di accesso che richiede che venga soddisfatta la seguente condizione per consentire una richiesta:
La funzione di estensione certificateBindingState determina che il certificato presentato al momento della richiesta corrisponde a uno dei certificati del dispositivo registrati quando il dispositivo è stato registrato per la verifica endpoint.