Contextbewuste toegangsvoorbeelden voor de geavanceerde modus

Dit artikel beschrijft gebruiksscenario's voor contextbewuste toegang, inclusief beleidsregels met aangepaste toegangsniveaus. In deze voorbeelden maakt u aangepaste toegangsniveaus aan in de geavanceerde modus met behulp van Common Expressions Language (CEL) .

Indien gewenst kunt u ook functies en macro's gebruiken bij het bouwen van aangepaste toegangsniveaus met behulp van CEL-expressies.

Voor voorbeelden van toegangsniveaus die zijn ontwikkeld in de Basismodus (met behulp van de Contextbewuste toegangsinterface), ga naar Contextbewuste toegangsvoorbeelden voor de Basismodus .

Authenticatievoorbeelden

Geef gebruikers toegang op basis van de sterkte van hun inloggegevens.

Om de beveiliging van de toegang tot applicaties met gevoelige gegevens te verbeteren, kunt u bepalen hoe de gebruiker zich bij het systeem heeft aangemeld om te beslissen of hij of zij toegang krijgt tot de applicatie.

Gebruikers die alleen met een wachtwoord zijn ingelogd, krijgen bijvoorbeeld alleen toegang tot applicaties die geen gevoelige informatie bevatten, terwijl een gebruiker die is ingelogd met een hardwarebeveiligingssleutel als tweede authenticatiefactor toegang kan krijgen tot de meest gevoelige bedrijfsapplicaties.

Dit toegangsniveau maakt gebruik van request.auth -attributen om te verifiëren dat gebruikers inloggen met zowel een wachtwoord als een hardwarematige sleutel voor tweestapsverificatie, en toegang hebben tot gevoelige applicaties.

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

Geef toegang aan gebruikers met sterke authenticatiegegevens.

Beheerders willen vaak alleen toegang tot bedrijfsbronnen verlenen nadat de gebruiker zich heeft geauthenticeerd met sterke inloggegevens. Het volgende voorbeeld maakt gebruik van de attributen `levels` en `request.auth` zoals hieronder weergegeven:

  • Als een gebruiker vanaf een zakelijk apparaat verbinding maakt, volstaat elke MFA-methode, behalve sms (methoden kunnen pushmeldingen, hardware- of softwarebeveiligingssleutels of een eenmalig wachtwoord zijn).
  • Als een gebruiker vanaf een apparaat komt dat niet van het bedrijf is, moet er een hardware- of softwarebeveiligingssleutel worden gebruikt.

// Vereis basis-MFA (geen sms) op bedrijfsapparaten en een beveiligingssleutel (hardware of software) indien niet
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
)
)
)

Sta alleen toegang tot apps toe vanuit sessies die gekoppeld zijn aan DBSC.

Beperkt tot webapplicaties voor desktops en niet van toepassing op mobiele apps of API's.

U kunt de beveiliging van de toegang tot apps die gevoelige gegevens bevatten verbeteren door apparaatgebonden sessiegegevens (DBSC) te vereisen. DBSC koppelt de sessie van een gebruiker aan zijn of haar apparaat wanneer deze de Chrome-browser op Windows gebruikt, wat het risico op sessiekaping aanzienlijk kan verminderen.

Dit toegangsniveau gebruikt het `request.auth` -attribuut om te controleren of de sessies van de gebruiker aan een specifiek apparaat zijn gekoppeld. Als dat het geval is, wordt toegang tot de app verleend. Zo niet (wat betekent dat de sessie niet aan DBSC is gekoppeld), wordt de toegang geweigerd.

Om fouten te voorkomen, schakelt u DBSC in voor alle gebruikersaccounts die onder dit toegangsniveau vallen. Zie DBSC inschakelen voor meer informatie.

Stel het toegangsniveau in op de monitoringsmodus voordat u de actieve modus inschakelt. In de monitoringsmodus kunt u de impact van het afdwingen van toegangsniveaus testen zonder de gebruikerstoegang te verstoren.

Gebruik deze CEL-expressie om uw eigen toegangsniveau te creëren:

request.auth.sessionBoundToDevice(origin) == true

Gebruik deze CEL-expressie om DBSC alleen af ​​te dwingen op Windows-apparaten met Chrome-browserversie 136 of later:

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

Voorbeelden van apparaten

Toegang vanaf een apparaat toestaan ​​op basis van signalen die worden gerapporteerd door een BeyondCorp Alliance-partner.

U kunt gebruikmaken van apparaatsignalen die worden gerapporteerd door een BeyondCorp Alliance-partner. In dit voorbeeld wordt Lookout Software als applicatie gebruikt.

Dit toegangsniveau gebruikt het apparaatkenmerk om te controleren of het apparaat dat wordt gebruikt om toegang te krijgen tot Google Workspace, volgens Lookout voldoet aan het beleid en een 'Zeer goed'-status heeft.

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

Sta alleen toegang toe vanuit een beheerde Chrome-browser met de meest recente updates.

Dit toegangsniveau gebruikt het apparaatkenmerk om te controleren of gebruikers de nieuwste versie van een beheerde Chrome-browser gebruiken, en staat alleen toegang toe via een dergelijke browser.

device.chrome.management_state == ChromeManagementState.CHROME_MANAGEMENT_STATE_BROWSER_MANAGED && device.chrome.versionAtLeast("94.0.4606.81")

Toegang verlenen met behulp van een bedrijfscertificaat

U kunt bedrijfscertificaten gebruiken voor apparaten met aangepaste toegangsniveaus om te bepalen of een apparaat eigendom is van het bedrijf. Dit toegangsniveau gebruikt het apparaatkenmerk voor de verificatie van het bedrijfseigenschap. Lees 'Voorwaarden voor bedrijfscertificaten configureren' voor meer informatie en voorbeelden.

Een apparaat kan meerdere certificaten hebben. Bedrijfscertificaten worden gebruikt met een aangepast toegangsniveau via de exists() macro. Bijvoorbeeld:

apparaat.certificaten.bestaat(certificaat, predicaat)

In dit voorbeeld is `cert` een eenvoudige identificator die in het variabele predicaat wordt gebruikt om te koppelen aan het bedrijfscertificaat van het apparaat. De `exists() `-macro combineert de predicaatresultaten per element met de operator `or` (||). Macro's retourneren `true` als ten minste één certificaat voldoet aan de predicaatuitdrukking.

De onderstaande tabel bevat attributen die u kunt gebruiken om CEL-expressies te vormen voor gebruik met aangepaste toegangsniveaus. Houd er rekening mee dat tekenreeksvergelijkingen hoofdlettergevoelig zijn.

Attribuut Beschrijving Voorbeeld van een predicaat
uitdrukking
(waarbij cert een
(identificatiecode van macro's)
is_valid

Dit is waar als het certificaat geldig is en niet verlopen.
(booleaanse waarde)

cert.is_valid
cert_fingerprint Vingerafdruk van het certificaat
(base64 zonder opvulling SHA256)
cert.cert_fingerprint == origin.
clientCertFingerprint()
root_ca_fingerprint Vingerafdruk van het root-CA-certificaat dat is gebruikt om dit certificaat te ondertekenen.
(base64 zonder opvulling SHA256)
cert.root_ca_fingerprint == "de_vingerafdruk"
uitgever

Naam van de uitgever
(volledig uitgeschreven namen)

Om de naam van de uitgever te vinden, voert u de volgende opdracht uit op het certificaat:

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

De uitgeverstring die in het toegangsniveau wordt gebruikt, is het omgekeerde van de uitvoer, waarbij de "/" is vervangen door een komma, bijvoorbeeld:

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"
onderwerp Naam van het onderwerp van het certificaat
(volledig uitgeschreven namen)
cert.subject == "CA_SUB"
serienummer

Serienummer van het certificaat
(snaar)

certificaat.serienummer == "123456789"
template_id Sjabloon-ID van de X.509-extensie Certificaatsjabloon voor het certificaat
(snaar)
cert.template_id == "1.3.6.1.4.1.311.21."
8.15608621.11768144.
5720724.
16068415.6889630.81.
2472537.7784047"

Voorbeelden van veelgebruikte beleidsmaatregelen:

Controleer of het apparaat een geldig bedrijfscertificaat heeft dat is ondertekend door het rootcertificaat van het bedrijf.

apparaat.certificaten.bestaat(certificaat, certificaat is geldig && certificaat root_ca_vingerafdruk == "ROOT_CA_FINGERPRINT")

Valideer de uitgever van het bedrijfscertificaat op het apparaat.

apparaat.certificaten.bestaan(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")

Toegang toestaan ​​tot apparaten met schijfversleuteling en schermvergrendeling ingeschakeld

In dit voorbeeld wordt het apparaatkenmerk gebruikt om te vereisen dat zowel schijfversleuteling als schermvergrendeling zijn ingeschakeld. Bovendien moet het apparaat door beheerders worden goedgekeurd.

Standaard worden alle apparaten die via Endpoint Verification worden aangemaakt, goedgekeurd. Er zijn echter situaties waarin u een apparaat wilt blokkeren, bijvoorbeeld wanneer een apparaat verloren is geraakt. In dergelijke gevallen wilt u voorkomen dat deze apparaten toegang krijgen tot de bedrijfsbronnen.

Voor andere voorbeelden van toegangsniveaus in dit document, gaan we ervan uit dat dit toegangsniveau de naam Require_Secure_Device heeft.

// Schijfversleuteling en schermvergrendeling moeten ingeschakeld zijn
Dit is van toepassing op alle belangrijke platformen (Windows, Mac, Linux, CroS, iOS, Android).
// Dit is de basis en zou de basis moeten vormen voor alle andere toegangsniveaus.
device.encryption_status == DeviceEncryptionStatus.ENCRYPTED &&
apparaat is beveiligd met schermvergrendeling &&
apparaat is door de beheerder goedgekeurd

Toegang verlenen tot apparaten die de Chrome-browser gebruiken met basisbeveiligingsvereisten.

In dit voorbeeld gebruikt het toegangsniveau het apparaatkenmerk om de Chrome-browser met basisbeveiligingsvereisten te vereisen.

// Chrome moet op profiel- of browserniveau beheerd worden, moet aanwezig zijn
// Beveiligingsgebeurtenisrapportage is ingeschakeld en moet versie 97 of hoger zijn.
levels.Require_Secure_Device &&
(
apparaat.chrome.management_state == ChromeManagementState.CHROME_MANAGEMENT_STATE_BROWSER_MANAGED ||
apparaat.chrome.management_state == ChromeManagementState.CHROME_MANAGEMENT_STATE_PROFILE_MANAGED
) &&
device.chrome.is_security_event_analysis_enabled &&
apparaat.chrome.versieTen minste("97")

Toegang tot apparaten via de Chrome-browser toestaan ​​met beveiligingsvereisten

Dit voorbeeld gebruikt het apparaatkenmerk om te vereisen dat de gebruiker afkomstig is van een beheerde Chrome-browser of -profiel, en dat Chrome de beveiligings- en gegevensbeschermingsconnectoren heeft ingeschakeld. Het voorbeeld gebruikt het niveaukenmerk om te verwijzen naar het eerder beschreven toegangsniveau 'Beheerde Chrome vereisen'. Het volgende voorbeeld gaat ervan uit dat het afhankelijke toegangsniveau 'Require_Managed_Chrome' heet.

// Vereis beheerde Chrome (afhankelijk van het toegangsniveau "Require_Managed_Chrome")
// en vereisen dat inhoudsinspectie voor downloads is ingeschakeld, evenals URL-controle
levels.Require_Managed_Chrome &&
device.chrome is_file_download_analysis_enabled &&
apparaat.chrome.is_realtime_url_check_enabled

Toegang tot apparaten in bedrijfseigendom toestaan

Een vereiste voor toegangsbeheer is dat toegang alleen is toegestaan ​​wanneer het apparaat door het bedrijf wordt beheerd of in eigendom is van het bedrijf. Er zijn verschillende manieren om te bepalen of een apparaat eigendom is van of wordt beheerd door het bedrijf, waaronder:

  • Als een apparaat een serienummer heeft dat overeenkomt met een serienummer in het activa-beheersysteem van het bedrijf.
  • Als een apparaat een geldig bedrijfscertificaat heeft dat door het bedrijf is uitgegeven.

Deze twee benaderingen kunnen worden gebruikt in het volgende aangepaste toegangsniveau, dat gebruikmaakt van niveaus en apparaatkenmerken om te bepalen of het apparaat eigendom is van of beheerd wordt door het bedrijf.

// Het apparaat is een bedrijfsapparaat als aan een van de volgende voorwaarden is voldaan:
// 1. Als het serienummer overeenkomt met wat de beheerder heeft geüpload
// 2. Als het apparaat een geldig, door de onderneming uitgegeven certificaat heeft
levels.Require_Secure_Device &&
(
apparaat is eigendom van het bedrijf ||
apparaat.certificaten.bestaat(certificaat, certificaat is geldig && certificaat root_ca_vingerafdruk == "EEN_ROOT_CA_VINGERAFDRUK")
)

De vingerafdruk is de niet-opgevulde base64-gecodeerde SHA256-hash (in binaire vorm) van het DER-gecodeerde certificaat. De tekenreeks kan worden gegenereerd uit het certificaat in PEM-formaat met behulp van de volgende procedure met openssl:

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

Sta alleen toegang toe wanneer de apparaatgegevens van CrowdStrike actueel zijn.

CrowdStrike geeft twee tijdstempels uit als onderdeel van de Falcon Zero Trust Assessments (ZTA)-score:
  • Uitgegeven op tijdstempel (iat)
  • Vervaldatum (exp)

Het toegangsniveau gebruikt het apparaatkenmerk om ervoor te zorgen dat de CrowdStrike-gegevens actueel zijn. Houd er rekening mee dat Chrome Enterprise Premium een ​​inherente vertraging van 90 minuten heeft voor het verwerken van nieuwe assessments van Falcon ZTA, dus het gebruik van tijdsduren korter dan een uur wordt afgeraden.

// Zorg ervoor dat aan een van deze voorwaarden is voldaan voor gegevens van Crowdstrike:
// Moet aan een van deze voorwaarden voldoen
// 1. Het apparaat is de afgelopen dag beoordeeld.
// 2. De beoordeling is nog niet verlopen (2 weken geleden sinds de laatste 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")
)

Toegang verlenen wanneer BeyondCorp Alliance een apparaat als conform beschouwt.

Chrome Enterprise Premium werkt samen met veel partners binnen het BeyondCorp Alliance-ecosysteem om hun apparaatsignalen en -context te integreren in de Chrome Enterprise Premium-oplossing. Partners kunnen een willekeurig aantal attributen delen met Chrome Enterprise Premium, waaronder het attribuut `is_compliant_device` . Het volgende voorbeeld gebruikt het apparaatattribuut om te laten zien hoe we kunnen controleren of een van de BeyondCorp Alliance-partners is geïntegreerd met Chrome Enterprise Premium en of het apparaat voldoet aan de vereisten.

De macro ' exists' breidt de expressie voor elk van de BeyondCorp Alliance-partners uit met een || (of) operator.

// Controleer of een van de BCA-partners het apparaat als conform beschouwt
["CrowdStrike", "Tanium", "PANW", "Check Point", "Lookout"].exists(
v, v in device.vendors && device.vendors[v].is_compliant_device
)

Toegang toestaan ​​wanneer de opstartstatus van Android groen is (geverifieerd opstartstatus).

Dit voorbeeld gebruikt apparaatkenmerken om ervoor te zorgen dat apparaten een veilige versie van Android gebruiken.

Verified Boot controleert of de uitgevoerde code afkomstig is van een vertrouwde bron (meestal de fabrikant van het apparaat) en niet van een aanvaller of corruptie. Ga naar Verified Boot voor meer informatie.

// Groene Android-geverifieerde opstartstatus vereist
apparaat.android_apparaat_beveiliging.geverifieerde_opstart == waar

Geef toegang tot apparaten die voldoen aan de CTS-conformiteitseisen.

Dit voorbeeld gebruikt apparaatkenmerken om te vereisen dat apparaten de compatibiliteitstests van de Compatibility Test Suite (CTS) doorstaan. Ga naar Compatibility Test Suite voor meer informatie.

// Vereis dat apparaten de CTS-conformiteitscontroles doorstaan
apparaat.android_apparaat_beveiliging.cts_profiel_match == waar

Toegang toestaan ​​tot apparaten waarop Google Play Protect 'Apps verifiëren' is ingeschakeld.

In dit voorbeeld worden apparaatkenmerken gebruikt om te vereisen dat de optie 'Apps verifiëren' van Google Play Protect is ingeschakeld.

De functie 'Apps controleren' scant apps op bedreigingen wanneer ze worden geïnstalleerd vanuit andere bronnen dan Google Play. Ook scant de functie periodiek apparaten op potentieel schadelijke apps. 'Apps controleren' is standaard ingeschakeld. Voor apparaten onder geavanceerd beheer kunt u instellen of gebruikers deze functie kunnen uitschakelen. Zie 'Instellingen toepassen voor Android-mobiele apparaten' voor meer informatie.

// Vereis dat Google Play Protect 'Apps verifiëren' is ingeschakeld op de apparaten
device.android_device_security.verify_apps_enabled == true

Geef geen toegang tot apparaten waarop mogelijk schadelijke apps staan.

Dit voorbeeld gebruikt apparaatkenmerken om de toegang te weigeren tot apparaten die potentieel schadelijke apps bevatten. Deze apps worden vaak malware genoemd. Ga voor meer informatie naar Potentieel schadelijke applicaties (PHA's) .

// Weiger toegang tot apparaten met mogelijk schadelijke apps: android_device_security.has_potentially_harmful_apps != true

Tijdgebaseerde toegangsvoorbeelden

Toegang is alleen toegestaan ​​voor ploegendienstmedewerkers tijdens hun diensturen.

Bedrijven willen ervoor zorgen dat hun ploegendienstmedewerkers alleen tijdens hun diensturen toegang hebben tot bedrijfsbronnen. De volgende toegangsniveaus gebruiken het attribuut ' levels' om 3 ploegendiensten te definiëren van maandag tot en met vrijdag.

// Ploeg 1 - Maandag tot en met vrijdag, middernacht tot 8 uur 's ochtends
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')


// Ploeg 2 - Maandag tot en met vrijdag, 8.00 tot 16.00 uur
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')


// Ploeg 3 - Maandag tot en met vrijdag, 16:00 tot middernacht
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')


// Geef ploegendienstmedewerkers toegang tot resources van maandag tot en met vrijdag tussen 9.00 en 17.00 uur, met uitzondering van 4 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')

Tijdelijke toegang toestaan

Bedrijven willen soms noodtoegang bieden in geval van nood, bijvoorbeeld wanneer de beheerder geen toegang heeft tot een beveiligd apparaat, maar wel kortstondig noodtoegang nodig heeft.

In dit geval kunt u een toegangsniveau met tijd- en locatiebeperkingen aanmaken met behulp van het attribuut 'levels' en dit toewijzen aan de betreffende beheerder. Wanneer dit toegangsniveau is toegewezen, is het alleen geldig gedurende de opgegeven periode. Na afloop van deze periode wordt de toegang van de beheerder weer beheerd volgens de bestaande vereisten.

// Sta tijdelijke toegang tot resources toe op 1 maart 2022, tussen 22:00 en middernacht.
// En deze toegang moet vanuit de VS komen.
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"
// Merk op dat de eindtijd exclusief is, dus het bovenstaande kan potentieel 2 seconden bevatten die
// De gebruikers hebben mogelijk geen toegang. Een andere optie is om dit te gebruiken.
// !between('00:00:01','16:00:00')

Voorbeeld van het combineren van voorwaarden van twee niveaus

Definieer een nieuw toegangsniveau door voorwaarden van twee toegangsniveaus te combineren.

Dit toegangsniveau maakt gebruik van niveaukenmerken en vereist dat gebruikers voldoen aan de gecombineerde voorwaarden van twee toegangsniveaus. In dit voorbeeld verwijzen access_level_name_1 en access_level_name_2 naar Interne Naam .

levels.access_level_name_1 && levels.access_level_name_2


Google, Google Workspace en aanverwante merken en logo's zijn handelsmerken van Google LLC. Alle andere bedrijfs- en productnamen zijn handelsmerken van de bedrijven waaraan ze zijn verbonden.