Kada je Microsoft lansirao Office 365 grupe i pokušao ih pozicionirati kao jednu i jedinu vrstu grupe koja će vam ikada trebati unutar Microsoft 365, mnogi su se stručnjaci usprotivili razmjeni poruka i upozorili na probleme širenja i upravljanja koji će se neizbježno pojaviti. Eto, bili su u pravu. Microsoftu je trebalo nekoliko godina da prizna problem, još nekoliko da ih počne rješavati putem značajki kao što je Ownerless grupna politika, a sve do sada, da rečenu politiku učini upravljivom putem Graph API-ja.
Ovdje neću detaljno govoriti o tome kako pravila grupe bez vlasnika funkcioniraju jer nema ništa novo sa samom značajkom. Posavjetujte se s službena dokumentacija ili ovaj članak Tony ako trebate dodatne informacije. Ipak, želim spomenuti njegovu prilično kaotičnu povijest izdavanja, koja me potaknula da izdam a prilagođena implementacija za a Get-OwnerlessGroupPolicy i a Set-OwnerlessGroupPolicy cmdleti, kao dio ovaj članak. Pa, više nema potrebe za takvim prilagođenim rješenjima jer sada možemo iskoristiti Graph API u punom sjaju. Idemo pogledati.
Najprije loša vijest – trenutno su podržane samo dozvole delegata. Naime, trebat će vam Group.ReadWrite.All opseg i bilo Administrator grupe ili Administrator razmjene uloge. Čovjek bi pomislio da bi dodavanje podrške za Graph API predstavljalo dobru priliku za pružanje potpuno automatiziranog rješenja, ali nažalost…
Ako samo želite vidjeti trenutnu politiku, Group.Read.All (delegirati) dozvole bi poslužile. Korištenje odgovarajuće GET metode protiv /policies/ownerlessGroupPolicy krajnja točka je sve što trebate učiniti (imajte na umu da je krajnja točka trenutno dostupna samo pod /beta):
GET https://graph.microsoft.com/beta/policies/ownerlessGroupPolicy
Upozorenje je da pravilo ne postoji prema zadanim postavkama, tako da bi gornji upit mogao vratiti pogrešku kada se koristi protiv novog stanara:
Instancirati an Politika grupe bez vlasnika objekt unutar vašeg stanara ili ažurirajte postojeći, koristite Upsert metodaili drugim riječima PATCH zahtjev protiv /policies/ownerlessGroupPolicy krajnja točka. Tijelo zahtjeva mora sadržavati JSON sadržaj s postavkama pravila, kako slijedi:
- je Omogućeno – postavite stanje politike. Potreban*. Imajte na umu da određivanje a $false vrijednost će rezultirati brisanjem vrijednosti svih ostalih parametara pravila.
- SenderEmailAddress – adresa s koje se šalju obavijesti e-poštom. Obavezno prilikom omogućavanja pravila. Mora biti važeći primatelj u najmoprimcu. Dostavljeno kao dio emailDetails izvor mrlja.
- Predmet – izborni parametar za određivanje predmeta e-pošte obavijesti. Dostavljeno kao dio emailDetails izvor mrlja.
- EmailBody – izborni parametar za određivanje tijela e-pošte obavijesti. Ovdje možete proslijediti niz za tijelo s više redaka ili koristiti `n po potrebi. Dostavljeno kao dio emailDetails izvor mrlja.
- notificationDurationInWeeks – broj tjedana za slanje obavijesti. Dopuštene vrijednosti kreću se od 1 do 7 tjedana. Potreban.
- maxMembersToNotify – najveći broj članova kojima se šalju obavijesti. Dopuštene vrijednosti u rasponu su od 1 do 90. Obavezno prilikom omogućavanja pravila. Imajte na umu da će vrijednost biti postavljena na 0 ako preskočite ovo svojstvo!
- EnabledGroupIds – popis grupa za koje će se politika omogućiti. Navedite nultu vrijednost/prazan niz kako biste poništili pravilo da pokrije Sve grupe. Navedite pojedinačne grupe prema njihovom GUID-u. Potreban.
- Sigurnosne grupe – Potreban parametar koji se koristi za ograničavanje skupa korisnika koji se mogu dodijeliti kao vlasnici. Više grupa može se specificirati putem njihovog GUID-a. Grupe moraju biti sigurnosno omogućene. Navedite nultu vrijednost/prazan niz kako biste poništili pravilo za pokrivanje svih članova grupe (mora se koristiti zajedno s notifyMembers=Sve). Dostavljeno kao dio targetOwners resurs mrlja.
- obavijesti Članove – odredite jesu li članovi grupe (grupa) navedenih putem Sigurnosne grupe parametru treba dopustiti (dopustiOdabrano), ili isključeni iz dodjela vlasnika (blokOdabrano). Alternativno, navedite vrijednost od Sve smatrati da svaki član trenutne grupe ispunjava uvjete da postane vlasnik. Mora se koristiti zajedno s Sigurnosne grupe parametar. Dostavljeno kao dio targetOwners resurs mrlja.
- policyWebUrl – izborni parametar za određivanje URL-a smjernica politike.
Prilikom ažuriranja postojeće politike možete navesti samo parametre čije vrijednosti želite promijeniti. Kao primjer, ažurirajmo objekt pravila grupe bez vlasnika za mog vlastitog stanara (kao što je prikazano na prvoj slici iznad) s novom vrijednošću za SenderEmailAddress parametar. Kako je navedeni parametar dio resursa emailDetails, moramo koristiti sljedeću sintaksu da bismo ga dodali:
PATCH https://graph.microsoft.com/beta/policies/ownerlessGroupPolicy
{
"isEnabled": true,
"emailInfo": {
"senderEmailAddress": "user@domain.com",
},
"notificationDurationInWeeks": 4
}
Obavezno navedite i je Omogućeno parametar s vrijednošću od Praviinače će politika biti poništena! Slično tome, vrijednost za notificationDurationInWeeks navedeno je gore jer bi inače bilo postavljeno na 0.
Ovdje su potrebne neke dodatne bilješke. U usporedbi s “klasičnom” implementacijom funkcionalnosti pravila grupe bez vlasnika, dijeljeni poštanski sandučić više se ne može navesti kao pošiljatelj. Isto vrijedi i za sve druge vrste poštanskih sandučića koji nisu korisnički. Prednosti prelaska na Graph, pretpostavljam.
Već smo spomenuli važnost specificiranja je Omogućeno prilikom izmjene pravilnika. Ističe se i nedostatak dosljednosti u rukovanju preostalim (potrebnim) parametrima, iako možemo raspravljati radi li se o lošoj implementaciji ili netočnoj dokumentaciji, ili oboje. Ono što je sigurno jest da je Microsoft uložio minimalan mogući napor u objavljivanje ovoga, što je vidljivo iz brojnih neobičnosti i nedosljednosti. Kao još jedan primjer:
Na gornjoj snimci zaslona poruka o pogrešci odnosi se na nepostojeći NoOfWeeksToNotify parametar. Ovo je doista ono što je koristila “stara” implementacija Admin API-ja, s parametrom koji je sada preimenovan u notificationDurationInWeeks. Slično ponašanje može se uočiti i kod drugih “parova” parametara, tj MaxMembersToNotify/MaxNoOfMembersToNotify. Nije tajna da su mnoge Graph API implementacije jednostavna proxy usluga, a primjeri kao što je gornji jednostavno nam omogućuju da zavirimo iza zavjese. Kao i $što ako parametar što se toga tiče:
Dakle, imamo ga, još jedan primjer Microsofta koji čini minimum kako bi podržao Graph API za postojeće značajke. Lagana implementacija, nula poboljšanja, potpuno ignoriranje scenarija automatizacije… nisam impresioniran.

