LPS:IdM/midPoint/Office365

Z Support
< LPS:IdM | midPoint(Rozdíly mezi verzemi)
Přejít na: navigace, hledání
m (Info)
(Skupiny)
(Není zobrazeno 12 mezilehlých verzí od 1 uživatele.)
Řádka 2: Řádka 2:
  
 
Microsoft Office365 - cloudová aplikace. Identity jsou spravované přes Graph API.
 
Microsoft Office365 - cloudová aplikace. Identity jsou spravované přes Graph API.
 
'''Není nasazeno do produkce.''' Akuálně udržováno vehementem od Microsoftu (zdrojem dat jsou staré LDAPy, pouští se několikrát denně).
 
  
 
Konektor:
 
Konektor:
Řádka 14: Řádka 12:
  
 
Přes Graph API nelze spravovat emaily. Nastavování přesměrování ve skriptech mimo režii IdM.
 
Přes Graph API nelze spravovat emaily. Nastavování přesměrování ve skriptech mimo režii IdM.
 +
 +
== Admin přístup ==
 +
 +
# https://office365.zcu.cz (testovací: https://login.microsoftonline.com/?whr=zcutest.civ.zcu.cz TODO: lepčí URL?)
 +
# ''Admin Center -> Azure Active Directory -> Azure Active Directory -> App registrations''
 +
# identita "OpenICF MSGraph Connector" -> ''Client credentials''
 +
 +
==> jako hlavní ID je ''Application (client) ID''
 +
 +
==> jako heslo: secret z ''Client credentials''
 +
 +
==> (lze si zvolit dobu platnosti, v 2021-05-31 zvoleno na 2 roky)
  
 
= Model =
 
= Model =
Řádka 27: Řádka 37:
 
* ''userPrincipalName'' - LOGIN
 
* ''userPrincipalName'' - LOGIN
  
Postup přidání přístupu pro hostovské konto:
+
Atributy:
 +
 
 +
* ''mail'': LOGIN@DOMENA, jen přo zakládání, ale nelze spravovat přes Graph API
  
# přidělit CRO ID
+
'''Merge''': nelze
# zařadit do skupiny ''gapps'' (pak i google) nebo ''office365''
+
  
 
'''Povolení/blokace''': 1:1 podle identity v midPointu
 
'''Povolení/blokace''': 1:1 podle identity v midPointu
Řádka 37: Řádka 48:
  
 
'''Fyzické mazání''': Po smazání je identita v koši po dobu 1 měsíce. Po tuto dobu ji nelze znovuzaložit automaticky přes Graph API. Lze ji obnovit přes administrátorské rozhraní Office 365, anebo smazat vývojovými administrátorskými nástroji (koš nelze vysypat přes midPoint - umí to Graph API, ale identity mají divoké identifikátory).
 
'''Fyzické mazání''': Po smazání je identita v koši po dobu 1 měsíce. Po tuto dobu ji nelze znovuzaložit automaticky přes Graph API. Lze ji obnovit přes administrátorské rozhraní Office 365, anebo smazat vývojovými administrátorskými nástroji (koš nelze vysypat přes midPoint - umí to Graph API, ale identity mají divoké identifikátory).
 
Atributy:
 
 
* '''mail''': LOGIN@DOMENA, jen přo zakládání, ale nelze spravovat přes Graph API
 
  
 
== Skupiny ==
 
== Skupiny ==
  
Stejně skupiny jako jinde.
+
Neposílají se (ale jinak vyzkoušeno).
  
 
== Licence ==
 
== Licence ==
Řádka 53: Řádka 60:
  
 
Pro každou licenci lze nastavit globální vyjímku pro nějakou aplikaci. Ale nelze nastavovat různé vyjímky pro každého uživatele (technicky: přes Graph API to lze, ale vedlo by to na strukturovaný atribut u uživatele, což nelze).
 
Pro každou licenci lze nastavit globální vyjímku pro nějakou aplikaci. Ale nelze nastavovat různé vyjímky pro každého uživatele (technicky: přes Graph API to lze, ale vedlo by to na strukturovaný atribut u uživatele, což nelze).
 +
 +
= Výpočet licencí =
 +
 +
== Princip ==
 +
Šílenost. Vychází se z dokumentu: https://software.zcu.cz/files/MS_EES.html
 +
 +
V zásadě dva typy licencí: A1 a A3 a každá z nich má studentskou a zaměstnaneckou verzi. Typ studentské se volí podle fakulty, zaměstnanecké podle self-managementu, ale jen pro vybraná prcoviště. Studentská má vždy přednost.
 +
 +
== Role v midPointu ==
 +
 +
Počáteční import 2021-06:
 +
 +
# === studenti ===
 +
./group.py o365proplus-students -s "Licence Microsoft pro všechny studenty"
 +
 +
for fak in fdu fst fel fav fpe; do ./modify-role.py -q subtype=stag-global-group-student extension/ext:GROUP_ZKRATKA=${fak^^} -a role-group-o365proplus-students:role; done
 +
 +
# === per fakulta ===
 +
# 1) self role
 +
for fak in fdu fst fel fav fpe rek-ntc rek-civ rek-ps rek-uk rek-ujp rek-rek rek-skm rek-suz; do
 +
FAK=${fak^^}
 +
FAK=$(echo $FAK | tr '-' '/')
 +
org=$(echo $fak | cut -d - -f2)
 +
ORG=${org^^}
 +
 +
./create-role.py --oid role-self-o365proplus-$fak subtype=self-role "name=SELF: O365 $FAK" displayName="o365proplus-$fak" description="Licence pro Microsoft365 (A3plus) - $ORG" extension/ext:requestableGroups=$org requestable=true
 +
./modify-role.py --oid role-self-o365proplus-$fak extension/ext:requestableGroups+=staff
 +
done
 +
# tune catchall REK
 +
./modify-role.py --oid role-self-o365proplus-rek-rek 'extension/ext:requestableGroups+=!civ'
 +
./modify-role.py --oid role-self-o365proplus-rek-rek 'extension/ext:requestableGroups+=!ps'
 +
./modify-role.py --oid role-self-o365proplus-rek-rek 'extension/ext:requestableGroups+=!suz'
 +
./modify-role.py --oid role-self-o365proplus-rek-rek 'extension/ext:requestableGroups+=!uk'
 +
 +
#./query-org.py extension/ext:OU_ZKRATKA=$FAK 'subtype=hr-org-str' | head -n 3
 +
##==> OID
 +
#oid=
 +
#./modify-org.py --oid $oid -i role-group-o365proplus-${fak}:role
 +
 +
# 2) output roles (groups)
 +
for fak in fdu fst fel fav fpe; do
 +
ORG=${fak^^}
 +
./group.py o365proplus-$fak -s "Licence pro Microsoft365 (A3plus) - $ORG"
 +
done
 +
ORG=REK; ./group.py o365proplus-rek -s "Licence Microsoft pro zaměstnance ${ORG}"
 +
 +
# 3) self / output connections
 +
for fak in fdu fst fel fav fpe; do
 +
./modify-role.py --oid role-self-o365proplus-$fak -a role-group-o365proplus-${fak}:role
 +
done
 +
for org in ntc civ ps uk ujp rek skm suz; do
 +
  ./modify-role.py --oid role-self-o365proplus-rek-${org} -a role-group-o365proplus-rek:role
 +
done
 +
 +
Ručně přidat do každé self-management role pro assignment výstupní role (dodatečná kontrola při rušení autorizace):
 +
 +
<pre> <condition>
 +
<source>
 +
  <path>$source/name</path>
 +
</source>
 +
<source>
 +
  <path>$source/extension/requestableGroups</path>
 +
</source>
 +
<expression>
 +
<script>
 +
<relativityMode>absolute</relativityMode>
 +
<code>
 +
return zcuUtils.execute('authRequestable', [
 +
'userObj': focus,
 +
'roleName': name,
 +
'requestableGroup': requestableGroups,
 +
]);
 +
</code>
 +
</script>
 +
</expression>
 +
</condition></pre>
 +
 +
= Postupy =
 +
 +
== Hostovská konta ==
 +
 +
Postup přidání přístupu pro hostovská konta:
 +
 +
# přidělit CRO ID, viz [[LPS:IdM/midPoint#Přidělení CRO ID]]
 +
# zařadit do skupiny ''gapps'' nebo ''office365'' (''gapps'' znamená i google apps)
 +
 +
 +
[[Kategorie:IdM]]
 +
 +
[[Kategorie:Interní dokumentace]]

Verze z 22:41, 23 září 2021

Obsah

Info

Microsoft Office365 - cloudová aplikace. Identity jsou spravované přes Graph API.

Konektor:

  • git repozitář: connector-msgraph
  • drobné patche na závislosti
  • hlavní změny mergované v upstramu (optimalizace, opravy, podpora licencí)

Resource: Office365

Přes Graph API nelze spravovat emaily. Nastavování přesměrování ve skriptech mimo režii IdM.

Admin přístup

  1. https://office365.zcu.cz (testovací: https://login.microsoftonline.com/?whr=zcutest.civ.zcu.cz TODO: lepčí URL?)
  2. Admin Center -> Azure Active Directory -> Azure Active Directory -> App registrations
  3. identita "OpenICF MSGraph Connector" -> Client credentials

==> jako hlavní ID je Application (client) ID

==> jako heslo: secret z Client credentials

==> (lze si zvolit dobu platnosti, v 2021-05-31 zvoleno na 2 roky)

Model

Osoby

Zaměstnanci, studenti, rozšířená hostovská konta (je vyžadováno CRO ID).

Primární klíče:

  • __NAME__ - LOGIN@DOMAIN
  • onPremisesImmutableId - CRO ID (nikdy se nesmí měnit)
  • userPrincipalName - LOGIN

Atributy:

  • mail: LOGIN@DOMENA, jen přo zakládání, ale nelze spravovat přes Graph API

Merge: nelze

Povolení/blokace: 1:1 podle identity v midPointu

Přejmenování: potřeba ruční zásah kolem správy emailů. Původní email je u přejmenovávané identity ponechán. (TODO: čistit to ve skriptech mimo?)

Fyzické mazání: Po smazání je identita v koši po dobu 1 měsíce. Po tuto dobu ji nelze znovuzaložit automaticky přes Graph API. Lze ji obnovit přes administrátorské rozhraní Office 365, anebo smazat vývojovými administrátorskými nástroji (koš nelze vysypat přes midPoint - umí to Graph API, ale identity mají divoké identifikátory).

Skupiny

Neposílají se (ale jinak vyzkoušeno).

Licence

Read-only identity. V midPointu použito pro výpočty atributů pro přidělováné licencí (technicky: jde o "ruční" query, nelze použít přímo asociace na resourcu).

Licence se skládá z jednotlivých aplikací.

Pro každou licenci lze nastavit globální vyjímku pro nějakou aplikaci. Ale nelze nastavovat různé vyjímky pro každého uživatele (technicky: přes Graph API to lze, ale vedlo by to na strukturovaný atribut u uživatele, což nelze).

Výpočet licencí

Princip

Šílenost. Vychází se z dokumentu: https://software.zcu.cz/files/MS_EES.html

V zásadě dva typy licencí: A1 a A3 a každá z nich má studentskou a zaměstnaneckou verzi. Typ studentské se volí podle fakulty, zaměstnanecké podle self-managementu, ale jen pro vybraná prcoviště. Studentská má vždy přednost.

Role v midPointu

Počáteční import 2021-06:

# === studenti ===
./group.py o365proplus-students -s "Licence Microsoft pro všechny studenty"

for fak in fdu fst fel fav fpe; do ./modify-role.py -q subtype=stag-global-group-student extension/ext:GROUP_ZKRATKA=${fak^^} -a role-group-o365proplus-students:role; done

# === per fakulta ===
# 1) self role
for fak in fdu fst fel fav fpe rek-ntc rek-civ rek-ps rek-uk rek-ujp rek-rek rek-skm rek-suz; do
	FAK=${fak^^}
	FAK=$(echo $FAK | tr '-' '/')
	org=$(echo $fak | cut -d - -f2)
	ORG=${org^^}

	./create-role.py --oid role-self-o365proplus-$fak subtype=self-role "name=SELF: O365 $FAK" displayName="o365proplus-$fak" description="Licence pro Microsoft365 (A3plus) - $ORG" extension/ext:requestableGroups=$org requestable=true
	./modify-role.py --oid role-self-o365proplus-$fak extension/ext:requestableGroups+=staff
done
# tune catchall REK
./modify-role.py --oid role-self-o365proplus-rek-rek 'extension/ext:requestableGroups+=!civ'
./modify-role.py --oid role-self-o365proplus-rek-rek 'extension/ext:requestableGroups+=!ps'
./modify-role.py --oid role-self-o365proplus-rek-rek 'extension/ext:requestableGroups+=!suz'
./modify-role.py --oid role-self-o365proplus-rek-rek 'extension/ext:requestableGroups+=!uk' 

#./query-org.py extension/ext:OU_ZKRATKA=$FAK 'subtype=hr-org-str' | head -n 3
##==> OID
#oid=
#./modify-org.py --oid $oid -i role-group-o365proplus-${fak}:role

# 2) output roles (groups)
for fak in fdu fst fel fav fpe; do
	ORG=${fak^^}
	./group.py o365proplus-$fak -s "Licence pro Microsoft365 (A3plus) - $ORG"
done
ORG=REK; ./group.py o365proplus-rek -s "Licence Microsoft pro zaměstnance ${ORG}"

# 3) self / output connections
for fak in fdu fst fel fav fpe; do
	./modify-role.py --oid role-self-o365proplus-$fak -a role-group-o365proplus-${fak}:role
done
for org in ntc civ ps uk ujp rek skm suz; do
 ./modify-role.py --oid role-self-o365proplus-rek-${org} -a role-group-o365proplus-rek:role
done

Ručně přidat do každé self-management role pro assignment výstupní role (dodatečná kontrola při rušení autorizace):

		<condition>
			<source>
			   <path>$source/name</path>
			</source>
			<source>
			   <path>$source/extension/requestableGroups</path>
			</source>
			<expression>
				<script>
					<relativityMode>absolute</relativityMode>
					<code>
						return zcuUtils.execute('authRequestable', [
							'userObj': focus,
							'roleName': name,
							'requestableGroup': requestableGroups,
						]);
					</code>
				</script>
			</expression>
		</condition>

Postupy

Hostovská konta

Postup přidání přístupu pro hostovská konta:

  1. přidělit CRO ID, viz LPS:IdM/midPoint#Přidělení CRO ID
  2. zařadit do skupiny gapps nebo office365 (gapps znamená i google apps)
Osobní nástroje
Jmenné prostory

Varianty
Zobrazení
Akce
Kdo jsem
Navigace
Často hledaná témata
Nástroje