# Habilitations des utilisateurs

orphan

:

## Règles d'attribution des autorisations à un utilisateur

GLPI dispose d'un moteur d'autorisations dynamique basé sur des sources d'authentification externes.

Une autorisation dans GLPI résulte de l'attribution de permissions sur un périmètre (une ou plusieurs entités) ; c'est l'appartenance conjointe à un profil et à une entité.

Les autorisations peuvent être attribuées statiquement, en assignant un utilisateur à un profil dans une entité ; cependant, ce n'est pas la méthode recommandée.

Il est recommandé d'utiliser le moteur de règles d'attribution d'entités et de permissions pour attribuer automatiquement les permissions. Cela nécessite l'utilisation d'une authentification externe.

Le moteur exécute toutes les règles et ne s'arrête pas après la première règle qui s'applique à l'utilisateur. Plusieurs règles permettent ainsi d'attribuer différentes autorisations au même utilisateur. Un utilisateur ayant plusieurs autorisations peut, au cours de sa session et selon ses activités, changer de profil et de contexte d'entité.

### Profil par défaut

Si un profil par défaut est défini dans la configuration des profils GLPI, et si une règle d'attribution d'autorisation n'inclut pas d'attribution de profil, alors le profil par défaut est utilisé lors de l'attribution d'un utilisateur à l'entité.

Si aucun profil par défaut n'est défini, l'utilisateur est importé sans autorisation : il n'est ni assigné à une entité, ni assigné à un profil. Seul le profil super-admin peut le voir dans l'entité racine.

### Autorisations basées sur le serveur de messagerie

Les informations de messagerie IMAP/POP peuvent être utilisées pour attribuer automatiquement des permissions. L'identifiant IMAP/POP (le login de l'utilisateur) et l'URL du serveur de messagerie peuvent être utilisés comme critères. Les utilisateurs peuvent être créés à la volée lors de leur connexion. En revanche, il n'est pas possible de faire un import en masse depuis le serveur de messagerie.

#### Autorisations basées sur l'URL du serveur de messagerie

Lorsque plusieurs serveurs de messagerie sont définis comme source d'authentification et que l'URL du serveur de messagerie est un critère pertinent, cette information peut être utilisée pour définir les autorisations.

{% hint style="info" %}
**Exemple**

L'authentification utilise les serveurs IMAP/POP suivants : `imap.exemple.fr` et `imap.exemple.be`. Chaque serveur est défini comme source d'authentification. Cette information permet d'attribuer l'utilisateur aux entités `France` ou `Belgique`. Pour ce faire, deux règles statiques sont nécessaires :

* Règle pour la `Belgique` :
  * Critères : IMAP/POP est `imap.exemple.be`
  * Actions : attribuer l'entité `Belgique`
* Règle pour la `France` :
  * Critères : IMAP/POP est `imap.exemple.fr`
  * Actions : attribuer l'entité `France`
    {% endhint %}

#### Autorisations basées sur l'identifiant de messagerie

Lorsque les adresses e-mail des utilisateurs contiennent plusieurs noms de domaine, ou des informations pertinentes pour définir les autorisations, ces informations peuvent être utilisées pour définir les autorisations. Il est également possible d'attribuer une entité à un utilisateur en utilisant le domaine de messagerie si celui-ci est spécifique à une entité. Le domaine de messagerie utilisé par l'entité est défini dans les [informations avancées pour les entités](https://help.glpi-project.org/documentation/fr/modules/administration/entities).

{% hint style="info" %}
**Exemple**

Les utilisateurs s'authentifient en utilisant des adresses e-mail de la forme suivante : `user@example.fr` et `user@example.be`. Peu importe si un ou plusieurs serveurs de messagerie sont utilisés pour l'authentification. Cette information est utilisée pour attribuer l'utilisateur à l'entité `France` ou `Belgique`. À cette fin, deux règles statiques seront nécessaires :

* Règle pour la `Belgique` :
  * Critères : l'identifiant IMAP/POP se termine par `exemple.be`
  * Actions : attribuer l'entité `Belgique`
* Règle pour la `France` :
  * Critères : l'identifiant IMAP/POP se termine par `exemple.fr`
  * Actions : attribuer l'entité `France`
    {% endhint %}

### Autorisations basées sur les annuaires LDAP

Les attributs LDAP d'un utilisateur peuvent être utilisés comme source pour attribuer dynamiquement des permissions à cet utilisateur à l'aide de règles d'attribution de permissions. Il existe de nombreuses façons d'utiliser un arbre LDAP pour créer des règles d'autorisation pour les utilisateurs, la meilleure solution dépendant du contexte de l'implémentation de l'annuaire.

#### Autorisations basées sur les unités organisationnelles d'un annuaire LDAP

Étant donné un annuaire LDAP où l'organisation des branches (unités organisationnelles) correspond à l'organisation des entités GLPI. Chaque unité organisationnelle (`ou`) contient les utilisateurs, soit directement, soit dans une sous-branche. Chacune des branches peut être utilisée pour établir une règle d'attribution d'un utilisateur à une entité. Le cas des utilisateurs appartenant à plusieurs entités doit être traité ailleurs. Ce modèle est pertinent lorsqu'un profil par défaut peut être attribué à la majorité des utilisateurs. L'attribution de profils non standard doit être traitée ailleurs. Les informations sur l'utilisateur envoyées par l'annuaire sont suffisantes pour créer les règles d'attribution dans GLPI.

{% hint style="info" %}
**Exemple**

Considérons un arbre LDAP de la forme suivante :

```
org
  +- exemple
    +- france
      +- paris
      +- lyon
      +- bordeaux
    +- belgique
      +- bruxelles
```

Chacune des branches est formalisée comme dans l'exemple suivant : `ou=lyon,ou=france,dc=exemple,dc=org`

Dans la configuration de chaque entité, dans l'onglet informations avancées, indiquez les informations LDAP représentant l'entité (dans ce cas le "nom unique" de l'entité).

Par exemple, pour l'entité Lyon : Informations LDAP représentant l'entité : `ou=lyon,ou=france,dc=example,dc=org`. Ensuite, définissez la ou les règles dans *Administration > Règles > Règles d'attribution d'entité et de droits*.

L'utilisateur a deux options : un ensemble de règles statiques ou une règle adaptative.

* Règle statique : pour chaque entité, définissez une règle d'attribution de la forme suivante :
  * Critères : (LDAP)NomUnique se termine par : `ou=lyon,ou=france,dc=exemple,dc=org`
  * Actions : attribuer l'entité `lyon`
* Règle adaptative : une seule règle basée sur des expressions régulières suffit pour définir l'attribution à toutes les entités :

  * Critères : (LDAP)NomUnique correspond à l'expression régulière suivante : `/(ou=.*)/`
  * Actions : attribuer l'entité depuis LDAP, valeur de l'expression régulière : `#0`

  ou même

  * Critères : (LDAP)NomUnique correspond à l'expression régulière suivante : `/(ou=.*)/`
  * Actions : attribuer l'entité nom complet valeur de l'expression régulière : Entité racine > `#0`

L'exécution de la règle récupère l'unité organisationnelle (`ou`) du *nom unique* de l'utilisateur. Elle le comparera ensuite aux valeurs de l'attribut Informations LDAP représentant l'entité dans la base de données. Si une entité possède l'attribut dont la valeur correspond, alors cet attribut est utilisé comme résultat de la règle.
{% endhint %}

{% hint style="info" %}
la valeur de l'action `#0` indique qu'il faut utiliser le premier résultat de l'expression régulière. `#1` indique le second et ainsi de suite. Le bouton **Tester** du formulaire permet d'essayer des valeurs et de voir le résultat obtenu.
{% endhint %}

#### Autorisations basées sur les groupes ou attributs d'un utilisateur dans un annuaire LDAP

Dans l'annuaire, chaque utilisateur fait partie d'un groupe correspondant à un profil GLPI et d'un groupe correspondant à une entité. Un utilisateur peut faire partie de plusieurs profils et de plusieurs entités. Selon la configuration de l'annuaire, les informations sur l'appartenance de l'utilisateur aux groupes peuvent se trouver dans l'objet utilisateur ou dans l'objet groupe.

* Dans le premier cas, les informations contenues dans l'objet utilisateur sont suffisantes pour créer des règles d'autorisation : il n'est pas nécessaire d'importer les groupes de l'annuaire dans GLPI
* Dans le second cas, les informations contenues dans l'objet utilisateur ne sont pas suffisantes et il est nécessaire de récupérer les informations sur les groupes. Il faut d'abord configurer les groupes LDAP et le lien automatique des utilisateurs aux groupes.

{% hint style="info" %}
ceci n'est pas limité aux attributs de type groupe, mais est valable pour d'autres types d'attributs stockés dans l'annuaire.
{% endhint %}

{% hint style="info" %}
**Exemple**

Considérons un arbre LDAP de la forme suivante :

```
org
  +- exemple
+- profil
  += post-only
      += tech
      += admin
      += super-admin
+- entité
  +- france
  += paris
  += lyon
+- people
  +-
```

Dans cet exemple, les profils et les entités sont définis comme des groupes. Par exemple : `cn=post-only,ou=profil,dc=exemple,dc=org` ou `cn=paris,ou=entité,dc=exemple,dc=org`

Aucune configuration d'entité spécifique n'est requise.

Dans *Administration > Règles > Règles d'attribution d'entités et de droits*, définissez les règles suivantes :

* pour attribuer un profil à un utilisateur :
  * Critères : Annuaire de groupe LDAP est `post-only`
  * Actions : Profil attribuer `post-only`
* pour attribuer à une entité :
  * Critères : Annuaire de groupe LDAP est `paris`
  * Actions : Entité attribuer *Exemple > France > Paris*
    {% endhint %}

{% hint style="warning" %}
le calcul des autorisations est effectué une fois que toutes les règles ont été exécutées. Dans l'exemple précédent, une règle attribue uniquement une entité et l'autre uniquement un profil. Le produit des 2 permet de définir l'autorisation de l'utilisateur. De même, si l'utilisateur se voit attribuer 2 entités par 2 règles différentes et un seul profil, il aura alors 2 autorisations : une sur chaque entité avec le même profil.
{% endhint %}

### Utilisation de différentes sources d'autorisation

Des cas mixtes peuvent être rencontrés : les règles peuvent utiliser à la fois l'appartenance à des unités organisationnelles pour l'attribution à une entité, et l'appartenance à un groupe pour l'attribution à un profil.

{% hint style="info" %}
il est possible d'ajouter des critères LDAP supplémentaires en cliquant sur le *bouton plus* à côté de la liste déroulante. Un critère est composé d'un nom (utilisé dans la liste déroulante), d'un critère (correspondant à l'attribut dans l'annuaire LDAP) et d'un commentaire.
{% endhint %}
