-= LiflForge =-

AdminTRAC (#1) - Activation et Utilisation de la Gestion fine des droits (#5) - Message List

Activation et Utilisation de la Gestion fine des droits
 unsolved

Activation du module de gestion fine des droits

L'activation de la gestion fine des droits se fait à la création du projet Trac. Il est possible d'activer ultérieurement cette gestion, en en faisant la demande auprès des administrateurs système. Si cette activation est effective, deux entrées spécifiques apparaissent dans le menu d'administration: Accounts:Page Permissions et Version Control:Permissions


Définition des droits d'accès aux modules Trac

Dans le menu Admin, l'entrée Accounts:Page Permissions permet d'ouvrir un éditeur sur le fichier de configuration des droits d'accès aux différentes pages gérées par Trac.

Note : Les droits définis dans ce fichier sont combinés avec les droits génériques de Trac (Menu Admin → General:Permissions). Ce fichier permet donc d'ajouter ou de supprimer des droits spécifiques sur certaines ressources.

Configuration

(extrait de la documentation officielle - cf. TracFineGrainedPermissions)

The authzpolicy.conf file is a .ini style configuration file:

[wiki:PrivatePage@*]
john = WIKI_VIEW, !WIKI_MODIFY
jack = WIKI_VIEW
* =
  • Each section of the config is a glob pattern used to match against a Trac resource descriptor. These descriptors are in the form:
    <realm>:<id>@<version>[/<realm>:<id>@<version> ...]
    
    Resources are ordered left to right, from parent to child. If any component is inapplicable, * is substituted. If the version pattern is not specified explicitely, all versions (@*) is added implicitly

Example: Match the WikiStart page

[wiki:*]
[wiki:WikiStart*]
[wiki:WikiStart@*]
[wiki:WikiStart]

Example: Match the attachment wiki:WikiStart@117/attachment/FOO.JPG@* on WikiStart

[wiki:*]
[wiki:WikiStart*]
[wiki:WikiStart@*]
[wiki:WikiStart@*/attachment/*]
[wiki:WikiStart@117/attachment/FOO.JPG]
  • Sections are checked against the current Trac resource IN ORDER of appearance in the configuration file. ORDER IS CRITICAL.
  • Once a section matches, the current username is matched against the keys (usernames) of the section, IN ORDER.
    • If a key (username) is prefixed with a @, it is treated as a group.
    • If a value (permission) is prefixed with a !, the permission is denied rather than granted.
The username will match any of 'anonymous', 'authenticated', <username> or '*', using normal Trac permission rules.
Note: Other groups which are created by user (e.g. by 'adding subjects to groups' on web interface page Admin / Permissions) cannot be used.

Example configuration

[groups]
administrators = athomas
[*/attachment:*]
* = WIKI_VIEW, TICKET_VIEW
[wiki:WikiStart@*]
@administrators = WIKI_ADMIN
anonymous = WIKI_VIEW
* = WIKI_VIEW
# Deny access to page templates
[wiki:PageTemplates/*]
@administrators = WIKI_VIEW
* = ""

Quelques précisions

Cas particulier
<user> = "" supprime tous les droits associés à l'utilisateur.

Le pseudo-algorithme est le suivant : Pour une <action>, sur une <ressource>, par un <utilisateur> :

Recherche une section matchant la <ressource>
Si (pas trouvé) : utilisation des droits génériques et fin
.
Extrait les <permissions> associées à <utilisateur>, ou à un groupe auquel appartient <utilisateur>
Si (pas trouvé) : Extrait les <permissions> associées à "authenticated"
Si (pas trouvé) : Extrait les <permissions> associées à "anonymous"
Si (pas trouvé) : Extrait les <permissions> associées à "*"
Si (pas trouvé) : utilisation des droits génériques et fin
.
Si (<permissions> == "") : <action> interdite et fin
Si (!<action> est dans <permissions>) : <action> interdite et fin
Si (<action> est dans <permissions>) : <action> autorisée et fin
Sinon : utilisation des droits génériques et fin

Conseils d'utilisation

La combinaison entre les droits fins et les droits génériques peut être délicat à mettre en place.

On distinguera 2 cas d'utilisation :

  • Il n'y a que quelques cas particuliers à gérer (restriction d'accès sur quelques sous-parties, par exemple) : Dans ce cas, les ACLs principales sont définies à l'aide des droits génériques, et les restrictions sont définies à l'aide des droits fins (suppression du droit WIKI_VIEW, par exemple).
  • Il n'y a que des cas particuliers (gestion de plusieurs sous-projets, chacun avec ses propres droits d'accès) : Dans ce cas, il sera préférable de gérer l'ensemble de la politique d'accès à l'aide des droits fins. On supprimera alors toutes les définitions de droit générique (à l'exception du droit TRAC_ADMIN pour les administrateurs, par précaution).

Définition des droits d'accès aux dépôts de fichiers

Note: Actuellement, seuls les dépôts SVN peuvent être protégés par droits fins (cf. Administration Git).

Note: Il est possible de définir des droits d'accès aux dépôts de fichiers depuis Accounts:Page Permissions (à l'aide du realm repository), mais cela ne concerne que le browser interne de Trac, et ne protège pas les accès directs (par les clients SVN). On ne l'utilisera donc pas.

Dans le menu Admin, l'entrée Version Control:Permissions permet d'ouvrir un éditeur sur le fichier de configuration des droits d'accès aux dépôts de fichiers. La syntaxe de ce fichier reprend la syntaxe des fichiers authz_file de SVN.

Exemple:

[groups]
writers = harry, paul
[/]
* = r
[main:/branches/calc/bug-142]
@writers = rw
sally = r
[main:/branches/calc/bug-142/secret]
harry =

Les droits définis ici sont appliqués aussi bien pour les accès directs par les clients SVN que pour les accès par l'intermédiaire du browser interne de Trac.

Comme indiqué dans l'exemple ci-dessus, il est possible de spécifier des droits spécifiques à un dépôt donné, en préfixant l'emplacement à protéger par le nom du dépôt. Sans ce préfixe, les droits sont appliqués à tous les dépôts.

Attachments

No attachments created.