Identity and Access Management Praktické cvičení
[email protected]
Cíl cvičení Identity & Access Management
Identity Management Část IdM
● Seznámení s OpenIDM ● Načtení HR exportu ● Synchronizace do LDAPu ● Přiřazení role a propagace do LDAPu ● Schvalování přístupu
Access Management Část AM
● Nakonfigurování domény a SSO brány ● Reverzní proxy a centrální autentizace ● Cross-domain SSO a federace ● Propojení s IdM
OpenIDM Identity Management
Úlohy IdM K čemu IdM slouží?
● Centrální řízení účtů a práv v systémech ● ● ● ●
Životní cyklus uživatele a přidělených práv Provisioning nastavení do cílových systémů Synchronizace hesel napříč systémy Validace a synchronizace nastavení
● User-self service ● Podpora auditu
Ideální situace Kdy potřebujeme IdM nejméně?
● Centrální úložiště uživatelů a práv ● SSO v rámci všech aplikací PC
Server Prohlížeč Aplikace Y Aplikace X
Active Directory
Základní pojmy Objekty a procesy
● managed object ● system object ● resource ● source system, source object ● target system, target object ● synchronization, validation ● mapping
Architektura Celková architektura
Úloha I Vytvoření uživatele
● Nastartování OpenIDM $ ./startup.sh
● Získání seznamu uživatelů $ curl \ --header "X-OpenIDM-Username: openidm-admin" \ --header "X-OpenIDM-Password: openidm-admin" \ http://localhost:8080/openidm/managed/user/?_queryId=query-all-ids
● Vytvoření uživatele { "_id": "frank", "userName": "frank", "givenName": "frank", "familyName": "smith", "email": "
[email protected]", "password": "idm", "description": "My first user" }
● Zobrazení uživatele http://localhost:8080/openidm/managed/user/joe
Úloha II Kontrola databáze
● Otevření OrientDB studia http://localhost:2480/studio/
● Seznam dostupných tříd / tabulek $ bin/console.sh > classes
● Zobrazení objektů > select * from managed_user > select * from audit_activity
OpenICF Open Identity Connectors Framework and Toolkit
Úloha III Načtení dat z CSV http://openidm.forgerock.org/doc/install-guide/index.html#more-sample4
● Změna konfigurační složky $ ./startup.sh -p samples/sample4
● Konfigurace ○ ○ ○
- mapování provisioner-**.json - konektor schedule- **.json - spouštěná úloha sync.json
● Manuální spuštění http://localhost:8080/openidm/recon? _action=recon&mapping=systemHrAccounts_managedUser
Konfigurační namespacy Jak se odkazovat na typy objektů
Úloha IV Kontrola záznamů
● Aplikační logy $ less logs/openidm0.log.0
● Aplikační logy $ less audit/action.log
● Seznam uživatelů $ curl \ --header "X-OpenIDM-Username: openidm-admin" \ --header "X-OpenIDM-Password: openidm-admin" \ --request GET \ "http://localhost:8080/openidm/managed/user/?_queryId=query-all-ids"
X.500 a LDAP Adresářové služby
● DIT
● Protokoly X.500
X.500 a LDAP Schéma a data
● Objectclasses (structural vs auxilary) ● Attributes (matching rules, syntaxes) ● Distinguished name ● Naming attribute dn: ou=groups,dc=example,dc=com changetype: add objectClass: organizationalUnit objectClass: top ou: groups description: Groups container.
Úloha V Příprava ApacheDS
● Spuštění serveru $ /etc/init.d/apacheds-2.0.0-M12-default start
● Vtvoření kontejnerů pro uživatele a skupiny $ ldapadd -D uid=admin,ou=system -w secret -h localhost -p 10389 dn: ou=people,dc=example,dc=com objectclass: organizationalUnit objectclass: top ou: users description: People container. # To samé pro ou=groups
Úloha VI Kontrola záznamů a LDAP search
● Zobrazení celého podstromu $ ldapsearch -D uid=admin,ou=system -w secret -h localhost -p 10389 -LLL \ -b dc=example,dc=com -s subtree
● Zobrazen kořenového záznamu $ ldapsearch -D uid=admin,ou=system -w secret -h localhost -p 10389 -LLL \ -b "" -s base "" +
● Dohledání skupin systémového uživatele $ ldapsearch -D uid=admin,ou=system -w secret -h localhost -p 10389 -LLL \ -b "ou=system" -s subtree "(uniqueMember=uid=admin,ou=system)" "*"
● Zobrazení schématu $ ldapsearch -D uid=admin,ou=system -w secret -h localhost -p 10389 -LLL \ -b "cn=schema" -s base "" "+"
X.500 a LDAP Kde se vzal LDAP
● X.500 protokoly pracují pouze s OID ● OSI networking stack ● RFC pro LDAP ● Navázané standardy ○ LDIF ○ Shadowing, changelog ○ DSML
Úloha VII Apache Directory Studio
● Připojení k serveru ● Procházení DIT ● Zobrazení schématu
Úloha VIII Vytvoření uživatelů a skupin dn: uid=jdoe,ou=people,dc=example,dc=com objectClass: inetOrgPerson cn: John Doe sn: Doe givenName: John mail:
[email protected] telephoneNumber: 12345 uid: jdoe dn: cn=openidm,ou=groups,dc=example,dc=com objectClass: groupOfUniqueNames objectClass: top cn: openidm uniqueMember: uid=dummy,ou=system uniqueMember: uid=jdoe,ou=People,dc=example,dc=com dn: cn=openidm2,ou=groups,dc=example,dc=com objectClass: groupOfUniqueNames objectClass: top cn: openidm uniqueMember: uid=dummy,ou=system
Úloha IX Synchronizace s LDAPem $ bin/startup.sh -p samples/sample2d
● Oprava konfigurace LDAPu provisioner.openicf-ldap.json: credential
● Spuštění rekonciliace $ curl \ --header "X-OpenIDM-Username: openidm-admin" \ --header "X-OpenIDM-Password: openidm-admin" \ --request POST \ "http://localhost:8080/openidm/recon? _action=recon&mapping=systemLdapGroups_managedGroup" ... systemLdapAccounts_managedUser ... managedUser_systemLdapAccounts
Úloha X Oprava úlohy IX
● Oprava konfigurace synchronizace "source" : "", "transform" : { "type" : "text/javascript", "source" : "source.displayName ? source.displayName : source.userName;" }, "target" : "cn"
Reconciliation Validace a synchronizace systémů
SOURCE OBJECT SOURCE OBJECT
LINK LINK
TARGET OBJECT TARGET OBJECT
1. Iterate through all objects for the object set specified as "source". 2. Iterate through all object identifiers for the object set specified as "target". 3. Iterate through all link objects, carrying out the following steps.
Úloha XI Kontrola dat OpenIDM
● Zobrazení záznamů > classes > select from managed_user > select from managed_group > select from managed_group > browse class managed_group > display record 0 > display record 1 > select @this.toJSON() from managed_group > select from link
... audit_recon, audit_activity ...
Synchronizační situace Source reconciliation (LEFT JOIN) Source Qualifies? Yes
No
Link Exists? Yes
No
Target Found? 0
1
X X
X
X
X
X
X
X
X
X
X
X
X
X X
X
X
IGNORE
X
SOURCE_MISSING
DELETE
UNQUALIFIED
DELETE
UNQUALIFIED
DELETE
TARGET_IGNORED
IGNORE
UNQUALIFIED
DELETE
ABSENT
CREATE
FOUND
UPDATE
AMBIGUOUS
EXCEPTION
MISSING
EXCEPTION
CONFIRMED
UPDATE
X
X
X
Default Action
TARGET_IGNORED
X
X
Situation
X
X
X
X
>1
X X X X X
Synchronizační situace Target reconciliation (RIGHT JOIN)
Target Qualifies? Yes
No
Link Exists? Yes
No
Source Exists? Yes
No
Source Qualifies? Yes
No
X X
X
X
X
X
X
X
X
X
X
X
X X X
Situation
Default Action
TARGET_IGNORED
IGNORE
UNASSIGNED
EXCEPTION
CONFIRMED
UPDATE
UNQUALIFIED
DELETE
SOURCE_MISSING
DELETE
Úloha XII Synchronizace členství ve skupinách
● Úprava skupin pro uživatele $ curl \ --header "X-OpenIDM-Username: openidm-admin" \ --header "X-OpenIDM-Password: openidm-admin" \ --request POST \ -d '[{ "replace":"ldapGroups", \ "value": ["cn=openidm2,ou=Groups,dc=example,dc=com"] }]' \ "http://localhost:8080/openidm/managed/user?_action=patch&_queryId=foruserName&uid=jdoe"
● Spuštění rekonciliace $ curl \ --header "X-OpenIDM-Username: openidm-admin" \ --header "X-OpenIDM-Password: openidm-admin" \ --request POST \ "http://localhost:8080/openidm/recon? _action=recon&mapping=managedUser_systemLdapAccounts"
Úloha XIII Workflow http://openidm.forgerock.org/doc/integrators-guide/index.html#example-provisioning-workflow http://activiti.org/userguide/index.html#activitiDesigner
IDM v praxi Ukázky reálných implementací
● Ukázka OSK a TO2 GUI ○ org-tree, práva, účty, žádosti, delegace
● Ukázka DirX Identity ○ cílové systémy, privilege hierarchy, workflow, metadirectory
OpenAM Access Management
Úlohy AM K čemu AM slouží?
● Centrální řízení přístupových politik ● Poskytování autentizačních služeb ● Poskytování autorizačních služeb ● Podpora auditu
Identity vs Access Management Hledání hranice
*.foo.com
*.bar.com
IDENTITIES
IDENTITIES
ACCOUNTS
ACCOUNTS FEDERATION
Architektura Komponenty OpenIDM
Integrace s OpenIDM Policy Agents
PEP PAP
Komunikace mezi komponentami Centrální autentizace a autorizace
Úloha I Instalace
● Nastavení domény $ sudo vim /etc/hosts 127.0.0.1 jcu-{prijmeni}.example.com
● Stažení Apache Tomcat ₊ OpenAM ● Nastavení Tomcatu $ sudo vim ${catalina.home}/bin/setenv.sh JAVA_OPTS="-Xmx1024m -XX:MaxPermSize=256m" $ sudo vim ${catalina.home}/conf/server.xml port="9080" protocol="HTTP/1.1"
● Nasazení OpenAM ${catalina.home}/webapps/ openam-server-10.1.0-Xpress.war => openam.war
Úloha II Konfigurace aplikace
● Nastartování Tomcatu $ bin/startup.sh $ tail -f logs/catalina.out
● Konfigurace pomocí webového rozhraní http://jcu-{prijmeni}.example.com:9080/openam/
Samostatná cvičení Identity & Access Management
Samostatné úkoly Úkoly na zápočet
● ApacheDS jako LDAP PAM modul http://wiki.debian.org/LDAP/PAM
● Nakonfigurování jednoho Policy Agenta http://docs.forgerock.org/en/openig/2.1.0/gateway-guide/index/chapfederation-tutorial.html
● Identity Federation http://openam.forgerock.org/openam-documentation/openam-docsource/doc/admin-guide/index/chap-federation.html