Základy konfigurace zabezpečení JBoss AS 7 s OpenLDAP

zaklady-konfigurace-zabezpeceni-jboss-as-7-s-openldap

Centralizovaná správa uživatelů a zdrojů je vhodný nástroj pro snížení rizik a režijních nákladů ve vaší organizaci. Vyšší fluktuace zaměstnanců může vést k znatelným nákladům při správě uživatelských přístupů a rolí v podnikových systémech a zdrojích. Centralizovaná správa uživatelů umožní spravovat záznamy o uživatelích a zdrojích v jednom bodě, a tím předcházet redundanci a nekonzistenci dat. Snížení redundance dat se pak promítne ve vyšší míře kontroly a transparentnosti. Vedlejším efektem je také zvýšení rychlosti reakce na změny a snížení nákladů spojených se změnou uživateských opravnění (např. příchod nového zaměstnance).

Centralizovaná správa uživatelů a zdrojů je vhodný nástroj pro snížení rizik a režijních nákladů ve vaší organizaci. Vyšší fluktuace zaměstnanců může vést k znatelným nákladům při správě uživatelských přístupů a rolí v podnikových systémech a zdrojích. Centralizovaná správa uživatelů umožní spravovat záznamy o uživatelích a zdrojích v jednom bodě, a tím předcházet redundanci a nekonzistenci dat. Snížení redundance dat se pak promítne ve vyšší míře kontroly a transparentnosti. Vedlejším efektem je také zvýšení rychlosti reakce na změny a snížení nákladů spojených se změnou uživateských opravnění (např. příchod nového zaměstnance).

OpenLDAP je open source řešení pro správu  uživatelů a zdrojů. Tato serverová aplikace implementuje protokol LDAP, který je de facto standardem ve správě uživatelských dat v podnikových systémech. S OpenLDAP získáte stabilní (historie OpenLDAP sahá do 90. let) a multiplatformní server s podporou všech běžných bezpečnostních standardů (TLS, autentizace, certifikáty atd.). V tomto příspěvku se  nebudeme věnovat nasazení LDAP databáze a konfigurace příslušných systémů jako celku, ale zaměříme se na využití autentizačních záznamů spravovaných LDAP serverem v bezpečnostních doménách JAAS JBoss AS 7 a pro zabezpečení vzdáleného přístupu k samotnému JBoss aplikačnímu serveru.

Prerekvizity

Základním předpokladem je nainstalovaný OpenLDAP server. S menšími obměnami však bude možné tento postup aplikovat na libovolné  databázové servery postavené na LDAP protokolu. Instalací OpenLDAP se zde také nebudeme zabývat, ale v případě využití instalace ze zdrojových kódů (viz openldap-quickstart) je nutné v konfiguraci instalace přidat podporu pro memberof overlay a TLS(pokud budete chtít využívat zabezpečený kanál pro komunikaci s LDAP serverem, což je při reálném nasazení prakticky nutnost). V případě instalace OpenLDAP pomocí balíčkovacích systémů již tato modulární funkcionalita bývá obsažena automaticky (např. v RHEL 6.0, balíčky openldapopenldap-clientsopenldap-servers).

Ukázková databáze

Pro demonstraci propojení JBoss AS 7  s OpenLDAP použijeme následující velmi jednoduchou databázovou strukturu uvedenou níže (obrazem, i .ldif). Ze znalosti struktury a využití doménových jmen v konfiguracích níže by pak nemělo být složité zkonfigurovat JBoss AS 7 v libovolném prostředí, s různě strukturovanými databázemi.

ldap

konfigurace

Konfigurace OpenLDAP

Pro využití bezpečnostní komunikační vrstvy TLS je nutné v OpenLDAP configu (slapd.conf) nastavit následující parametry (${popis hodnoty:příklad}vhodně nahraďte):

TLSCertificateFile ${cesta k certifikátu : /usr/local/etc/openldap/servercrt.pem}
TLSCertificateKeyFile ${cesta k klíči : /usr/local/etc/openldap/serverkey.pem}

Pro generování klíčů můžete využít například nástroj keytool (přibalen k JDK) nebo OpenSSL.Pro rozumné zabezpečení je také vhodné nastavit přístupová práva k LDAP serveru, která budou omezovat vzdálený server (v tomto případě JBoss AS 7) pouze na přístup k hodnotám, které mají v autentizačním procesu uplatnění.

Například takto (kde uživatel „jboss server“ bude členem skupiny „ldapRestricted“, v konfiguraci LDAP serveru):

konfigurace

V případě, že využíváme TLS, je nutné přidat veřejný certifikát pro LDAP server do truststore (viz nástrojkeytool) a tento trustStore načíst JBoss AS 7 serverem. V konfiguraci serveru to lze udělat následovně: Následující konfigurace slouží pouze jako návodné předlohy a veškeré hodnoty je potřeba zaměnit za ekvivalenty ve vašem prostředí.

konfigurace

Konfigurace zabezpečení management konzole Jboss AS 7

Následující konfigurace ukazuje, jakým způsobem lze nastavit zabezpečení management konzole pro uživatele, kteří jsou ve skupině jbossAdmin (dn: memberof=cn=jbossAdmin,ou=roles,dc=doxologic,dc=com). Uživatelé se hledají v organizační skupině people  (dn:  ou=people,ou=entities,dc=doxologic,dc=com )  a jejích případných podskupinách (určuje parametr recursive); v případě, že je daný uživatel nalezen, zkontroluje se navíc, jestli je členem skupiny jbossAdmin (advanced-filter element); k tomu je zapotřebí mít v OpenLDAP nakonfigurovaný memberof overlay.

konfigurace

Konfigurace zabezpečení bezpečnostní domény

Následující konfigurace ukazuje,  jak použít  LdapExtLoginModule k propojení do LDAP databáze, ověření uživatele a získání jeho uživatelských rolí.

  • bindDN – doménové jméno uživatele pro připojení k LDAP serveru (v našem případě užvatel „jboss7“)
  • bindCredential - heslo pro výše jmenovaného
  • baseCtxDN - skupina, která obsahuje uživatele, případně podskupiny uživatelů (rekurzivně)
  • baseFilter – filtr pro výběr uživatele (specifikuje hodnotu, jaký atribut použít pro porovnání řetězce přihlašovacího jména zastoupeného {0})
  • rolesCtxDN – skupina, která obsahuje entity rolí (v tomto případě ldap třídy groupOfNames, kde uživatelé jsou uvedeni v atributu member), případně podskupiny rekurzivně
  • roleFilter – filtr pro výběr role, definuje, jaký atribut použít (záleží na volbě třídy pro entitu rolí, v případě groupOfNames je to atribut member), zástupná sekvence {1} je nahrazena za doménové jméno uživatele (např. uid=jachym.culka,ou=people,ou=entities,dc=doxologic,dc=com) získané na základě přihlašovacího jména a baseFilteru, skupina {0} obsahuje řetězec přihlašovacího jména a v případě zápisu atributu member třídy  groupOfNames v OpenLDAP se nevyužije
  • roleAttributeIsDN – definuje, zda LDAP server vrací jméno role pro uživatele jako doménové jméno, nebo jako jednoduché jméno (v případě OpenLDAP je to doménové jméno)
  • roleNameAttributeID – označuje název atributu, který se použíje k extrakci jména role z doménového jména
  • roleRecursion - definuje zda lze role hledat i v podskupinách rolesCtxDN

konfigurace

Závěr

Způsob pro využítí LDAP databáze pro autentizaci a autentifikaci v JBoss AS 7,  jak byl výše demonstrován, rozhodně nezahrnuje všechny možnosti, které  JBoss aplikační server ve své 7. verzi na tomto poli nabízí. Doufám, že tento stručný návod vás navnadil k hlubšímu zmapování této oblasti, případně vytvoření rychlého prototypového řešení. Pro další postup vám možná poslouží následující odkazy, případně jistá dávka trpělivosti a Google :-).

Zdroje a užitečné odkazy

Dokumentace k AS 7.1 a sec. subsys

Detailnější popis LDAPExt modulu

Generování certifikátů, klíčů a přidávání do trustore

OpenLDAP 2.4 doc

OpenLDAP - access control      

    

You have no rights to post comments

Newsletter

Připojte se k odběru našeho newsletteru a dostávejte novinky o výhodných open source řešeních rovnou k sobě do schránky.

Máte dotaz? Rádi byste využili našich služeb? Kontaktujte nás:

info@doxologic.com +420 223 008 898