Exempel på kontextkänslig åtkomst för avancerat läge

Utgåvor som stöds för den här funktionen: Frontline Standard och Frontline Plus, Enterprise Standard och Enterprise Plus, Education Standard och Education Plus, Chrome Enterprise Premium. Jämför utgåvor

I den här artikeln beskrivs användningstillfällen för kontextkänslig åtkomst, däribland policyer med anpassade åtkomstnivåer. I dessa exempel skapar du anpassade åtkomstnivåer i avancerat läge med hjälp av CEL (Common Expressions Language).

Om du vill så kan du även använda funktioner och makron när du skapar anpassade åtkomstnivåer med CEL-uttryck.

Exempel på åtkomstnivåer som har utvecklats i grundläggande läge (med gränssnittet för kontextkänslig åtkomst) finns i Exempel på kontextkänslig åtkomst för grundläggande läge.

Autentiseringsexempel

Tillåt användaråtkomst baserat hur starka användarens inloggningsuppgifter är

Du kan förbättra säkerheten för åtkomst till appar som innehåller känsliga uppgifter genom att fastställa hur användaren autentiserade sig i systemet för att avgöra om hen får åtkomst till appen.

Exempelvis får användare som har loggat in enbart med ett lösenord endast åtkomst till appar som inte innehåller 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öretagsapparna.

Denna åtkomstnivå använder attributen request.auth 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 appar.

request.auth.claims.crd_str.pwd == true && request.auth.claims.crd_str.hwk == true

Tillåta åtkomst till användare med starka autentiseringsuppgifter

Ofta vill administratörer ha åtkomst till företagsresurser efter att användaren har autentiserats med starka användaruppgifter. Följande exempel använder attributen levels och request.auth enligt följande:

  • Om en användare kommer från en företagsenhet kan alla metoder för flerfaktorsautentisering, förutom sms, (pushmeddelanden, hårdvaru- eller mjukvarusäkerhetsnyckel eller engångslösenord kan användas)
  • Om en användare har en enhet som inte är en företagsenhet måste en säkerhetsnyckel eller en mjukvarusäkerhetsnyckel användas

// Kräv grundläggande MFA (inte sms) på företagsenheter och säkerhetsnyckel (hårdvara eller mjukvara) om inte
levels.Require_Secure_Device &&
(
(
levels.Require_Corporate_Device &&
request.auth.claims.crd_str.mfa &&
!request.auth.claims.crd_str.sms
) ||
(
!levels.Require_Corporate_Device &&
(
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 datorer och gäller inte 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 användaruppgifter för session (DBSC). DBSC binder en användares session till enheten när hen använder webbläsaren Chrome på 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 kopplade till en specifik enhet. Om den är det beviljas åtkomst till appen. Om den inte är det (vilket innebär att sessionen inte är DBSC-bunden) nekas åtkomst.

Undvik åtkomstproblem genom att se till att användarkonton som tilldelas den här åtkomstnivån uppfyller de nödvändiga kraven. Mer information finns i Krav för att använda DBSC.

Ställ in åtkomstnivån på Övervakningsläge innan du aktiverar Aktivt läge. I övervakningsläget kan du testa effekten av tillämpning av åtkomstnivå utan att störa användaråtkomsten.

Använd det här CEL-uttrycket för att skapa en anpassad åtkomstnivå:

request.auth.sessionBoundToDevice(origin) == true

Använd det här CEL-uttrycket för att tillämpa DBSC endast på Windows-enheter med Chrome-webbläsare version 136 eller senare:

!(device.os_type == OsType.DESKTOP_WINDOWS && device.chrome.versionAtLeast("136.0.0")) || request.auth.sessionBoundToDevice(origin) == true

Enhetsexempel

Tillåt åtkomst från en enhet baserat på signaler som rapporteras av en BeyondCorp Alliance-partner

Du kan använda enhetssignaler som har rapporterats av en BeyondCorp Alliance-partner. I det här exemplet används Lookouts mjukvara som app.

Denna åtkomstnivå använder attributet device för att verifiera att enheten som används för åtkomst till Google Workspace rapporteras som policykompatibel av Lookout och statusen är Mycket bra.

device.vendors["Lookout"].is_compliant_device == true && device.vendors["Lookout"].device_health_score == DeviceHealthScore.VERY_GOOD

Tillåt bara åtkomst från en hanterad Chrome-webbläsare med de senaste uppdateringarna

Denna åtkomstnivå använder attributet device för att verifiera att användarna använder den senaste versionen av en hanterad Chrome-webbläsare och tillåter enbart å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 på anpassade åtkomstnivåer för att avgöra om en enhet är en företagsägd tillgång. Denna åtkomstnivå använder attributet device för tillgångsverifieringen. Mer information och fler exempel finns i Konfigurera villkor för företagscertifikat.

En enhet kan ha fler än ett certifikat. Företagscertifikat används på anpassad åtkomstnivå med makrot exists(). Exempel:

device.certificates.exists(cert, predicate)

I det här exemplet är cert en enkel identifierare som används i variabeln predicate för bindning till enhetens företagscertifikat. Makrot exists() kombinerar predicate-resultat per element med operatorn or (||). Makron returnerar true om minst ett certifikat uppfyller predicate-uttrycket.

I tabellen nedan listas 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å predicate-
uttryck
(där cert är en
identifierare för makron)
is_valid

Har värdet True om certifikatet är giltigt och inte har upphört att gälla.
(boolesk)

cert.is_valid
cert_fingerprint Fingeravtryck för certifikatet
(base64 unpadded SHA256)
cert.cert_fingerprint == origin.
clientCertFingerprint()
root_ca_fingerprint Fingeravtryck för rotcertifikatutfärdare som används för att signera certifikatet
(base64 unpadded SHA256)
cert.root_ca_fingerprint == "the_fingerprint"
issuer

Utfärdarens namn
(fullständigt namn)

Du hittar utfärdarens namn genom att köra följande kommando på certifikatet:

$ 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

Utfärdarsträngen som används på åtkomstnivån är motsatsen till utdata och / ersätts med ett kommatecken, till exempel:

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"
ämne Certifikatets ämnesnamn
(fullständigt namn)
cert.subject == "CA_SUB"
serial_number

Certifikatets serienummer
(sträng)

cert.serial_number == "123456789"
template_id Mall-id för X.509-tillägget CertificateTemplate för certifikatet
(sträng)
cert.template_id == "1.3.6.1.4.1.311.21.
8.15608621.11768144.
5720724.
16068415.6889630.81.
2472537.7784047"

Exempel på vanliga policyer:

Verifiera att enheten har ett giltigt företagscertifikat signerat av företagets rotcertifikat

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

Validera utfärdaren av företagscertifikatet på enheten

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

Tillåt åtkomst till enheter med diskkryptering och skärmlås aktiverat

I det här exemplet används device-attributet för att kräva att både diskkryptering och skärmlås aktiveras. Dessutom måste enheten godkännas av administratörer.

Som standard är alla enheter som har skapats med ändpunktsverifiering godkända. Det finns dock fall där du kanske vill blockera en enhet, till exempel när en enhet kommer bort. I dessa fall vill du inte att enheterna ska ha åtkomst till företagets resurser.

För andra exempel på åtkomstnivåer i det här dokumentet utgår vi från att åtkomstnivån har namnet Require_Secure_Device.

// Require disk encryption and screen lock enabled
// This is applicable across all major platforms (Windows, Mac, Linux, CrOS, iOS, Android)
// This foundational and should be depended upon by all other access levels
device.encryption_status == DeviceEncryptionStatus.ENCRYPTED &&
device.is_secured_with_screenlock &&
device.is_admin_approved_device

Tillåt åtkomst till enheter med webbläsaren Chrome med grundläggande säkerhetskrav

I det här exemplet använder åtkomstnivån attributet device för att kräva webbläsaren Chrome med grundläggande säkerhetskrav.

// Require Chrome to be managed at profile or browser level, must have
// security event reporting enabled and must be version 97 or greater
levels.Require_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")

Tillåta åtkomst till enheter med webbläsaren Chrome med säkerhetskrav

I det här exemplet används attributet device för att kräva att användaren kommer från en hanterad webbläsare eller profil i Chrome och att Chrome har aktiverat hot- och dataskyddsanslutare. I exemplet används levels-attribut för att hänvisa till den tidigare beskrivna åtkomstnivån Kräv hanterad Chrome. Följande exempel förutsätter att den beroende åtkomstnivån heter Require_Managed_Chrome.

// Require managed chrome (dependent on "Require_Managed_Chrome" access level)
// and require content inspection for downloads as well as URL check enabled
levels.Require_Managed_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 åtkomsten är att bara 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. Här är några exempel:

  • Om en enhet har ett serienummer som matchar ett som finns i företagets system för tillgångshantering
  • Om enheten har ett giltigt företagscertifikat som har utfärdats av företaget

Dessa två tillvägagångssätt kan användas på följande anpassade åtkomstnivå som använder levels- och device-attribut för att avgöra om enheten är företagsägd eller hanterad.

// Enheten tillhör ett företag om något av följande villkor är uppfyllda:
// 1. Om serienumret matchar det administratören har laddat upp
// 2. Om enheten har ett giltigt certifikat som har utfärdats av företaget
levels.Require_Secure_Device &&
(
device.is_corp_owned_device ||
device.certificates.exists(cert, cert.is_valid && cert.root_ca_fingerprint == "SOME_ROOT_CA_FINGERPRINT")
)

Fingeravtrycket är det base64-kodade (unpadded) sha256-kondensatet (i binärt format) av det DER-kodade certifikatet. Strängen kan genereras från certifikatet i PEM-format via följande procedur med openssl:

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

Tillåt enbart åtkomst när enhetsdata från CrowdStrike har uppdaterats

Det finns två tidsstämplar som CrowdStrike utfärdar som en del av Falcon Zero Trust Assessments-poängen (ZTA):
  • Tidsstämpel för utfärdande (iat)
  • Tidsstämpel för utgång (exp)

Åtkomstnivån använder attributet device för att säkerställa att CrowdStrike-data är uppdaterad. Observera att Chrome Enterprise Premium har en fördröjning på 90 minuter för att använda nya bedömningar från Falcon ZTA. Därför bör du inte använda varaktigheter under en timme.

// Kontrollera att ett av dessa villkor gäller för data från Crowdstrike:
// Måste uppfylla ett av dessa villkor
// 1. Enheten utvärderades under det senaste dygnet
// 2. Bedömningen har inte löpt ut (två veckor sedan senaste 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")
)

Tillåt åtkomst när BeyondCorp Alliance anser att en enhet är kompatibel

Chrome Enterprise Premium samarbetar med många ekosystempartner från BeyondCorp Alliance för att integrera enhetssignaler och kontext i Chrome Enterprise Premium-lösningen. Partner kan dela valfritt antal attribut med Chrome Enterprise Premium och ett av dem är attributet is_compliance_device. I följande exempel används device-attributet för att visa hur vi kan kontrollera om någon BeyondCorp Alliance-partner har integrerat med Chrome Enterprise Premium och anser att enheten är kompatibel.

Makrot exists utökar uttrycket för varje BeyondCorp Alliance-partner med en ||-operator (eller).

// Check to see if any of the BCA partners consider the device to be compliant
["CrowdStrike", "Tanium", "PANW", "Check Point", "Lookout"].exists(
v, v in device.vendors && device.vendors[v].is_compliant_device
)

Tillåt åtkomst när status för verifierad Android-uppstart är grön

I det här exemplet används attributet device för att se till att enheterna kör en säker version av Android.

Verifierad uppstart kontrollerar att körd kod kommer från en betrodd källa (vanligen OEM-tillverkare), och inte från en angripare eller från förvanskning. Mer information finns i Verifierad uppstart.

// Kräv grön status för verifierad Android-uppstart
device.android_device_security.verified_boot == true

Tillåt åtkomst till enheter som uppfyller CTS-efterlevnadskontroller

I det här exemplet används attributet device för att kräva att enheter godkänns i CTS-efterlevnadskontroller. Mer information finns i kompatibilitetstestsviten.

// Kräv att enheterna godkänns för CTS-efterlevnadskontroller
device.android_device_security.cts_profile_match == true

Tillåta åtkomst till enheter där Verifiera appar har aktiverats i Google Play Protect

I det här exemplet används device-attribut för att kräva att Verifiera appar för Google Play Protect har aktiverats.

Verifiera appar söker igenom appar efter hot när de är installerade från andra källor än Google Play. Här görs även regelbunden genomsökningar av enheter efter appar som kan vara skadliga. Funktionen Verifiera appar är aktiverad som standard. För enheter med avancerad hantering kan du ange om användarna kan inaktivera funktionen. Mer information finns i Tillämpa inställningar för Android-mobilenheter.

// Kräv att Verifiera appar i Google Play Protect har aktiverats för enheter
device.android_device_security.verify_apps_enabled == true

Tillåt inte åtkomst till enheter som kan ha skadliga appar

I det här exemplet används device-attribut för att neka åtkomst till enheter som kan ha skadliga appar. Sådana appar kallas ofta skadlig kod. Mer information finns i Potentiellt skadliga appar.

// Neka åtkomst till enheter som kan ha skadliga appar android_device_security.has_potentially_harmful_apps != true

Exempel på tidsbaserad åtkomst

Tillåt enbart skiftarbetare åtkomst under arbetstid

Företag vill se till att deras skiftarbetare bara kan få åtkomst till företagets resurser under arbetstid. Följande åtkomstnivåer använder levels-attributet för att definiera tre skift under måndag till fredag.

// Shift 1 - Monday to Friday, midnight to 8am
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')


// Shift 2 - Monday to Friday, 8am to 4pm
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')


// Shift 3 - Monday to Friday, 4pm to midnight
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')


// Ge skiftarbetare åtkomst till resurser från måndag till fredag mellan kl. 9.00 och 17.00 förutom fjärde juli.
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')

Tillåt tillfällig åtkomst

Det kan hända att företag vill tillåta åtkomst i nödsituationer när administratören inte har åtkomst till en säker enhet men behöver nödåtkomst under kort tid.

I det här fallet skapar du en tid- och platsbegränsad åtkomstnivå med hjälp av levels-attributet och tilldelar den specifika administratören nivån. När den här åtkomstnivån har tilldelats är den endast giltig under den angivna tiden. När perioden har löpt ut styrs administratörsåtkomsten på nytt av befintliga krav.

// Tillåt tillfällig åtkomst till resurser den 1 mars 2022 mellan kl. 22.00 och midnatt
// och denna åtkomst måste komma från regionen USA.
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"
// Observera att sluttiden är exkluderande, så ovanstående har potentiellt två sekunder som
// användarna kanske inte har åtkomst till. Ett annat alternativ är att använda
// !between('00:00:01','16:00:00')

Exempel på en kombination av villkor från två nivåer

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 hänvisar access_level_name_1 och access_level_name_2 till Internt namn.

levels.access_level_name_1 && levels.access_level_name_2


Google, Google Workspace och tillhörande mä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 kopplade till.