Strumenti Utente

Strumenti Sito


lca:tutorial_mkldap



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

  • Condivisione Samba (Windows, Linux, Mac)
    • Spazio Utenti
    • Spazio Backup
    • Web Personali
    • scambio
    • gruppi di lavoro e di ricerca
  • 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/
lca/tutorial_mkldap.txt · Ultima modifica: 20/05/2008 19:47 da roberto.alfieri

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki