Den här artikeln beskriver användningsfall för kontextmedveten åtkomst som inkluderar principer som använder anpassade åtkomstnivåer. I dessa exempel skapar du anpassade åtkomstnivåer i avancerat läge med hjälp av Common Expressions Language (CEL) .
Om du föredrar kan du också använda funktioner och makron när du bygger anpassade åtkomstnivåer med hjälp av CEL-uttryck.
För exempel på åtkomstnivåer som utvecklats i grundläggande läge (med hjälp av det kontextmedvetna åtkomstgränssnittet), gå till Exempel på kontextmedvetna åtkomstnivåer för grundläggande läge .
Exempel på autentisering
Tillåt åtkomst för användare baserat på styrkan på användarens inloggningsuppgifter
För att förbättra säkerheten för åtkomst till applikationer som innehåller känsliga uppgifter kan du bestämma hur användaren autentiserar sig mot systemet för att avgöra om de får åtkomst till applikationen.
Till exempel kan användare som är inloggade med enbart ett lösenord bara få åtkomst till applikationer som inte innehåller någon känslig information, medan en användare som är inloggad med en hårdvarusäkerhetsnyckel som en andra faktor kan få åtkomst till de känsligaste företagsapplikationerna.
Denna åtkomstnivå använder request.auth -attribut för att verifiera att användarna loggar in med både ett lösenord och en hårdvarunyckel för tvåstegsverifiering och kan komma åt känsliga applikationer.
request.auth.claims.crd_str.pwd == true && request.auth.claims.crd_str.hwk == true
Tillåt åtkomst för användare med starka autentiseringsuppgifter
Ofta vill administratörer endast tvinga fram åtkomst till företagsresurser efter att användaren har autentiserat sig med starka autentiseringsuppgifter. Följande exempel använder attributen levels och request.auth enligt följande:
- Om en användare kommer från en företagsenhet räcker vilken MFA-metod som helst, förutom SMS (metoder kan vara push-notiser, säkerhetsnyckel för hårdvara eller mjukvara eller engångslösenord)
- Om en användare kommer från en enhet som inte tillhör företaget måste antingen en säkerhetsnyckel för hårdvara eller mjukvara användas
// Kräv grundläggande MFA (inte SMS) på företagsenheter och säkerhetsnyckel (hårdvara eller programvara) om inte
levels.Kräver_Säker_Enhet &&
(
(
nivåer.Kräver_Företagsenhet &&
request.auth.claims.crd_str.mfa &&
!begäran.aut.krav.crd_str.sms
) ||
(
!nivåer.Kräver_Företagsenhet &&
(
request.auth.claims.crd_str.hwk || request.auth.claims.crd_str.swk
)
)
)
Tillåt endast åtkomst till appar från DBSC-bundna sessioner
Begränsat till webbappar för stationära datorer och inte tillämpligt för mobilappar eller API:er
Du kan förbättra säkerheten för åtkomst till appar som innehåller känsliga uppgifter genom att kräva enhetsbundna sessionsuppgifter (DBSC). DBSC binder en användares session till deras enhet när de använder Chrome-webbläsaren i Windows, vilket kan minska risken för sessionskapning avsevärt.
Denna åtkomstnivå använder attributet request.auth för att verifiera att användarens sessioner är bundna till en specifik enhet. Om den är det beviljas åtkomst till appen. Om inte (vilket betyder att sessionen inte är DBSC-bunden) nekas åtkomst.
För att undvika fel, aktivera DBSC för alla användarkonton som omfattas av denna åtkomstnivå. Mer information finns i Aktivera DBSC .
Ställ in åtkomstnivån till övervakningsläge innan du aktiverar aktivt läge. I övervakningsläge kan du testa effekten av åtkomstnivåkontroll utan att störa användaråtkomsten.
Använd detta CEL-uttryck för att skapa din anpassade åtkomstnivå:
request.auth.sessionBoundToDevice(ursprung) == true
Använd detta CEL-uttryck för att endast tillämpa DBSC på Windows-enheter med Chrome-webbläsaren version 136 eller senare:
!(device.os_type == OsType.DESKTOP_WINDOWS && device.chrome.versionAtLeast("136.0.0")) || request.auth.sessionBoundToDevice(ursprung) == true
Enhetsexempel
Tillåt åtkomst från en enhet baserat på signaler rapporterade av en BeyondCorp Alliance-partner
Du kan använda enhetssignaler som rapporterats av en BeyondCorp Alliance-partner. I det här exemplet används Lookout Software som applikation.
Denna åtkomstnivå använder enhetsattributet för att verifiera att enheten som används för att komma åt Google Workspace rapporteras av Lookout som kompatibel med policyer och att hälsobetyget är Mycket bra.
device.vendors["Lookout"].is_compliant_device == true && device.vendors["Lookout"].device_health_score == DeviceHealthScore.VERY_GOODTillåt endast åtkomst från en hanterad Chrome-webbläsare med de senaste uppdateringarna
Denna åtkomstnivå använder enhetsattributet för att verifiera att användare använder den senaste versionen av en hanterad Chrome-webbläsare och tillåter endast åtkomst via en sådan webbläsare.
device.chrome.management_state == ChromeManagementState.CHROME_MANAGEMENT_STATE_BROWSER_MANAGED && device.chrome.versionAtLeast("94.0.4606.81")Tillåt åtkomst med ett företagscertifikat
Du kan använda företagscertifikat för enheter i anpassade åtkomstnivåer för att avgöra om en enhet är en företagsägd tillgång. Denna åtkomstnivå använder enhetsattributet för tillgångsverifiering. Läs Konfigurera villkor för företagscertifikat för mer information och exempel.
En enhet kan ha mer än ett certifikat. Företagscertifikat används i en anpassad åtkomstnivå med hjälp av makrot exists() . Till exempel:
enhet.certifikat.finns(cert, predikat)
I det här exemplet är cert en enkel identifierare som används i variabelpredikatet för att binda till enhetens företagscertifikat. Makrot exists() kombinerar predikatresultat per element med operatorn or (||). Makron returnerar sant om minst ett certifikat uppfyller predikatuttrycket.
Tabellen nedan listar attribut som du kan använda för att skapa CEL-uttryck som ska användas med anpassade åtkomstnivåer. Observera att strängjämförelser är skiftlägeskänsliga.
| Attribut | Beskrivning | Exempel på predikat uttryck (där cert är en identifierare för makron) |
|---|---|---|
| är_giltig | Sant om certifikatet är giltigt och inte har löpt ut. | cert.is_valid |
| cert_fingeravtryck | Fingeravtryck av certifikatet (base64 ofylld SHA256) | cert.cert_fingeravtryck == ursprung. klientCertFingeravtryck() |
| root_ca_fingeravtryck | Fingeravtryck för rot-CA-certifikatet som används för att signera detta certifikat (base64 ofylld SHA256) | cert.root_ca_fingeravtryck == "fingeravtrycket" |
| utgivare | Utgivarens namn För att hitta utfärdarens namn, kör följande kommando på certifikatet: $ openssl x509 -in ca_1.crt -noout Utfärdarsträngen som används i åtkomstnivån är omvänd mot utdata och "/" ersätts med ett kommatecken, till exempel: E-POSTADRESS=test_inter1@beyondcorp.in, CN=inter_1, OU=BCEDemo_1, O=BCEDemo, L=NCR, ST=UP, C=IN | cert.utfärdare == "E-POSTADRESS=test_inter1 @beyondcorp.in, CN=inter_1, OU=BCEDemo_1, O=BCEDemo, L=NCR, ST=UPP, C=IN" |
| ämne | Ämnesnamn för certifikatet (fullständigt utökade namn) | cert.subject == "CA_SUB" |
| serienummer | Certifikatets serienummer | cert.serienummer == "123456789" |
| mall_id | Mall-ID för X.509-tillägget Certifikatmall för certifikatet (sträng) | cert.mall_id == "1.3.6.1.4.1.311.21. 8.15608621.11768144. 5720724. 16068415.6889630.81. 2472537.7784047" |
Exempel på vanligt förekommande policyer:
Validera att enheten har ett giltigt företagscertifikat signerat av företagets rotcertifikat
enhet.certifikat.finns.(cert, cert.är_giltigt && cert.root_ca_fingeravtryck == "ROOT_CA_FINGERAVTRYCK")
Validera utfärdaren av företagscertifikatet på enheten
device.certificates.exists(cert, cert.is_valid && cert.issuer == "EMAILADRESS=test_inter1@beyondcorp.in, CN=inter_1, OU=BCEDemo_1, O=BCEDemo, L=NCR, ST=UP, C=IN")
Tillåt åtkomst till enheter med diskkryptering och skärmlås aktiverat
Det här exemplet använder attributet device för att kräva att både diskkryptering och skärmlås är aktiverade. Dessutom måste enheten godkännas av administratörer.
Som standard godkänns alla enheter som skapas av Endpoint Verification. Det finns dock fall där du kanske vill blockera en enhet, till exempel när en enhet förloras. I dessa fall vill du inte att dessa enheter ska kunna komma åt företagets resurser.
För andra exempel på åtkomstnivåer i det här dokumentet, anta att denna åtkomstnivå har namnet Require_Secure_Device .
// Kräv att diskkryptering och skärmlås är aktiverat
// Detta gäller för alla större plattformar (Windows, Mac, Linux, CrOS, iOS, Android)
// Detta är grundläggande och bör förlitas på av alla andra åtkomstnivåer
device.encryption_status == Enhetskrypteringsstatus.KRYPTAD &&
enheten.är_säkrad_med_skärmlås &&
device.is_admin_approved_device
Tillåt åtkomst till enheter som använder Chrome-webbläsaren med grundläggande säkerhetskrav
I det här exemplet använder åtkomstnivån enhetsattributet för att kräva Chrome-webbläsaren med grundläggande säkerhetskrav.
// Kräv att Chrome hanteras på profil- eller webbläsarnivå, måste ha
// rapportering av säkerhetshändelser aktiverad och måste vara version 97 eller senare
levels.Kräver_Säker_Enhet &&
(
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 &&
enhet.chrome.versionMinst("97")
Tillåt åtkomst till enheter som använder Chrome-webbläsaren med säkerhetskrav
Det här exemplet använder attributet device för att kräva att användaren kommer från en hanterad Chrome-webbläsare eller -profil, och att Chrome har hot- och dataskyddskopplingar aktiverade. Exemplet använder attributet levels för att referera till den tidigare beskrivna åtkomstnivån Require Managed Chrome. Följande exempel förutsätter att den beroende åtkomstnivån heter Require_Managed_Chrome .
// Kräv hanterad Chrome (beroende på åtkomstnivån "Require_Managed_Chrome")
// och kräver innehållskontroll för nedladdningar samt URL-kontroll aktiverad
nivåer.Kräver_Hanterad_Chrome &&
device.chrome.is_file_download_analysis_enabled &&
device.chrome.is_realtime_url_check_enabled
Tillåt åtkomst till företagsägda enheter
Ett krav för att kontrollera åtkomst är att endast tillåta åtkomst när enheten hanteras eller ägs av företaget. Det finns många sätt att avgöra om en enhet är företagsägd eller hanterad, inklusive:
- Om en enhet har ett serienummer som matchar ett som finns i företagets system för tillgångshantering
- Om en enhet har ett giltigt företagscertifikat som utfärdats av företaget
Dessa två metoder kan användas i följande anpassade åtkomstnivå som använder nivåer och enhetsattribut för att avgöra om enheten är företagsägd eller hanterad.
// Enheten är ett företag om ett av följande villkor är uppfyllt:
// 1. Om serienumret matchar det som administratören har laddat upp
// 2. Om enheten har ett giltigt företagsutfärdat certifikat
levels.Kräver_Säker_Enhet &&
(
enhet.är_företagsägd_enhet ||
enhet.certifikat.exists(cert, cert.is_valid && cert.root_ca_fingerprint == "SOME_ROOT_CA_FINGERPRINT")
)
Fingeravtrycket är den opaddaterade base64-kodade SHA256-sammanfattningen (i binärt format) av det DER-kodade certifikatet. Strängen kan genereras från certifikatet i PEM-format med hjälp av följande procedur med openssl:
$ openssl x509 -in cert.pem -out cert.der -outform DER
$ openssl dgst -sha256 -binär cert.der > digest.sha
$ openssl base64 -in digest.sha
Tillåt endast åtkomst när enhetsdata från CrowdStrike är färsk
- Utfärdad vid tidsstämpel (iat)
- Utgångstidsstämpel (exp)
Åtkomstnivån använder enhetsattributet för att säkerställa att CrowdStrike-data är aktuell. Observera att Chrome Enterprise Premium har en inneboende fördröjning på 90 minuter för att konsumera nya bedömningar från Falcon ZTA, så det är inte lämpligt att använda varaktigheter på mindre än en timme.
// Se till att ett av dessa villkor är sant för data från Crowdstrike:
// Måste uppfylla ett av dessa villkor
// 1. Enheten utvärderades inom det senaste dygnet
// 2. Bedömningen har inte löpt ut (2 veckor sedan senaste IAT)
"CrowdStrike" i device.vendors && (
request.time - timestamp(device.vendors["CrowdStrike"].data["iat"]) < duration("1d") ||
timestamp(device.vendors["CrowdStrike"].data["exp"]) - request.time > duration("0m")
)
Tillåt åtkomst när BeyondCorp Alliance anser att en enhet är kompatibel
Chrome Enterprise Premium samarbetar med många BeyondCorp Alliance-ekosystempartners för att integrera sina enhetssignaler och kontext i Chrome Enterprise Premium-lösningen. Partners kan dela ett valfritt antal attribut med Chrome Enterprise Premium, och ett av dem är attributet is_compliant_device . Följande exempel använder attributet device för att visa hur vi kan kontrollera om någon av BeyondCorp Alliance-partnerna har integrerat med Chrome Enterprise Premium och anser att enheten är kompatibel.
Makrot `exists` expanderar uttrycket för var och en av BeyondCorp Alliance-partnerna med en || (eller)-operator.
// Kontrollera om någon av BCA-partnerna anser att enheten är kompatibel
["CrowdStrike", "Tanium", "PANW", "Check Point", "Utkik"].exists(
v, v i device.vendors && device.vendors[v].is_compliant_device
)
Tillåt åtkomst när statusen för verifierad start av Android är grön
Det här exemplet använder enhetsattribut för att säkerställa att enheterna kör en säker version av Android.
Verifierad start kontrollerar om exekverad kod kommer från en betrodd källa (vanligtvis enhets-OEM-tillverkare), snarare än från en angripare eller korrupt kod. För mer information, gå till Verifierad start .
// Kräv grön Android-verifierad startstatus
enhet.android_device_security.verified_boot == sant
Tillåt åtkomst till enheter som klarar CTS-efterlevnadskontroller
Det här exemplet använder enhetsattribut för att kräva att enheter klarar Compatibility Test Suite (CTS). För mer information, gå till Compatibility Test Suite .
// Kräv att enheter klarar CTS-efterlevnadskontroller
device.android_device_security.cts_profile_match == sant
Tillåt åtkomst till enheter som har Google Play Protect Verify Apps aktiverade
Det här exemplet använder enhetsattribut för att kräva att enheter har Google Play Protect Verify Apps aktiverade.
Verifiera appar söker igenom appar efter hot när de installeras från andra källor än Google Play. Den söker även regelbundet igenom enheter efter potentiellt skadliga appar. Verifiera appar är aktiverat som standard. För enheter med avancerad hantering kan du ange om användare kan inaktivera det. Mer information finns i Tillämpa inställningar för Android-mobila enheter .
// Kräv att enheter har Google Play Protect Verify Apps aktiverade
device.android_device_security.verify_apps_enabled == sant
Tillåt inte åtkomst till enheter som har potentiellt skadliga appar
Det här exemplet använder enhetsattribut för att neka åtkomst till enheter som har potentiellt skadliga appar. Dessa appar kallas ofta skadlig kod. Mer information finns i Potentiellt skadliga appar .
// Neka åtkomst till enheter som har potentiellt skadliga apparandroid_device_security.has_potentially_harmful_apps != true
Exempel på tidsbaserad åtkomst
Tillåt endast skiftarbetare tillträde under deras arbetstid
Företag vill se till att deras skiftarbetare endast kan komma åt företagets resurser under sina skifttider. Följande åtkomstnivåer använder attributet levels för att definiera 3 skift under måndag till fredag.
// Skift 1 - måndag till fredag, midnatt till 8
levels.Kräver_Säker_Enhet &&
request.time.getDayOfWeek("Amerika/Los_Angeles") >= 1 &&
request.time.getDayOfWeek("Amerika/Los_Angeles") <= 5 &&
request.time.timeOfDay("Amerika/Los_Angeles").between('00:00:00', '08:00:00')
// Skift 2 - måndag till fredag, 8.00 till 16.00
levels.Kräver_Säker_Enhet &&
request.time.getDayOfWeek("Amerika/Los_Angeles") >= 1 &&
request.time.getDayOfWeek("Amerika/Los_Angeles") <= 5 &&
request.time.timeOfDay("Amerika/Los_Angeles").between('08:00:00', '16:00:00')
// Skift 3 - måndag till fredag, 16:00 till midnatt
levels.Kräver_Säker_Enhet &&
request.time.getDayOfWeek("Amerika/Los_Angeles") >= 1 &&
request.time.getDayOfWeek("Amerika/Los_Angeles") <= 5 &&
request.time.timeOfDay("Amerika/Los_Angeles").between('16:00:00', '00:00:00')
// Tillåt skiftarbetare att få tillgång till resurser från måndag till fredag mellan 9.00 och 17.00, förutom den fjärde juli.
levels.Kräver_Säker_Enhet &&
request.time.getDayOfWeek("Amerika/Los_Angeles") >= 1 &&
request.time.getDayOfWeek("Amerika/Los_Angeles") <= 5 &&
!(
request.time.getMonth("Amerika/Los_Angeles") == 6 &&
request.time.getDayOfMonth("Amerika/Los_Angeles") == 3
) &&
request.time.timeOfDay("Amerika/Los_Angeles").between('09:30:00', '17:00:00')
Tillåt tillfällig åtkomst
Företag vill ibland tillåta åtkomst till glaskrossar vid nödsituationer när administratören inte har tillgång till en säker enhet men behöver nödåtkomst under en kort tidsperiod.
I det här fallet skapar du en tids- och platsbegränsad åtkomstnivå med hjälp av attributet levels och tilldelar den till den specifika administratören. När denna åtkomstnivå tilldelas är den endast giltig under den angivna tiden. Efter att denna tidsperiod har löpt ut styrs administratörsåtkomsten återigen av befintliga krav.
// Tillåt tillfällig åtkomst till resurser den 1 mars 2022, mellan 22:00 och midnatt,
// och denna åtkomst måste komma inifrån den amerikanska regionen.
levels.Kräver_Säker_Enhet &&
request.time.between('2022-03-01T23:00:00+08:00', '2022-03-02T23:59:59+08:00') &&
ursprung.regionskod == "USA"
// Observera att sluttiden är exklusiv, så ovanstående har potentiellt 2 sekunder som
// användarna kanske inte har åtkomst. Ett annat alternativ är att använda detta
// !mellan('00:00:01','16:00:00')
Kombinera villkor från två nivåer exempel
Definiera en ny åtkomstnivå genom att kombinera villkor från två åtkomstnivåer
Denna åtkomstnivå använder levels- attribut och kräver att användare uppfyller de kombinerade villkoren för två åtkomstnivåer. I det här exemplet refererar access_level_name_1 och access_level_name_2 till Internal Name .
nivåer.åtkomstnivånamn_1 && nivåer.åtkomstnivånamn_2
Google, Google Workspace och relaterade varumärken och logotyper är varumärken som tillhör Google LLC. Alla andra företags- och produktnamn är varumärken som tillhör de företag som de är associerade med.