Tutorial INFN-AAI Liv.2 Server LDAP Enrico M. V. Fasanelli Bologna 14-18 Novembre 2016
Gestione dei server LDAP Installazione e configurazione dei server di core Master: RW Slave: RO Estensione di INFN-AAI nelle sedi Slave(s) di sede Bologna 14-18 ottobre 2016 Enrico M. V. Fasanelli - Tutorial AAI Liv. 2
Architettura Server LDAP Tre 389-DS master server (2@LNF e 1@CNAF) su macchine virtuali Due 389 slave server (ds1.infn.it @ LNF e ds2.infn.it @ CNAF) entrambi raggiungibili come ds.infn.it I server LDAP usano attualmente la versione 1.2 del 389-DS su sistemi ScientificLinux6 Siccome tali sistemi dovranno essere aggiornati, le esercitazioni saranno su 389-DS 1.3 e CentOS7 Bologna 14-18 ottobre 2016 Enrico M. V. Fasanelli - Tutorial AAI Liv. 2
Enrico M. V. Fasanelli - Tutorial AAI Liv. 2 Architettura del DIT La struttura ideale per il Directory Information Tree è, come oramai riconosciuto ed affermato da tutti gli esperti, di tipo “basso e grosso” (e non più “alto e magro” come si consigliava una ventina d’anni fa) La “posizione” di una entità all’interno della struttura organizzativa non viene definita dal suo DN, ma dal valore di attributi specifici DN:UID=enrico,OU=People,DC=LE,DC=INFN,DC=IT DN:UID=enrico,OU=People,DC=INFN,DC=IT L: LE Bologna 14-18 ottobre 2016 Enrico M. V. Fasanelli - Tutorial AAI Liv. 2
Gestione del pre-installato “Dio ci ha messo 7 giorni per creare il mondo perché non doveva gestire il pre-installato” (cit.) Riportare tutte le strutture dell’INFN all’interno di un albero “basso e grosso” è una impresa che va oltre le possibilità di INFN-AAI (basti pensare alla gestione delle omonimie…) Bologna 14-18 ottobre 2016 Enrico M. V. Fasanelli - Tutorial AAI Liv. 2
Enrico M. V. Fasanelli - Tutorial AAI Liv. 2 INFN-AAI DIT Sovrapposizione dei due modelli Ramo nazionale e rami locali DIT: Directory Information Tree Bologna 14-18 ottobre 2016 Enrico M. V. Fasanelli - Tutorial AAI Liv. 2
Enrico M. V. Fasanelli - Tutorial AAI Liv. 2 Directory e Relazioni Una Directory è un Data Base ad albero. Non è possibile definire, usando i normali sistemi di gestione delle Directory, nessuna relazione tra le entry Per INFN-AAI è invece essenziale poter mettere in relazione le entry relative al “pre-installato” che sono all’interno dei rami locali, con le corrispondenti entry relative alle identità, che vivono nel ramo nazionale Bologna 14-18 ottobre 2016 Enrico M. V. Fasanelli - Tutorial AAI Liv. 2
Relazioni nel DIT di INFN-AAI Entry nel ramo nazionale Entry nel ramo locale dn:infnUUID=f8d35e28-2532-43c8-989c-3faa58f5cba4,ou=People,dc=infn,dc=it uid: enrico infnUUID:f8d35e28-2532-43c8-989c-3faa58f5cba4 infnLinkedUUID:f8d35e28-2532-43c8-989c-3faa58f5cba4 sn:Fasanelli givenName:Enrico Maria schacPersonalUniqueID:urn:mace:terena.org:schac:personalUniqueID:it:CF:FSNNCM61R19B619J l: LE dn:infnUUID=020f41f5-913a-425f-bb91-aaea40739ff7,ou=People,dc=le,dc=infn,dc=it infnLinkedUUID:f8d35e28-2532-43c8-989c-3faa58f5cba4 infnUUID: 020f41f5-913a-425f-bb91-aaea40739ff7 schacPersonalUniqueID:urn:mace:terena.org:schac:personalUniqueID:it:CF:FSNNCM61R19B619J uid: enrico cn: Enrico M V Fasanelli givenName: Enrico M V sn: Fasanelli Bologna 14-18 ottobre 2016 Enrico M. V. Fasanelli - Tutorial AAI Liv. 2
Enrico M. V. Fasanelli - Tutorial AAI Liv. 2 Architettura del 389-DS Il disegno di INFN-AAI prevede che nelle sedi vengano dispiegati server LDAP read-only, che devono contenere repliche, di interesse per la sede, delle informazioni contenute nei sistemi di core Siccome il “quanto minimo” replicabile in un server 389-DS è il DB, ogni server di core contiene un DB relativo al suffix DC=infn,DC=it ed un DB per ogni sede Bologna 14-18 ottobre 2016 Enrico M. V. Fasanelli - Tutorial AAI Liv. 2
Struttura dei DB e del DIT Ramo Nazionale DC=infn,DC=it OU=people,DC=infn,DC=it OU=groups,DC=infn,DC=it RAMO di sede (o locale) DC=ac,DC=infn,DC=it OU=people,DC=ac,DC=infn,DC=it OU=groups,DC=ac,DC=infn,DC=it Bologna 14-18 ottobre 2016 Enrico M. V. Fasanelli - Tutorial AAI Liv. 2
Enrico M. V. Fasanelli - Tutorial AAI Liv. 2 Schema Lo schema contenuto nella versione standard del 389-DS comprende praticamente le definizioni standard (ossia contenute in un qualche RFC) degli attributi. Alcune esigenze di INFN-AAI non sono contemplate nelle definizione degli attributi standard e quindi abbiamo definito uno schema “privato” registrandolo all’interno dello spazio privato INFN degli OID, sotto 1.3.6.1.4.1.10403 Bologna 14-18 ottobre 2016 Enrico M. V. Fasanelli - Tutorial AAI Liv. 2
Enrico M. V. Fasanelli - Tutorial AAI Liv. 2 Infn ObjectClasses infnPerson infnAccount infnHost infnService Bologna 14-18 ottobre 2016 Enrico M. V. Fasanelli - Tutorial AAI Liv. 2
Enrico M. V. Fasanelli - Tutorial AAI Liv. 2 infnPerson objectClasses: ( 1.3.6.1.4.1.10403.1.2.1 NAME 'infnPerson' SUP top AUXILIARY MUST ( cn $ infnUUID ) MAY ( infnLinkedUUID $ infnCertSubjectDN $ infnAccountDN $ infnKerberosPrincipal ) X-ORIGIN 'INFN AAI' ) Bologna 14-18 ottobre 2016 Enrico M. V. Fasanelli - Tutorial AAI Liv. 2
Enrico M. V. Fasanelli - Tutorial AAI Liv. 2 infnAccount objectClasses: ( 1.3.6.1.4.1.10403.1.2.2 NAME 'infnAccount' SUP top AUXILIARY MUST ( cn $ infnUUID $ infnLinkedUUID ) MAY ( infnCertSubjectDN $ infnAccountDN $ infnKerberosPrincipal ) X-ORIGIN 'INFN AAI' ) Bologna 14-18 ottobre 2016 Enrico M. V. Fasanelli - Tutorial AAI Liv. 2
Enrico M. V. Fasanelli - Tutorial AAI Liv. 2 infnHost objectClasses: ( 1.3.6.1.4.1.10403.1.2.4 NAME 'infnHost' SUP top STRUCTURAL MUST ( cn ) MAY ( description $ infnCertSubjectDN $ infnKerberosPrincipal $ infnUUID $ userpassword ) X-ORIGIN 'INFN AAI' ) Bologna 14-18 ottobre 2016 Enrico M. V. Fasanelli - Tutorial AAI Liv. 2
Enrico M. V. Fasanelli - Tutorial AAI Liv. 2 infnService objectClasses: ( 1.3.6.1.4.1.10403.1.2.5 NAME 'infnService' SUP top STRUCTURAL MUST ( cn ) MAY ( description $ infnCertSubjectDN $ infnKerberosPrincipal $ infnUUID $ userpassword ) X-ORIGIN 'INFN AAI' ) Bologna 14-18 ottobre 2016 Enrico M. V. Fasanelli - Tutorial AAI Liv. 2
Enrico M. V. Fasanelli - Tutorial AAI Liv. 2 Hands-on 389-DS Installazione e configurazione del 389-DS su RHEL7 Le istruzioni sono in https://wiki.infn.it/cn/ccr/aai/howto/389ds-1.3-install-rhel7 Preparazione del sistema Installazione del 389-DS Setup guidato Personalizzazione per INFN-AAI Configurazione SSL/TLS Configurazione Kerberos/SASL-GSSAPI Bologna 14-18 ottobre 2016 Enrico M. V. Fasanelli - Tutorial AAI Liv. 2
Enrico M. V. Fasanelli - Tutorial AAI Liv. 2 Punti critici Configurazione SSL/TLS Inizializzazione DB e configurazione multi-master Configurazione Kerberos/SASL-GSSAPI Bologna 14-18 ottobre 2016 Enrico M. V. Fasanelli - Tutorial AAI Liv. 2
Console VS command-line E’ possibile effettuare qualunque operazione di amministrazione del 389-DS in due modalità Console grafica: 389-console Command-line: LDAP E’ utile prendere dimestichezza con la console grafica Command-line è più veloce ed è “scriptable” Dovendo installare e configurare 2 master, useremo entrambi i metodi (ma non per tutto) Bologna 14-18 ottobre 2016 Enrico M. V. Fasanelli - Tutorial AAI Liv. 2
Enrico M. V. Fasanelli - Tutorial AAI Liv. 2 My infn.it Usando l’immagine Centos_7_MIN preparata per il Tutorial AAI Liv.1 configureremo due master dsm1.infn.it dsm2.infn.it ed uno slave ds1.infn.it (alias ds.infn.it) Tali host dovranno essere raggiungibili dal vostro PC e quindi dovrete definirli in /etc/hosts Bologna 14-18 ottobre 2016 Enrico M. V. Fasanelli - Tutorial AAI Liv. 2
Enrico M. V. Fasanelli - Tutorial AAI Liv. 2 INFN-AAI private CA Tutte le operazioni di sincronia tra master e tra master e slave, sono protette da autenticazione SASL-X509 ed autorizzazione basata sul subject del certificato. Siccome nel laboratorio useremo i nomi di INFN-AAI in produzione, non è possibile usare certificati firmati da CA riconosciute CA.pl è una semplice interfaccia a OpenSSL che permette di gestire CA privata Bologna 14-18 ottobre 2016 Enrico M. V. Fasanelli - Tutorial AAI Liv. 2
Enrico M. V. Fasanelli - Tutorial AAI Liv. 2 Perl Net::LDAP In linea di principio, siccome la gestione via command-line si basa su ricerche e modifiche del contenuto dei server LDAP, sarebbe possibile usare semplicemente ldapsearch ed ldapmodify La maggior parte degli script sviluppati nel corso degli ultimi anni da Dael per la gestione dei server LDAP è scritta in Perl ed usa il modulo Net::LDAP Bologna 14-18 ottobre 2016 Enrico M. V. Fasanelli - Tutorial AAI Liv. 2
Gestione dei server LDAP Enrico M. V. Fasanelli Tutorial INFN-AAI F I N E Gestione dei server LDAP Enrico M. V. Fasanelli Tutorial INFN-AAI