Notifica

Duet AI ha cambiato nome in Gemini per Google Workspace. Scopri di più

Controllare l'accesso alle app in base al contesto utente e dispositivo

Esempi di accesso sensibile al contesto per la modalità avanzata

In questo articolo vengono descritti i casi d'uso per l'accesso sensibile al contesto che includono criteri che utilizzano livelli di accesso personalizzati.  In questi esempi i livelli di accesso personalizzati sono creati in modalità avanzata utilizzando il linguaggio CEL (Common Expressions Language).

Tieni presente che, se preferisci, puoi utilizzare anche funzioni e macro durante la creazione di livelli di accesso personalizzati utilizzando le espressioni CEL.

Per esempi di livelli di accesso sviluppati nella modalità di base (utilizzando l'interfaccia di accesso sensibile al contesto), vedi Esempi di accesso sensibile al contesto per la modalità di base.

Esempi di autenticazione

Apri sezione  |  Comprimi tutto

Consentire l'accesso agli utenti in base alla sicurezza delle loro credenziali

Per migliorare la sicurezza dell'accesso alle applicazioni che contengono dati sensibili, puoi determinare in che modo l'utente ha eseguito l'autenticazione nel sistema per stabilire se può accedere all'applicazione.

Ad esempio, è possibile permettere agli utenti che effettuano l'accesso solo con password di accedere solo ad applicazioni che non contengono informazioni sensibili, mentre gli utenti che effettuano l'accesso con un token di sicurezza hardware come secondo fattore possono essere autorizzati ad accedere alle applicazioni aziendali più sensibili.

Questo livello di accesso utilizza gli attributi request.auth per verificare che gli utenti accedano utilizzando sia una password che un token hardware per la verifica in due passaggi e abbiano quindi accesso alle applicazioni sensibili.

request.auth.claims.crd_str.pwd == true && request.auth.claims.crd_str.hwk == true
Consentire l'accesso agli utenti con credenziali di autenticazione efficaci

Spesso gli amministratori vogliono applicare l'accesso alle risorse aziendali solo dopo che l'utente si è autenticato con credenziali efficaci. L'esempio seguente utilizza gli attributi levelsrequest.auth come segue: 

  • Se un utente utilizza un dispositivo aziendale, sarà sufficiente usare qualsiasi metodo MFA, ad eccezione degli SMS (i metodi possono essere notifiche push, token di sicurezza hardware o software, o password unica)
  • Se un utente utilizza un dispositivo non aziendale, è necessario utilizzare un token di sicurezza hardware o software

// Richiede una MFA di base (non SMS) sui dispositivi aziendali e un token di sicurezza (hardware o software) in caso contrario
levels.Request_Secure_Device &&
(
  (
     levels.Require_Corporate_Device &&
     request.auth.claims.crd_str.mfa &&
     !request.auth.claims.crd_str.sms
  ) ||
  (
     !levels.Request_Corporate_Device &&
     (
        request.auth.claims.crd_str.hwk || request.auth.claims.crd_str.swk
     )
  )
)

Esempi di dispositivi

Apri sezione  |  Comprimi tutto e torna all'inizio della pagina

Consentire l'accesso da un dispositivo in base agli indicatori segnalati da un partner BeyondCorp Alliance

Puoi utilizzare gli indicatori dei dispositivi segnalati da un partner BeyondCorp Alliance. In questo esempio, l'applicazione è il software Lookout.

Questo livello di accesso utilizza l'attributo device per verificare che il dispositivo utilizzato per accedere a Google Workspace sia segnalato da Lookout come conforme ai criteri e che il punteggio di integrità sia Molto buono.

device.vendors["Lookout"].is_compliant_device == true && device.vendors["Lookout"].device_health_score == DeviceHealthScore.VERY_GOOD
Consentire l'accesso solo da un browser Chrome gestito con gli ultimi aggiornamenti

Questo livello di accesso utilizza l'attributo device per verificare che gli utenti utilizzino la versione più recente di un browser Chrome gestito e consente l'accesso solo tramite tale browser.

device.chrome.management_state == ChromeManagementState.CHROME_MANAGEMENT_STATE_BROWSER_MANAGED && device.chrome.versionAtLeast("94.0.4606.81") 
Consentire l'accesso utilizzando un certificato aziendale

Puoi utilizzare i certificati aziendali per i dispositivi con livelli di accesso personalizzati per determinare se il dispositivo è una risorsa di proprietà dell'azienda. Questo livello di accesso utilizza l'attributo device per la verifica degli asset. Per ulteriori informazioni ed esempi, consulta Configurazione delle condizioni dei certificati aziendali.

Un dispositivo può avere più di un certificato. I certificati aziendali vengono utilizzati in un livello di accesso personalizzato mediante la macro exists(). Ad esempio:

device.certificates.exists(cert, predicate)

In questo esempio, cert è un identificatore semplice da utilizzare nella variabile predicate per l'associazione al certificato aziendale del dispositivo. La macro exists() combina i risultati del predicato per ciascun elemento con l'operatore or (||). Le macro restituiscono vero se almeno un certificato soddisfa l'espressione del predicato.

Nella tabella seguente sono elencati gli attributi che puoi utilizzare per creare espressioni CEL da usare con livelli di accesso personalizzati. Tieni presente che i confronti delle stringhe sono sensibili alle maiuscole.

Attributo Descrizione Esempio di espressione del
predicato
(dove cert è un
identificatore di macro)
is_valid

Vero se il certificato è valido e non è scaduto
(booleano)

cert.is_valid
cert_fingerprint Impronta del certificato
(SHA256 base64 senza padding)
cert.cert_fingerprint == origin.
clientCertFingerprint()
root_ca_fingerprint Impronta del certificato CA radice utilizzato per firmare questo certificato
(SHA256 base64 senza padding)
cert.root_ca_fingerprint == "the_fingerprint"
issuer

Nome dell'autorità di certificazione
(nomi completamente espansi)

Per trovare il nome dell'autorità di certificazione, esegui il comando seguente sul certificato:

$ openssl x509 -in ca_1.crt -noout
-issuer
issuer=
/C=IN/ST=UP/L=NCR/O=BCEDemo/
OU=BCEDemo_1/CN=inter_1/
emailAddress=test_inter1@beyondcorp.in

La stringa dell'autorità di certificazione usata nel livello di accesso è l'inverso dell'output e il carattere "/" viene sostituito da una virgola, ad esempio:

EMAILADDRESS=test_inter1@beyondcorp.in, CN=inter_1, OU=BCEDemo_1, O=BCEDemo, L=NCR, ST=UP, C=IN

cert.issuer == "EMAILADDRESS=test_inter1
@beyondcorp.in, CN=inter_1, OU=BCEDemo_1, O=BCEDemo, L=NCR, ST=UP, C=IN"
subject Nome del soggetto del certificato
(nomi completamente espansi)
cert.subject == "CA_SUB"
serial_number

Numero di serie del certificato
(stringa)

cert.serial_number == "123456789"
template_id ID modello dell'estensione X.509 CertificateTemplate del certificato
(stringa)
cert.template_id == "1.3.6.1.4.1.311.21.
8.15608621.11768144.
5720724.
16068415.6889630.81.
2472537.7784047"

Esempi di criteri di uso comune:

Convalida che il dispositivo abbia un certificato aziendale valido firmato dal certificato radice aziendale

device.certificates.exists(cert, cert.is_valid && cert.root_ca_fingerprint == "ROOT_CA_FINGERPRINT")

Convalida l'autorità di certificazione del certificato aziendale sul dispositivo

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”)

Consentire l'accesso ai dispositivi in cui sono attivi la crittografia del disco e il blocco schermo

In questo esempio l'attributo device viene utilizzato per richiedere l'attivazione sia della crittografia del disco sia del blocco schermo. Inoltre, il dispositivo deve essere approvato dagli amministratori.

Per impostazione predefinita, tutti i dispositivi creati mediante Endpoint Verification sono approvati. Tuttavia, in alcuni casi potrebbe essere opportuno bloccare un dispositivo, ad esempio quando viene smarrito. In questi casi, non vuoi che questi dispositivi siano in grado di accedere alle risorse aziendali.

Per altri esempi di livelli di accesso contenuti in questo documento, supponiamo che il nome del livello di accesso sia Require_Secure_Device.  

// Richiede la crittografia del disco e il blocco schermo attivati 
// Applicabile a tutte le principali piattaforme (Windows, Mac, Linux, CrOS, iOS, Android)
// In quanto livello di accesso di base, tutti gli altri dovrebbero dipendere da questo
device.encryption_status == DeviceEncryptionStatus.ENCRYPTED &&
device.is_secured_with_screenlock &&
device.is_admin_approval_device

Consentire l'accesso ai dispositivi che utilizzano il browser Chrome con i requisiti di sicurezza di base

In questo esempio, il livello di accesso utilizza l'attributo device per richiedere il browser Chrome con requisiti di sicurezza di base.

// Richiede che Chrome sia gestito a livello di profilo o browser, deve avere
// attivato il reporting sugli eventi di sicurezza e deve eseguire la versione 97 o successive
levels.Request_Secure_Device &&
(
device.chrome.management_state == ChromeManagementState.CHROME_MANAGEMENT_STATE_BROWSER_MANAGED ||
device.chrome.management_state == ChromeManagementState.CHROME_MANAGEMENT_STATE_PROFILE_MANAGED
) &&
device.chrome.is_security_event_analysis_enabled &&
device.chrome.versionAtLeast("97")

Consentire l'accesso ai dispositivi che utilizzano il browser Chrome con requisiti di sicurezza

In questo esempio l'attributo device viene utilizzato per richiedere che l'utente provenga da un browser o un profilo Chrome gestito e che Chrome abbia attivato i connettori di protezione dei dati e dalle minacce. In questo esempio viene utilizzato l'attributo levels per fare riferimento al livello di accesso "Richiede Chrome gestito" descritto in precedenza. L'esempio seguente presuppone che il livello di accesso dipendente sia denominato Require_Managed_Chrome

// Richiede Chrome gestito (che dipende dal livello di accesso "Require_Managed_Chrome")
// e richiede sia l'ispezione dei contenuti per i download sia il controllo degli URL abilitati
levels.Request_Managed_Chrome &&
device.chrome.is_file_download_analysis_enabled &&
device.chrome.is_Real_url_check_enabled

Consentire l'accesso ai dispositivi di proprietà dell'azienda

Un requisito per controllare l'accesso è consentire quest'ultimo solo quando il dispositivo è gestito o è di proprietà dell'azienda. Esistono molti modi per stabilire se un dispositivo è di proprietà dell'azienda o gestito, ad esempio:

  • Se il dispositivo ha un numero di serie corrispondente a quello presente nel sistema di gestione delle risorse dell'azienda
  • Se il dispositivo ha un certificato aziendale valido emesso dall'azienda

Questi due approcci possono essere utilizzati nel seguente livello di accesso personalizzato che usa gli attributi levels e device per determinare se il dispositivo è di proprietà dell'azienda o è gestito.

// Il dispositivo è aziendale se è soddisfatta una delle seguenti condizioni:
// 1. Se il numero di serie corrisponde a quello caricato dall'amministratore
// 2. Se il dispositivo ha un certificato valido emesso dall'azienda
levels.Require_Secure_Device &&
(
   device.is_corp_owner_device ||
   device.certificate.exists(cert, cert.is_valid && cert.root_ca_fingerprint == "SOME_ROOT_CA_FINGERPRINT")
)

L'impronta è il digest sha256 (in formato binario) con codifica base64 senza padding del certificato con codifica DER. La stringa può essere generata dal certificato in formato PEM utilizzando la procedura seguente con openssl:

$ openssl x509 -in cert.pem -out cert.der -outform DER
$ openssl dgst -sha256 -binary cert.der >  digest.sha
$ openssl base64 -in digest.sha

Consentire l'accesso solo quando i dati del dispositivo provenienti da CrowdStrike sono aggiornati
Esistono due timestamp emessi da CrowdStrike nell'ambito del punteggio Zero Trust Assessments (ZTA) di Falcon:
  • Emesso al momento del timestamp (iat) 
  • Timestamp di scadenza (exp) (che nella release corrente sembra cadere due settimane dopo l'emissione al momento del timestamp)

Il livello di accesso utilizza l'attributo device per garantire che i dati di CrowdStrike siano aggiornati. Tieni presente che BeyondCorp Enterprise ha un ritardo innato di 90 minuti per la ricezione di qualsiasi nuova valutazione di Falcon ZTA, pertanto l'utilizzo di durate inferiori a un'ora è sconsigliato. 

// Assicurati che una di queste condizioni sia vera per i dati di Crowdstrike:
// Deve soddisfare una di queste condizioni
// 1. Il dispositivo è stato valutato nell'ultimo giorno
// 2. La valutazione non è scaduta (2 settimane dall'ultimo iat)
“CrowdStrike” in device.vendors && (
   request.time - timestamp(device.vendors["CrowdStrike"].data["iat"]) < duration("1d") ||
   timestamp(device.vendors["CrowdStrike"].data["exp"]) - request.time > duration("0m")
)

Consentire l'accesso quando BeyondCorp Alliance considera un dispositivo conforme

BeyondCorp Enterprise collabora con molti partner dell'ecosistema BeyondCorp Alliance per integrare gli indicatori e il contesto dei dispositivi nella soluzione BeyondCorp Enterprise. I partner possono condividere qualsiasi numero di attributi con BeyondCorp, tra cui l'attributo is_compliance_device. Nel seguente esempio viene utilizzato l'attributo device per mostrare come possiamo verificare se uno qualsiasi dei partner BeyondCorp Alliance ha integrato BeyondCorp Enterprise e considerare il dispositivo conforme.

La macro existsestende l'espressione per ciascuno dei partner BeyondCorp Alliance con un operatore || (or).

// Verifica se uno dei partner BCA considera il dispositivo conforme
["CrowdStrike", "Tanium", "PANW", "Check Point", "Lookout"].exists(
   v, v in device.vendors && device.vendors[v].is_compliant_device
)

Consentire l'accesso quando lo stato di avvio verificato di Android è verde

In questo esempio vengono utilizzati gli attributi device per garantire che sui dispositivi sia installata una versione sicura di Android.

L'avvio verificato controlla se il codice eseguito proviene da una fonte attendibile (di solito gli OEM dei dispositivi), anziché da un utente malintenzionato o da un danneggiamento. Per maggiori dettagli, vedi Avvio verificato.

// Richiede uno stato di avvio verificato di Android verde
device.android_device_security.verify_boot == true

Consentire l'accesso ai dispositivi che superano i controlli di conformità CTS

In questo esempio vengono utilizzati gli attributi device per richiedere che i dispositivi superino i controlli di conformità del Compatibility Test Suite (CTS). Per maggiori dettagli, vai a Compatibility Test Suite.

// Richiede che i dispositivi superino i controlli di conformità CTS
device.android_device_security.cts_profile_match == true

Consentire l'accesso ai dispositivi su cui è attiva la funzionalità Verifica app di Google Play Protect

In questo esempio vengono utilizzati gli attributi device per richiedere che sui dispositivi sia attivata Verifica app di Google Play Protect.

Verifica app esegue la scansione delle app installate da origini diverse da Google Play per rilevare eventuali minacce. Inoltre, esegue periodicamente la scansione dei dispositivi per rilevare app potenzialmente dannose. Verifica app è attiva per impostazione predefinita. Per i dispositivi con gestione avanzata, puoi specificare se gli utenti possono disattivarla. Per saperne di più, vedi Applicare impostazioni per i dispositivi mobili Android.

// Richiede che sui dispositivi sia attivata Verifica app di Google Play Protect
device.android_device_security.verify_apps_enabled == true

Non consentire l'accesso ai dispositivi con app potenzialmente dannose

In questo esempio vengono utilizzati gli attributi device per negare l'accesso ai dispositivi con app potenzialmente dannose. Queste app sono spesso chiamate malware. Per maggiori dettagli, vedi Applicazioni potenzialmente dannose.

// Nega l'accesso ai dispositivi che hanno app potenzialmente dannose android_device_security.has_potentially_harmful_apps != true

Esempi di accesso in base al tempo

Apri sezione  |  Comprimi tutto e torna all'inizio della pagina

Consentire l'accesso ai lavoratori turnisti solo durante le ore del turno

Le aziende vogliono assicurarsi che i lavoratori che fanno i turni possano accedere alle risorse aziendali solo durante le ore del turno. I seguenti livelli di accesso utilizzano l'attributo levels per definire tre turni dal lunedì al venerdì.

// Turno 1 - Dal lunedì al venerdì, da mezzanotte alle 08:00
levels.Require_Secure_Device &&
request.time.getDayOfWeek("America/Los_Angeles") >= 1 &&
request.time.getDayOfWeek("America/Los_Angeles") <= 5 &&
request.time.timeOfDay("America/Los_Angeles").between('00:00:00', '08:00:00')


// Turno 2 - Dal lunedì al venerdì, dalle 08:00 alle 16:00
levels.Require_Secure_Device &&
request.time.getDayOfWeek("America/Los_Angeles") >= 1 &&
request.time.getDayOfWeek("America/Los_Angeles") <= 5 &&
request.time.timeOfDay("America/Los_Angeles").between('08:00:00', '16:00:00')


// Turno 3 - Dal lunedì al venerdì, dalle 16:00 a mezzanotte
levels.Require_Secure_Device &&
request.time.getDayOfWeek("America/Los_Angeles") >= 1 &&
request.time.getDayOfWeek("America/Los_Angeles") <= 5 &&
request.time.timeOfDay("America/Los_Angeles").between('16:00:00', '00:00:00')


// Consenti ai lavoratori che fanno i turni di accedere alle risorse dal lunedì al venerdì dalle 9:00 alle 17:00, ad eccezione del 4 luglio.
levels.Require_Secure_Device &&
request.time.getDayOfWeek("America/Los_Angeles") >= 1 &&
request.time.getDayOfWeek("America/Los_Angeles") <= 5 &&
!(
  request.time.getMonth("America/Los_Angeles") == 6 &&
  request.time.getDayOfMonth("America/Los_Angeles") == 3
) &&
request.time.timeOfDay("America/Los_Angeles").between('09:30:00', '17:00:00')

Consentire accesso temporaneo

A volte le aziende vogliono consentire l'accesso di emergenza durante le emergenze quando l'amministratore non ha accesso a un dispositivo sicuro, ma ha bisogno dell'accesso di emergenza per un breve periodo di tempo. 

In questo caso, crea un livello di accesso vincolato a ora e sede utilizzando l'attributo levels e assegnalo all'amministratore specifico. L'assegnazione di questo livello di accesso è valida solo durante l'orario specificato. Allo scadere di questo periodo di tempo, l'accesso dell'amministratore verrà di nuovo controllato dai requisiti esistenti.

// Consenti l'accesso temporaneo alle risorse il 1° marzo 2022, dalle 22:00 a mezzanotte,
// e questo accesso deve provenire dall'interno della regione degli Stati Uniti.
levels.Require_Secure_Device &&
request.time.between('2022-03-01T23:00:00+08:00', '2022-03-02T23:59:59+08:00') &&
origin.region_code == “US”
// Tieni presente che l'ora di fine è esclusa, pertanto il periodo di cui sopra potrebbe includere due secondi in cui
// gli utenti potrebbero non avere accesso. Un'altra opzione è usare questa opzione 
// !between('00:00:01','16:00:00')
 

Esempio di combinazione delle condizioni di due livelli

Definire un nuovo livello di accesso combinando le condizioni di due livelli di accesso

Questo livello di accesso utilizza gli attributi levels e richiede che gli utenti soddisfino le condizioni combinate di due livelli di accesso. In questo esempio, access_level_name_1 e access_level_name_2 fanno riferimento a un nome interno.

levels.access_level_name_1 && levels.access_level_name_2

 

È stato utile?

Come possiamo migliorare l'articolo?
true
Inizia oggi la tua prova gratuita di 14 giorni oggi

Email professionale, spazio di archiviazione online, calendari condivisi, riunioni video e altro ancora. Inizia oggi la prova gratuita di G Suite.

Ricerca
Cancella ricerca
Chiudi ricerca
Menu principale
8965417867764386847
true
Cerca nel Centro assistenza
true
true
true
true
true
73010
false
false