U posljednje vrijeme sam vidio nekoliko pitanja kako programski stvoriti politiku uvjetnog pristupa s snagom autentifikacije kao jednom od kontrola „grantova“. Iz nekog razloga, dokumentacija se izravno ne bavi ovim scenarijem, a zauzvrat se čini da se ljudi zbunjuju, kad je u stvari prilično jednostavno. Dakle, u ovom članku ukratko razgovaramo o tome kako stvoriti takvu politiku i istražiti neke primjere.
Za početak moramo razumjeti shemu koju koristi Resurs politike uvjetnog pristupaili drugim riječima svojstva koja trebamo koristiti. Osim Naziv i stanjeprilikom stvaranja nove politike uvjetnog pristupa moramo odrediti skup Uvjetitj. Na koji će se predmeti i scenariji pravila primjenjivati. A također moramo definirati radnje za politiku, to je skup bespovratna sredstva koji definiraju hoće li pristup biti odobren ili ne, kao i razni zahtjevi koje je potrebno ispuniti. A Snaga provjere autentičnosti Kontrola je jedan takav primjer.
Za potrebe ovog članka, važno je razumjeti kako je snaga autentičnosti predstavljena na API strani stvari. Ako izravno gledate izlaz koji je generirao popis /Politike/uvjete Metoda, nije odmah jasno kako se okreću relevantni zupci. Zapravo bi to moglo biti pogrešno. Evo primjera:
"grantControls": "operator": "OR", "builtInControls": [], "customAuthenticationFactors": [], "termsOfUse": [], "authenticationStrength@odata.context": "https://graph.microsoft.com/v1.0/$metadata#policies/conditionalAccessPolicies('72976d8e-b0d4-40c1-a649-cea4eb19f4fc')/grantControls/authenticationStrength/$entity", "authenticationStrength": "id": "00000000-0000-0000-0000-000000000003", "createdDateTime": "2021-12-01T08:00:00Z", "modifiedDateTime": "2021-12-01T08:00:00Z", "displayName": "Passwordless MFA", "description": "Passwordless methods that satisfy strong authentication, such as Passwordless sign-in with the Microsoft Authenticator", "policyType": "builtIn", "requirementsSatisfied": "mfa", "allowedCombinations": [ "windowsHelloForBusiness", "fido2", "x509CertificateMultiFactor", "deviceBasedPush" ], "combinationConfigurations@odata.context": "https://graph.microsoft.com/v1.0/$metadata#policies/conditionalAccessPolicies('72976d8e-b0d4-40c1-a649-cea4eb19f4fc')/grantControls/authenticationStrength/combinationConfigurations", "combinationConfigurations": []
Dakle, imamo bespovratna sredstva Resurs, koji već znamo, obuhvaća sve klauzule o snazi za provjeru autentičnosti. Ako pogledate dokumentacija Na resursu, primijetit ćete da tablica svojstava nema unos s autentifikacija -utrka imovina. Umjesto toga, vidimo ga ispod odnospokazujući na AutentifikacijaSTengthPolicy resurs. Svojstva navedena za navedeni resurs odgovaraju onome što vidimo u JSON -u gore.
Evo udaraca. Ako pokušate ponovo upotrijebiti (dio) JSON -a za stvaranje nove politike uvjetnog pristupa, pomoć će odgovoriti s a Badrequest Pogreška, s porukom u skladu s tim: “1007: Ulazni objekt CondicationAccessPolicy je null ili se ne podudara s shemom tipa CONDITALACACTESPOLICIC” Ne govori vam da je to bespovratna sredstva i točnije autentifikacija -utrka Čvor je problem, ali malo pokušaja i ispitivanja pogrešaka to će provjeriti.
Dakle, ne možemo samo ponovo koristiti ove bitove kroz politike. Kako onda kreiramo novu politiku uvjetnog pristupa koja programski koristi snagu provjere autentičnosti? Odgovor je iznenađujuće jednostavan – samo trebamo ukazati na osobna iskaznica odgovarajuće politike snage autentičnosti. Nijedno od ostalih svojstava nije potrebno! Evo primjera korisnog opterećenja:
"displayName": "Policy with Auth strength", "state": "enabledForReportingButNotEnforced", "conditions": "clientAppTypes": [ "all" ], "applications": "includeApplications": [ "All" ] , "users": "includeUsers": [ "All" ] , "grantControls": "operator": "OR", "authenticationStrength": "id": "00000000-0000-0000-0000-000000000002"
Super, ali kako dobiti taj Guid? Pa, to je ID odgovarajućeg objekta Politike o autentičnosti, koji možemo dohvatiti putem popisa /Politike/AuthenticationStRengthpolicies metoda. I ugrađene i prilagođene snage autentičnosti imaju odgovarajuću politiku. Dakle, ako planirate izraditi politiku uvjetnog pristupa ispočetka, prvo donesite odgovarajući ID pravila o autentičnosti. Ako stvarate kopiju postojeće CA politike, sve izdvojite osim osobna iskaznica Vrijednost na autentifikacija -utrka čvor. Tako jednostavno.
Važno je shvatiti da sve ugrađene politike čvrstoće za provjeru autentičnosti imaju isti ID kod svih stanara. To zauzvrat mnogo olakšava ih koristiti, jer čak i ne morate gledati njihove ID -ove. Na primjer, možete koristiti vrijednost 00000000-0000-0000-0000-000000000002 Da biste se uputili u ugrađenu politiku „višefaktorske provjere autentičnosti“, bez obzira u kojem stanaru stvarate politiku i koliko politika snage autentičnosti postoji u njemu. Oh, i možete koristiti Get-mgpolicyAuthenticationsRengthpolicy cmdlet za dohvaćanje pravila putem grafikona SDK za PowerShell:
Da biste dovršili članak, evo punih primjera o tome kako možete stvoriti novu politiku uvjetnog pristupa koja uključuje kontrolu čvrstoće za provjeru autentičnosti. Da biste stvorili takvu politiku putem grafičkog API -ja, morate izdati zahtjev za post protiv /Politike/uvjete krajnja točka, sa sljedećim JSON -om kao korisni teret:
POST https://graph.microsoft.com/v1.0/policies/conditionalAccessPolicies "displayName": "MFA for all users", "state": "enabledForReportingButNotEnforced", "conditions": "applications": "includeApplications": [ "All" ] , "users": "includeUsers": [ "All" ] , "grantControls": "operator": "OR", "authenticationStrength": "id": "00000000-0000-0000-0000-000000000002"
Da biste stvorili sličnu politiku putem grafikona SDK za PowerShell, koristite New-MGidentityConditionAccessPolicy cmdlet:
$json = @ "conditions" = @ "applications" = @ "includeApplications" = @("All") "clientAppTypes" = @("all") "users" = @ "includeUsers" = @("All") "state" = "enabledForReportingButNotEnforced" "displayName" = "Graph SDK example" "grantControls" = @ "authenticationStrength" = @ "id" = "00000000-0000-0000-0000-000000000002" "operator" = "OR" New-MgIdentityConditionalAccessPolicy -BodyParameter ($json | ConvertTo-Json -Depth 10)
Oba primjera koriste ugrađenu politiku zaštite autentičnosti „Multifactor Authenticates“, s ID-om od 00000000-0000-0000-0000-000000000002. Možete ga zamijeniti s ID-om bilo kojeg drugog ugrađenog pravila ili bilo kojeg prilagođenog onih koje ste stvorili u stanaru. Zapamtite, to je referenca na izlaznu politiku snage autentičnosti, tako da ne trebate osigurati dodatne bitove njegove konfiguracije. To, naravno, znači da navedena politika snage za provjeru autentičnosti već mora postojati. Ako planirate koristiti prilagođenu kombinaciju metoda provjere autentičnosti namijenjene zadovoljavanju specifičnih potreba, obavezno prvo stvorite objekt Politike za provjeru autentičnosti!