Tijekom godina nekoliko smo puta obradili Entra pravila upravljanja aplikacijama, posljednji put u ovaj članak. Ako trebate podsjetnik, pravila upravljanja aplikacijama omogućuju vam da konfigurirate različita ograničenja za aplikacije i glavne objekte usluga u vašem zakupcu, kao što je kontroliranje životnog vijeka klijentskih tajni ili potpuno blokiranje njihove upotrebe, kontroliranje publike aplikacije, nametanje ograničenja na skup URI-ja odgovora i više. Iako je značajka pokrenuta samo s podrškom za Graph API, sada imamo korisničko sučelje za nju, koje se nalazi pod Ulaz u administrativni centar > Enterprise aplikacije > Pravila aplikacije.
Osim kuta “jednostavne upotrebe”, još jedna uobičajena pritužba u vezi s pravilima upravljanja aplikacijama bila je nemogućnost isključivanja određenih objekata. Doduše, čak i pri pokretanju imali smo opciju konfiguriranja pravila specifičnih za objekte, ali navedena funkcionalnost nije nam dopuštala ciljanje novoopremljenih aplikacija, jer je bila vezana uz (prisutnost) samog objekta aplikacije. Microsoft je sada izdao novu značajku koja omogućuje iznimke za ciljanje principala koji stvara objekt, korisnika ili principala usluge, u korisničkom sučelju i Graph API-ju. Idemo pogledati.
Sadržaj objave
Dodavanje iznimke putem korisničkog sučelja
Počinjemo s implementacijom korisničkog sučelja, koje je, naravno, puno lakše za korištenje. Pristupite skupu pravila upravljanja aplikacijama s njihove uobičajene lokacije pod Ulaz u administrativni centar > Enterprise aplikacije > Pravila aplikacije. Kliknite pravilo kojem želite dodati iznimke, na primjer Blokiraj dodavanje lozinke jedan za kontrolu dostupnosti klijentskih tajni. Prvo ga prebacite Statusako već nije omogućeno. Zatim odaberite novouvedeno Sve prijave s izuzecima opcija pod Odnosi se na skupina.
Prikazat će vam se dva načina za konfiguriranje iznimaka. The Isključene aplikacije karticu i Dodajte aplikacije gumb je ono što omogućuje ciljanje određenih postojeći objekti principala aplikacije ili usluge. Ključna riječ ovdje je postojanje. Ovo je jednako stvaranju novog AppManagementPolicy objekt i pridruživanje odabranoj aplikaciji ili principalu usluge, sa svom složenošću skrivenom od korisničkog sučelja.
Zanimljiviji scenarij je tzv pozivatelj iznimka, konfigurirati pod Isključeni pozivatelji tab. Udaranjem u Dodajte isključene pozivatelje možete odabrati korisnika ili principala usluge koje želite dodati kao iznimke odabranoj politici. UI vam ne dopušta odabir grupa, što bi moglo djelovati pomalo sumnjivo, ali kao što ćemo vidjeti kasnije, za to postoji valjan razlog. Za završetak postupka pritisnite Spremi i zatvori dugme.
Iza kulisa, novododana iznimka provodi se ažuriranjem zadanog objekta pravila upravljanja aplikacijom. Točnije dodaje excludeActors aspekt i definira skup od najviše 5 prilagođeni sigurnosni atributi koji povezuju politiku s odabranim skupom korisnika i/ili principala usluga. Navedeni objekti zauzvrat moraju biti označeni odgovarajućim prilagođenim sigurnosnim atributom. Ovdje leži tuga koju imam zbog trenutne verzije korisničkog sučelja – predobro skriva svu ovu složenost. S jedne strane, ovo je dobra stvar i više-manje ono što očekujemo, ali s druge strane, postoje određene ovisnosti kada je u pitanju rad s prilagođenim sigurnosnim atributima koji nisu jasni ni u jednom trenutku procesa, pa mogu rezultirati problemima. Iskreno govoreći, dokumentacija bavi se ovim… ako se potrudite to pročitati.
Konfiguriranje iznimaka putem Graph API-ja
Sad kad imamo neko osnovno razumijevanje kako proces funkcionira, zaprljajmo ruke i istražimo stvarne Graph API pozive koji sve to čine. Kao što je gore spomenuto, iznimke pozivatelja uvelike ovise o prilagođenim sigurnosnim atributima, stoga ćemo trebati dovoljno dopuštenja za rad s njima. Ako imate (i planirate koristiti) postojeći skup atributa, trebat će vam samo CustomSecAttributeAssignment.ReadWrite.All djelokrug. Inače, CustomSecAttributeDefinition.ReadWrite.All jedan će također biti potreban. A ako trebate osvježenje o radu s prilagođenim sigurnosnim atributima, provjerite naš serija ovdje.
Kao zanimljiva napomena, korisničko sučelje će omogućiti novi prilagođeni skup atributa named AppManagementPolicySet. Unutar njega definiran je jedan atribut s vrijednošću niza, imenovan passwordAdditionExempted da odgovara vrsti ograničenja koje smo postavili. Navedeni atribut se zatim utiskuje na bilo koji od objekata koje ste odabrali kao dio procesa, s vrijednošću od pravi. Cmdleti u nastavku mogu se koristiti za potvrdu gornjih izjava. Kao sporednu napomenu ovdje, stavite na red obaveznu naklapanje o tome kako se Graph SDK loše nosi s radom s prilagođenim sigurnosnim atributima, čak i u 2026. godini!
Get-MgDirectoryCustomSecurityAttributeDefinition -CustomSecurityAttributeDefinitionId appManagementPolicySet_passwordAdditionExempted | fl Get-MgUser -UserId fe506ef0-235f-43cf-ae0c-e82f833c3e91 -Property customSecurityAttributes | select -ExpandProperty CustomSecurityAttributes | select -ExpandProperty AdditionalProperties | ConvertTo-Json
Konvencija imenovanja koja se koristi s “ugrađenim” tijekom korisničkog sučelja savršeno je prihvatljiva, no organizacije mogu imati vlastite zahtjeve. Štoviše, glavni koji konfigurira ograničenja upravljanja aplikacijom možda neće imati potrebna dopuštenja za rad s prilagođenim skupovima atributa ili upravljanje dodjelama atributa. Kada postoje valjani razlozi za korištenje vlastitog skupa, samo pazite da koristite niz s jednom vrijednošću, koji je prilagođeni sigurnosni atribut Niz tipa, sa svojim isCollection svojstvo postavljeno na lažno.
Budući da smo već obradili proces stvaranja prilagođenih sigurnosnih atributa, ovdje nećemo ponavljati korake. Ako trebate više informacija o procesu, obratite se službena dokumentacija. Isto se odnosi na dodjelu prilagođenih sigurnosnih atributa objektima korisnika i principala usluge. Samo pazite da navedete ispravne vrijednosti, za razliku od dodjele primjer u trenutnoj dokumentaciji 🙂
S druge strane, budući da prilagođeni sigurnosni atributi još uvijek nisu podržani za grupne objekte, sada razumijemo zašto nam korisničko sučelje ne dopušta odabir grupa prilikom konfiguriranja izuzimanja. Općenito govoreći, podrška za grupe zapravo nije potrebna, jer možemo jednostavno “proširiti” članstvo u grupi i označiti relevantne prilagođene sigurnosne atribute na svakom korisniku i/ili glavnom objektu usluge koji se u njoj nalazi. Ali skrenuo sam.
Povratak na zadatak koji je pred vama. Nakon što ste odabrali skup, prilagođene sigurnosne atribute i principale za koje želite konfigurirati iznimku, trebate zakrpati zadanu politiku upravljanja aplikacijom kako biste je uputili da poštuje navedene iznimke. Zanimljivo, čini se da ne postoji stroga provjera valjanosti u ovom dijelu, što je vidljivo iz redoslijeda API zahtjeva prilikom konfiguriranja iznimaka putem korisničkog sučelja. Drugim riječima, prilagođeni sigurnosni skup/atribut ne mora postojati unaprijed, tako da je redoslijed koji slijedite stvar vaših osobnih preferencija.
Bez daljnjeg odlaganja, evo kako izmijeniti zadanu politiku upravljanja aplikacijama za ovaj scenarij. Koristit ćemo se PATCH metoda protiv odgovarajućeg /policies/defaultAppManagementPolicy endpoint, dostupan s oba /v1.0 i /beta grane. Potonji je potreban samo ako želite dodati iznimke za scenarije povezane s IdentifierURI. Što se tiče potrebnih dozvola, trebat će vam Policy.ReadWrite.ApplicationConfiguration opseg i odgovarajuću ulogu administratora ako koristite dopuštenja delegata.
Budući da se naši scenariji fokusiraju na sprječavanje dodavanja novih lozinki (vjerodajnice klijenta), morat ćemo izmijeniti passwordCredential konfiguracija. Točnije, moramo konfigurirati svojstvo excludedActorss vrijednošću koja ukazuje na odabrani prilagođeni sigurnosni atribut i njegovu očekivanu vrijednost. Na primjer, ako odaberemo BlockPasswordCreation atribut izvan Prijave set, a mi očekujemo isključiti vrijednost koju treba konfigurirati, koristit ćemo sljedeće opterećenje:
"excludeActors":
"customSecurityAttributes": [
"@odata.type": "#microsoft.graph.customSecurityAttributeStringValueExemption",
"id": "Applications_BlockPasswordCreation",
"operator": "equals",
"value": "exclude"
]
The isključeniGlumci nosivost se može konfigurirati pod bilo kojim svojstvom koje odgovara podržanom ograničenju. U našem primjeru gledamo na restrictionType od PasswordAddition. A budući da želimo da se iznimke primjenjuju i na aplikaciju i na principala usluge, konfiguriramo ih u oba odjeljka u skladu s tim. Ne morate uključiti niti jedno svojstvo ili odjeljak koji ne planirate mijenjati. Evo cjelovitog zahtjeva i s njim povezanog nosivosti za naš scenarij:
PATCH https://graph.microsoft.com/v1.0/policies/defaultAppManagementPolicy
{
"applicationRestrictions":
"passwordCredentials": [
"restrictionType": "passwordAddition",
"state": "enabled",
"maxLifetime": null,
"restrictForAppsCreatedAfterDateTime": "0001-01-01T00:00:00Z",
"excludeActors":
"customSecurityAttributes": [
"@odata.type": "#microsoft.graph.customSecurityAttributeStringValueExemption",
"id": "Applications_BlockPasswordCreation",
"operator": "equals",
"value": "exclude"
]
,
]
,
"servicePrincipalRestrictions":
"passwordCredentials": [
"restrictionType": "passwordAddition",
"state": "enabled",
"maxLifetime": null,
"restrictForAppsCreatedAfterDateTime": "0001-01-01T00:00:00Z",
"excludeActors":
"customSecurityAttributes": [
"@odata.type": "#microsoft.graph.customSecurityAttributeStringValueExemption",
"id": "Applications_BlockPasswordCreation",
"operator": "equals",
"value": "exclude"
]
,
],
}
Uspješno izvršenje signalizira se sa 204 Bez sadržaja odgovor, kao što je prikazano na gornjoj snimci zaslona.
Nakon što izmjene zadane politike upravljanja aplikacijama stupe na snagu, nitko osim korisnika koji odgovaraju konfiguriranim izuzecima neće moći dodati nove vjerodajnice za zaporke bilo postojećim ili novododijeljenim aplikacijama i principalima usluga. To je ilustrirano na snimci zaslona u nastavku, gdje uspoređujemo ponašanje globalnog administratora i vlasnika aplikacije s postavljenim potrebnim prilagođenim sigurnosnim atributima. Nažalost, čini se da Entra Admin Center iskustvo još nije ažurirano kako bi odražavalo logiku iznimke, stoga koristimo Graph explorer da prikažemo očekivano ponašanje. U svakom slučaju, bitan je temeljni Graph API poziv, a kao što vidimo, politika je blokirala pokušaj dodavanja nove klijentske tajne za globalnog administratora, dok je operacija uspješno izvršena za korisnika s ispravnim postavljenim prilagođenim sigurnosnim atributom!
Poljski potreban za iskustvo korisničkog sučelja
Osim prethodno spomenutog nedostatka podrške za iznimke pri radu s klijentskim tajnama u Entra administratorskom centru, još važnije ograničenje trenutno utječe na tu značajku. Ako promijenite zadana pravila upravljanja aplikacijama putem Graph API-ja, neće vam biti omogućen čak ni pregled trenutne konfiguracije pravila u korisničkom sučelju. Umjesto toga prikazuje se sljedeća pogreška: “Ograničenje je izmijenjeno izvan ovog sučelja. Kako bi se spriječio gubitak podataka, uređivanje je onemogućeno dok se ograničenja ne sinkroniziraju.“
Zapravo, Microsoft ima dokumentirano ovo je poznati problem, a također predlaže metodu za njegovo rješavanje. Nažalost, priča ima nešto više. Stvar je u tome što je korisničko sučelje tvrdo kodirano za provjeru prilagođene kombinacije sigurnosnih atributa skupa/atributa/vrijednosti i neće čak ni pokušati raščlaniti što je konfigurirano u samoj politici. To se lako može provjeriti promatranjem mrežnog traga u pregledniku. Nakon dohvaćanja pravila, pokreće se upit za provjeru prisutnosti AppManagementPolicySet postaviti i passwordAdditionExempted atribut, nakon čega slijedi upit za filtriranje korisničkih objekata i principala usluga koji imaju žig s vrijednošću pravi.
U stvari, korisničko sučelje će prijaviti samo pravilan skup principala konfiguriranih kao isključeni pozivatelji ako koristite tvrdo kodiranu vrijednost za naziv skupa/atributa i njegovu potrebnu vrijednost. Ako koristite vlastiti, korisničko sučelje rado će prijaviti netočan skup principala, ako ga uopće ima. To je ilustrirano na snimci zaslona u nastavku, gdje je pogrešan korisnik (onaj koji ima “tvrdo kodirane” vrijednosti) prikazan u korisničkom sučelju, umjesto onog koji odgovara onome što je konfigurirano u samoj politici.
Radi cjelovitosti, evo kako poništiti zadana pravila upravljanja aplikacijama nakon promjena napravljenih u našem primjeru (tj. promjena u PasswordAddition scenarij ograničenja). Kao što dokumentacija sugerira, morat ćete ukloniti sva ograničenja tipa PasswordAddition i simetrično zbrajanje ključa. Zapravo možete zadržati bilo što drugo, kao što je skup ograničenja URI-ja u primjeru nosivosti u nastavku:
PATCH https://graph.microsoft.com/v1.0/policies/defaultAppManagementPolicy
"applicationRestrictions":
"passwordCredentials": [],
"keyCredentials": [],
"identifierUris":
"nonDefaultUriAddition": null,
"uriAdditionWithoutUniqueTenantIdentifier":
"state": "enabled",
"isStateSetByMicrosoft": false,
"restrictForAppsCreatedAfterDateTime": "0001-01-01T00:00:00Z",
"excludeAppsReceivingV2Tokens": true,
"excludeSaml": true,
"excludeActors": null
,
"servicePrincipalRestrictions":
"passwordCredentials": [],
"keyCredentials": []
Nakon što se te promjene izvrše, trebali biste moći koristiti iskustvo korisničkog sučelja i po potrebi ponovno konfigurirati sva ograničenja.
Sažetak
Istražili smo novoobjavljenu funkcionalnost kako bismo isključili odabrane objekte korisnika ili principala usluge iz bilo kojeg od ograničenja koja podržavaju Entrina pravila upravljanja aplikacijama. Ovo je izvrstan dodatak ionako vrlo korisnoj značajci, koja omogućuje bolju prilagodljivost i rješava neke od najčešćih problema. Uvijek je dobro vidjeti stalna poboljšanja unutar usluge, za razliku od puštanja “minimalno održivog proizvoda”, a zatim zaborava.
Nova funkcionalnost dolazi s pomalo klimavom podrškom za korisničko sučelje, što može uzrokovati probleme u scenarijima u kojima želite više kontrole ili želite automatizirati konfiguraciju putem Graph API-ja. Iako vas službena dokumentacija upozorava na to, odluka da se korisničko sučelje kodira samo za određene scenarije pomalo je zbunjujuća, pa se nadamo da vidimo samo prvu iteraciju podrške za isključene pozivatelje i da će se iskustvo poboljšati u budućnosti.



