Exempel på kontextmedveten åtkomst för avancerat läge

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_GOOD

Tillå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.
(boolesk)

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
(fullständigt utökade namn)

För att hitta utfärdarens namn, kör följande kommando på certifikatet:

$ openssl x509 -in ca_1.crt -noout
-utgivare
utgivare=
/C=IN/ST=UPP/L=NCR/O=BCEDemo/
OU=BCEDemo_1/CN=inter_1/
e-postadress=test_inter1@beyondcorp.in

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
(sträng)

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

Det finns två tidsstämplar som CrowdStrike utfärdar som en del av Falcon Zero Trust Assessments (ZTA)-poängen:
  • 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.