...
Chaque groupe est géré par son administrateur désigné.
Délégation à un administrateur désigné
Les règles adoptées
L'"administrateur délégué" peut :
...
- lire les autres membres du groupe
Le modèle de délégation proposé
La DSI a souhaité garder le controle sur les délégation.
...
Le code du script gsh est basé sur les règles d'héritage :
<code>
// DELEGATION : REGLES D'HERITAGE DES PRIVILEGES
grouperSession = GrouperSession.startRootSession();
//
// PARAMETRESi A RENSEIGNER:
// le dossier a deleguer
// chemin = "ecr:ress:imp"
// chemin = "ecr:ress:imp:910"
chemin = "ur1:app:stockage:nas"
id = "920"
nom = "IUT de Rennes"
dossier = chemin + ":" +id
description = "Dossier pour tester la delegation"
// le demandeur : une personne ou un groupe
// demandeur="hjacob"
demandeur="ur1:pers:ser:957:57in:57sys:tous"
// les administrateurs Grouper qui auront le droit d'administrer le groupe des administrateurs delegues
administrateursGrouper="ur1:ress:adm"
// DOSSIER A DELEGUER
dossierADeleguer = addStem(chemin, id, nom);
dossierADeleguer = StemFinder.findByName(grouperSession, dossier);
RuleApi.reassignStemPrivilegesIfFromGroup(SubjectFinder.findRootSubject(),dossierADeleguer, Stem.Scope.SUB);
RuleApi.reassignGroupPrivilegesIfFromGroup(SubjectFinder.findRootSubject(), dossierADeleguer, Stem.Scope.SUB);
// setStemAttr(dossierADeleguer.getName(),"description",description);
// GROUPES A CREER
// le groupe des administrateurs locaux
administrateurs = addGroup(dossierADeleguer.getName(),"adm","Administrateurs "+ nom);
administrateurs = GroupFinder.findByName(grouperSession, dossierADeleguer.getName()+":adm");
// le groupe des gestionnaires locaux
gestionnaires = addGroup(dossierADeleguer.getName(),"ges","Gestionnaires "+ nom);
gestionnaires = GroupFinder.findByName(grouperSession, dossierADeleguer.getName()+":ges");
//
// le groupes des lecteurs des membres des groupes delegues
lecteurs = addGroup(dossierADeleguer.getName(),"lec","Lecteurs "+ nom);
lecteurs = GroupFinder.findByName(grouperSession, dossierADeleguer.getName()+":lec");
//
// GROUPES INSTITUTIONNELS
// les groupes institutionnels des personnels
dossierDesPersonnels = StemFinder.findByName(grouperSession, "ur1:pers");
// les groupes institutionnels des etudiants
dossierDesEtudiants = StemFinder.findByName(grouperSession, "ur1:etu");
//
// GROUPES NON-INSTITUTIONNELS
// les groupes applicatifs
dossierApplicatifs = StemFinder.findByName(grouperSession, "ur1:app");
// les groupes des ressources
dossierDesRessources = StemFinder.findByName(grouperSession, "ur1:ress");
// les autres groupes
dossierAutresGroupes = StemFinder.findByName(grouperSession, "ur1:div");
//
// Droits admin sur le groupe des administrateurs locaux , pour les administrateurs de Grouper
grantPriv(administrateurs.getName(), administrateursGrouper, AccessPrivilege.ADMIN);
// DELEGATION AUX ADMINISTRATEURS LOCAUX
// droit de créion de sous-dossiers et de groupes dans le dossier delegue
grantPriv(dossierADeleguer.getName(), administrateurs.getName(), NamingPrivilege.STEM);
grantPriv(dossierADeleguer.getName(), administrateurs.getName(), NamingPrivilege.CREATE);
addMember(administrateurs.getName(),demandeur);
RuleApi.inheritFolderPrivileges(SubjectFinder.findRootSubject(), dossierADeleguer , Stem.Scope.SUB, administrateurs.toSubject(), Privilege.getInstances("stem, create"));
// droit d'administraion des groupes du dossier delegue
grantPriv(gestionnaires.getName(), administrateurs.getName(), AccessPrivilege.ADMIN);
grantPriv(lecteurs.getName(), administrateurs.getName(), AccessPrivilege.ADMIN);
RuleApi.inheritGroupPrivileges(SubjectFinder.findRootSubject(), dossierADeleguer , Stem.Scope.SUB, administrateurs.toSubject(), Privilege.getInstances("admin"));
RuleApi.inheritGroupPrivileges(SubjectFinder.findRootSubject(), dossierADeleguer , Stem.Scope.SUB, administrateurs.toSubject(), Privilege.getInstances("update"));
RuleApi.inheritGroupPrivileges(SubjectFinder.findRootSubject(), dossierADeleguer , Stem.Scope.SUB, administrateurs.toSubject(), Privilege.getInstances("read"));
// visibilitées sur les groupes institutionnels et non-institutionnels
RuleApi.inheritGroupPrivileges(SubjectFinder.findRootSubject(), dossierDesPersonnels , Stem.Scope.SUB, administrateurs.toSubject(), Privilege.getInstances("read"));
RuleApi.inheritGroupPrivileges(SubjectFinder.findRootSubject(), dossierDesPersonnels , Stem.Scope.SUB, administrateurs.toSubject(), Privilege.getInstances("view"));
RuleApi.inheritGroupPrivileges(SubjectFinder.findRootSubject(), dossierDesEtudiants , Stem.Scope.SUB, administrateurs.toSubject(), Privilege.getInstances("read"));
RuleApi.inheritGroupPrivileges(SubjectFinder.findRootSubject(), dossierDesEtudiants , Stem.Scope.SUB, administrateurs.toSubject(), Privilege.getInstances("view"));
RuleApi.inheritGroupPrivileges(SubjectFinder.findRootSubject(), dossierApplicatifs , Stem.Scope.SUB, administrateurs.toSubject(), Privilege.getInstances("read"));
RuleApi.inheritGroupPrivileges(SubjectFinder.findRootSubject(), dossierApplicatifs , Stem.Scope.SUB, administrateurs.toSubject(), Privilege.getInstances("view"));
RuleApi.inheritGroupPrivileges(SubjectFinder.findRootSubject(), dossierDesRessources , Stem.Scope.SUB, administrateurs.toSubject(), Privilege.getInstances("read"));
RuleApi.inheritGroupPrivileges(SubjectFinder.findRootSubject(), dossierDesRessources , Stem.Scope.SUB, administrateurs.toSubject(), Privilege.getInstances("view"));
RuleApi.inheritGroupPrivileges(SubjectFinder.findRootSubject(), dossierAutresGroupes , Stem.Scope.SUB, administrateurs.toSubject(), Privilege.getInstances("read"));
RuleApi.inheritGroupPrivileges(SubjectFinder.findRootSubject(), dossierAutresGroupes , Stem.Scope.SUB, administrateurs.toSubject(), Privilege.getInstances("view"));
//
// DELEGATION AUX GESTIONNAIRES LOCAUX
// droits de mise à our/consultation des membres des groupes du dossier delegue
grantPriv(lecteurs.getName(), gestionnaires.getName(), AccessPrivilege.UPDATE);
grantPriv(lecteurs.getName(), gestionnaires.getName(), AccessPrivilege.READ);
grantPriv(lecteurs.getName(), gestionnaires.getName(), AccessPrivilege.VIEW);
RuleApi.inheritGroupPrivileges(SubjectFinder.findRootSubject(), dossierADeleguer , Stem.Scope.SUB, gestionnaires.toSubject(), Privilege.getInstances("update"));
RuleApi.inheritGroupPrivileges(SubjectFinder.findRootSubject(), dossierADeleguer , Stem.Scope.SUB, gestionnaires.toSubject(), Privilege.getInstances("read"));
RuleApi.inheritGroupPrivileges(SubjectFinder.findRootSubject(), dossierADeleguer , Stem.Scope.SUB, gestionnaires.toSubject(), Privilege.getInstances("view"));
// droit de créion de groupes dans le dossier: RuleApi.inheritFolderPrivileges(SubjectFinder.findRootSubject(), dossierADeleguer , Stem.Scope.SUB, gestionnaires.toSubject(), Privilege.getInstances("create"));
// visibilitées sur les groupes institutionnels et non-institutionnels
RuleApi.inheritGroupPrivileges(SubjectFinder.findRootSubject(), dossierDesPersonnels , Stem.Scope.SUB, administrateurs.toSubject(), Privilege.getInstances("read"));
RuleApi.inheritGroupPrivileges(SubjectFinder.findRootSubject(), dossierDesPersonnels , Stem.Scope.SUB, administrateurs.toSubject(), Privilege.getInstances("view"));
RuleApi.inheritGroupPrivileges(SubjectFinder.findRootSubject(), dossierDesEtudiants , Stem.Scope.SUB, administrateurs.toSubject(), Privilege.getInstances("read"));
RuleApi.inheritGroupPrivileges(SubjectFinder.findRootSubject(), dossierDesEtudiants , Stem.Scope.SUB, administrateurs.toSubject(), Privilege.getInstances("view"));
RuleApi.inheritGroupPrivileges(SubjectFinder.findRootSubject(), dossierApplicatifs , Stem.Scope.SUB, administrateurs.toSubject(), Privilege.getInstances("view"));
RuleApi.inheritGroupPrivileges(SubjectFinder.findRootSubject(), dossierDesRessources , Stem.Scope.SUB, administrateurs.toSubject(), Privilege.getInstances("view"));
RuleApi.inheritGroupPrivileges(SubjectFinder.findRootSubject(), dossierAutresGroupes , Stem.Scope.SUB, administrateurs.toSubject(), Privilege.getInstances("view"));
//
// DELEGATION AUX LECTEURS LOCAUX
// droit de consultation du contenu des groupes du dossier delegue
RuleApi.inheritGroupPrivileges(SubjectFinder.findRootSubject(), dossierADeleguer , Stem.Scope.SUB, lecteurs.toSubject(), Privilege.getInstances("read"));
RuleApi.inheritGroupPrivileges(SubjectFinder.findRootSubject(), dossierADeleguer , Stem.Scope.SUB, lecteurs.toSubject(), Privilege.getInstances("view"));
</code>
Synchronisation Grouper - Services d'annuaires
...