Indice
Incontro su Autenticazione e Autorizzazione
12 Maggio 2008
Aula Informatica Edificio Polifunzionale di Scienze
Universita' degli Studi di Parma
Una infrastruttura di autenticazione e autorizzazione flessibile e scalabile per l'Ateneo
Laboratorio di Calcolo Avanzato del Dipartimento di Fisica
lca@fis.unipr.it
Obiettivi
- Sistema di Autenticazione centralizzato e allineato con l'Identity Server di Ateneo
- Separazione del livello di autoririzzazione dall'autenticazione, mediante l'utilizzo di diversi "Domini" per l'Access Management.
- Deployment rapido e semplice
- Autenticazione supportata dalle principali risorse (Sistemi operativi e servizi)
- Architettura scalabile
Architettura
Servizi Forniti
- Autenticazione Sistemi (server e Workstation)
- Linux (via LDAP direttamente)
- Windows (via domain controller Samba con o senza Roaming Profile)
- Principali utilizzi:
- PC Pubblici (Biblioteca, scanner, ..)
- Condivisione Samba (Windows, Linux, Mac)
- Spazio Utenti
- Spazio Backup
- Web Personali
- scambio
- gruppi di lavoro e di ricerca
-
- pop, imap e smtp
- Stampa (Windows, Linux, Mac) con autenticazione e accounting
- Web Application
- Servizi Intranet (in via di sviluppo)
- Proxy Web
Prerequisiti
- Server Linux (noi usiamo Scientific Linux 4.X)
- OpenLDAP con schemi standard + samba (noi usiamo la versione 2.2.13)
- Samba (noi usiamo la versione 3.0.25b)
- smbldap-tools (noi usiamo la versione 0.9.4)
Organizzazione dei file
- Gestione centralizzabile dei server con delega della configurazione dei domini
- local_def.inc
<? # DEFINIZIONE UTENTI E GRUPPI LOCALI ############ USERS ############## $dst['user']["localuser1@fis.unipr.it"] = array("uidnumber"=>"9001","password"=>"secret1"); $dst['user']["localuser2@gmail.com"] = array("uidnumber"=>"9002","password"=>"secret2"); $dst['user']["localuser3@libero.it"] = array("uidnumber"=>"9003","password"=>"secret3","description"=>"Ospite"); # ############### GROUPS ############ $dst['group']['biblio']["gidnumber"]="2300"; $dst['group']['biblio']["memberuid"]=array( "nome.cognome1", "nome.cognome2", "nome.cognome3" $dst['group']['ammin']["gidnumber"]="2400"; $dst['group']['ammin']["memberuid"]=array( "nome.cognome4", "nome.cognome5", "nome.cognome6" ?>
- fisica.conf
<? # CONFIGURAZIONE DOMINIO FISICA #UTENTI AGGIUNTI DA UNIPR $rule['ldapadd']['Personale'][] = "ou=Dipartimento di Fisica"; $rule['ldapadd']['Personale'][] = "mail=nome.cognome1@unipr.it"; $rule['ldapadd']['Personale'][] = "mail=nome.cognome2@unipr.it"; $rule['ldapadd']['Ospiti'][] = "(&(ciclodottorato=23)(nomedottorato=fisica))"; #Inizio 09/07 $rule['ldapadd']['Ospiti'][] = "(&(ciclodottorato=22)(nomedottorato=fisica))"; #Inizio 09/06 #ESCLUSO DALL'INSERIMENTO $rule['ldapban']['Personale'][] = "cn=Bad Prof"; #UTENTI E GRUPPI AGGIUNTI DA DEFINIZIONI LOCALI $lrule['user']["localuser2@gmail.com"] = true; $lrule['user']["localuser3@libero.it"] = true; $lrule['group']['biblio'] = true; ?>
Gestione
Crontab
0-59/10 * * * * /usr/sbin/mkldap -hd --update fisica 30 1 * * * /usr/sbin/mkldap -c grid-ce.conf --update grid
Un esempio di configurazione
fisica.conf
Modifica sul server samba.fis.unipr.it al file /etc/mkldap/samba/fisica.conf:
############ REGOLE LDAP [...] ### Tutorial mkldap ### $rule['ldapadd']['Personale'][] = "mail=evelina.ceccato@unipr.it"; $rule['ldapadd']['Personale'][] = "mail=antonio.paini@unipr.it"; $rule['ldapadd']['Personale'][] = "mail=paolo.pollonara@unipr.it"; $rule['ldapadd']['Personale'][] = "mail=norberto.vignali@unipr.it"; $rule['ldapadd']['Personale'][] = "mail=andrea.pellegrini@unipr.it"; $rule['ldapadd']['Personale'][] = "mail=luca.bergonzi@unipr.it"; $rule['ldapadd']['Personale'][] = "mail=cesare.marchesini@unipr.it"; $rule['ldapadd']['Personale'][] = "mail=giordano.pincolini@unipr.it"; $rule['ldapadd']['Personale'][] = "mail=marco.silvestri@unipr.it"; $rule['ldapadd']['Personale'][] = "mail=vincenzo.palermo@unipr.it"; $rule['ldapadd']['Personale'][] = "mail=massimo.manghi@unipr.it"; $rule['ldapadd']['Personale'][] = "mail=rita.olla@unipr.it"; $rule['ldapadd']['Personale'][] = "mail=andrea.giovanella@unipr.it"; $rule['ldapadd']['Personale'][] = "mail=gianfranco.galli@unipr.it"; $rule['ldapadd']['Personale'][] = "mail=mario.bo@unipr.it"; $rule['ldapadd']['Personale'][] = "mail=franco.sartore@unipr.it"; $rule['ldapadd']['Personale'][] = "mail=davide.peis@unipr.it"; $rule['ldapadd']['Personale'][] = "mail=franco.montanari@unipr.it"; $rule['ldapadd']['Personale'][] = "mail=clara.ninimosi@unipr.it"; $rule['ldapadd']['Personale'][] = "mail=antonio.sarubbi@unipr.it"; $rule['ldapadd']['Personale'][] = "mail=andrea.pescetti@unipr.it"; $rule['ldapadd']['Personale'][] = "mail=sara.valla@unipr.it"; $rule['ldapadd']['Personale'][] = "mail=barbara.bertoli@unipr.it"; $rule['ldapadd']['Personale'][] = "mail=giulio.campanini@unipr.it"; $rule['ldapadd']['Personale'][] = "mail=gianna.goberti@unipr.it"; $rule['ldapadd']['Personale'][] = "mail=fabrizio.russo@unipr.it"; $rule['ldapadd']['Personale'][] = "mail=davide.bettati@unipr.it"; $rule['ldapadd']['Personale'][] = "mail=fabrizio.gattamelati@unipr.it"; ### fine tutorial mkldap ### [...] $lrule['group']['tutorialmkldap'] = true;
Il file definisce le regole per il dominio fisica
Con queste modifiche, vengono aggiunti al dominio fisica, residente sul server chiamato samba gli utenti facenti parte del Personale di ateneo indentificati col campo mail=, inoltre viene abilitato il gruppo tutorialmkldap
local_def.inc
Modifica sul server samba.fis.unipr.it al file /etc/mkldap/local_def.inc
[...] $dst['group']['tutorialmkldap']["gidnumber"]="5030"; $dst['group']['tutorialmkldap']["memberuid"]=array( "alessio.cavalieri", "roberto.alfieri", "roberto.covati", "evelina.ceccato", "antonio.paini", "paolo.pollonara", "norberto.vignali", "andrea.pellegrini", "luca.bergonzi", "cesare.marchesini", "giordano.pincolini", "marco.silvestri", "vincenzo.palermo", "massimo.manghi", "rita.olla", "andrea.giovanella", "gianfranco.galli", "mario.bo", "franco.sartore", "davide.peis", "franco.montanari", "clara.ninimosi", "antonio.sarubbi", "andrea.pescetti", "sara.valla", "barbara.bertoli", "giulio.campanini", "gianna.goberti", "fabrizio.russo", "davide.bettati", "fabrizio.gattamelati" ); [...]
Il file definisce i gruppi e le regole generali che possono valere su tutto il server.
Con queste modifiche, viene definito il gruppo tutorialmkldap e tutti gli afferenti ad esso.
Un utente normalmente ha un gruppo di default (es. gid=6002, Personale) e puo' afferire a piu' di un gruppo secondario che gli consente di cooperare con altri utenti, ad esempio attraverso le condivisioni del server samba.
Un esempio:
# id alessio.cavalieri uid=3216(alessio.cavalieri) gid=6002(Personale) gruppi=6002(Personale),2300(biblio),5002(seminariscuole),5004(bwork),5007(informazioni),5008(lca),5009(segreteria),5013(infn),5014(sustain),5017(grid),5019(albert),5024(microcosmo),5027(hycarb),5030(tutorialmkldap)
smb.conf
Modifica sul server samba.fis.unipr.it al file /etc/samba/smb.conf
[...] ### CONDIVISIONI DI GRUPPO ### [...] [tutorialmkldap] comment = Condivisione di test per il tutorial su mkldap path = /home/gruppi/tutorialmkldap public = no writable = yes force create mode= 0665 force directory mode = 0775 valid users = @tutorialmkldap force group = tutorialmkldap [...]
Con queste modifiche, si crea una nuova condivisione, solo i membri del gruppo riescono ad accedervi e scrivono i files in modo che gli altri membri possano modificarli.
Cosa si ottiene
Ad esempio con questa combinazione, e' possibile ottenere un flessibile ambiente di lavoro per i gruppi di ricerca: repository di documenti e spazio web modificabile dai membri del gruppo, il tutto utilizzando i normali strumenti a disposizione su windows, sui mac o su linux
Si possono creare directory con file riservati nello spazio quotato di gruppo, inoltre se si ha la necessita' di attivare un sito web di gruppo, e' possibile attingere ad una cartella dal filesystem condiviso col server web ( web.fis.unipr.it ), ecco un esempio di alcuni gruppi che lo usano: | |
http://www.fis.unipr.it/microcosmo/ http://www.fis.unipr.it/labdid/ http://www.fis.unipr.it/hycarb/ http://www.fis.unipr.it/fullereni/ http://www.fis.unipr.it/infm/infm.html/ |