ldap

Description

Ce plugin permet d’utiliser un serveur LDAP comme source de données.

Configuration

Les paramètres de connexion sont requis dans la configuration du plugin.

hermes:
  plugins:
    datasources:
      # Nom de la source. Utilisez ce que vous voulez. Sera utilisé dans le modèle de données
      your_source_name:
        type: ldap
        settings:
          # OBLIGATOIRE : URI du serveur LDAP
          uri: ldaps://ldap.example.com:636
          # OBLIGATOIRE : identifiants de connexion au serveur LDAP
          binddn: cn=account,dc=example,dc=com
          bindpassword: s3cReT_p4s5w0rD
          # OBLIGATOIRE : DN de base LDAP
          basedn: dc=example,dc=com

          ssl: # Facultatif
            # Chemin vers le fichier PEM avec les certificats CA
            cafile: /path/to/INTERNAL-CA-chain.crt # Facultatif
            # Chemin vers le fichier de certificat au format PEM pour l'authentification du certificat client, nécessite de définir keyfile
            certfile: /path/to/client.crt # Facultatif
            # Chemin vers le fichier de clé privée du certificat au format PEM pour l'authentification du certificat client, nécessite de définir certfile
            keyfile: /path/to/client.pem # Facultatif

          # Facultatif. Par défaut : false.
          # Comme le client n'a pas connaissance du schéma LDAP, il ne peut pas savoir si
          # un attribut est à valeur unique ou à valeurs multiples. Par défaut, il
          # s'adapte à la valeur qui lui est renvoyée : si elle est unique, il la renverra
          # dans son type de base, et s'il y en a plusieurs, il la renverra sous forme de liste.
          # Si ce paramètre est activé, toutes les valeurs seront toujours renvoyées dans une liste.
          always_return_values_in_list: true

Utilisation

L’utilisation diffère selon le type d’opération spécifié

fetch

Récupérer les entrées depuis le serveur LDAP.

hermes-server:
  datamodel:
    oneDataType:
      sources:
        your_source_name: # 'your_source_name' a été défini dans les paramètres du plugin
          fetch:
            type: fetch
            vars:
              # Facultatif : le basedn à utiliser pour l'opération 'fetch'.
              # Si ce paramètre n'est pas défini, le paramètre basedn de la
              # configuration sera utilisé
              base: "ou=exampleOU,dc=example,dc=com"
              # Facultatif : la portée de l'opération 'fetch'
              # Les valeurs valides sont :
              # - base : pour rechercher l'objet "de base" lui-même
              # - one, onelevel : pour rechercher les enfants immédiats de l'objet "de base"
              # - sub, subtree : pour rechercher l'objet "de base" et tous ses descendants
              # Si non défini, "subtree" sera utilisé
              scope: subtree
              # Facultatif : le filtre LDAP à utiliser pour l'opération 'fetch'
              # Si non défini, "(objectClass=*)" sera utilisé
              filter: "(objectClass=*)"
              # Facultatif : les attributs à récupérer, sous forme de liste de chaînes
              # Si non défini, tous les attributs de chaque entrée sont renvoyés
              attrlist: "{{ REMOTE_ATTRIBUTES }}"

add

Ajouter des entrées au serveur LDAP.

hermes-server:
  datamodel:
    oneDataType:
      sources:
        your_source_name: # 'your_source_name' a été défini dans les paramètres du plugin
          fetch:
            type: add
            vars:
              # Facultatif : une liste d'entrées à ajouter.
              # Si elle n'est pas définie, une liste vide sera utilisée (et rien ne sera ajouté)
              addlist:
                  # OBLIGATOIRE : le DN de l'entrée. S'il n'est pas spécifié, l'entrée
                  # sera silencieusement ignorée
                - dn: uid=newentry1,ou=exampleOU,dc=example,dc=com
                  # Facultatif : les attributs à ajouter à l'entrée
                  add:
                    # Créer l'attribut s'il n'existe pas et lui ajouter la valeur "value"
                    "attrnameToAdd": "value",
                    # Créer l'attribut s'il n'existe pas et lui ajouter les valeurs
                    # "value1" et "value2"
                    "attrnameToAddList": ["value1", "value2"],
                - dn: uid=newentry2,ou=exampleOU,dc=example,dc=com
                  # ...

delete

Supprimer des entrées du serveur LDAP.

hermes-server:
  datamodel:
    oneDataType:
      sources:
        your_source_name: # 'your_source_name' a été défini dans les paramètres du plugin
          fetch:
            type: delete
            vars:
              # Facultatif : une liste d'entrées à supprimer.
              # Si elle n'est pas définie, une liste vide sera utilisée (et rien ne sera supprimé)
              dellist:
                  # OBLIGATOIRE : le DN de l'entrée. S'il n'est pas spécifié, l'entrée
                  # sera silencieusement ignorée
                - dn: uid=entryToDelete1,ou=exampleOU,dc=example,dc=com
                - dn: uid=entryToDelete2,ou=exampleOU,dc=example,dc=com
                  # ...

modify

Modifier des entrées sur le serveur LDAP.

hermes-server:
  datamodel:
    oneDataType:
      sources:
        your_source_name: # 'your_source_name' a été défini dans les paramètres du plugin
          fetch:
            type: modify
            vars:
              # Facultatif : une liste d'entrées à modifier.
              # Si elle n'est pas définie, une liste vide sera utilisée (et rien ne sera modifié)
              modlist:
                  # OBLIGATOIRE : le DN de l'entrée. S'il n'est pas spécifié, l'entrée
                  # sera silencieusement ignorée
                - dn: uid=entryToModify1,ou=exampleOU,dc=example,dc=com

                  # Facultatif : les attributs à ajouter à l'entrée
                  add:
                    # Créer l'attribut s'il n'existe pas et lui ajouter la valeur "value"
                    attrnameToAdd: value
                    # Créer l'attribut s'il n'existe pas et lui ajouter les valeurs
                    # "value1" et "value2"
                    attrnameToAddList: [value1, value2]

                  # Facultatif : les attributs de l'entrée à modifier
                  modify:
                    # Créer l'attribut s'il n'existe pas et remplacer toutes ses valeurs
                    # par la valeur "value"
                    attrnameToModify: newvalue
                    # Créer l'attribut s'il n'existe pas et remplacer toutes ses valeurs
                    # par les valeurs "newvalue1" and "newvalue2"
                    attrnameToModifyList: [newvalue1, newvalue2]

                  # Facultatif: les attributs de l'entrée à supprimer
                  delete:
                    # Supprimer l'attribut spécifié et toutes ses valeurs
                    attrnameToDelete: null
                    # Supprimer la valeur "value" de l'attribut spécifié.
                    # Génère une erreur si la valeur est manquante
                    attrnameToDeleteValue: value
                    # Supprimer les valeurs "value1" et "value2" de l'attribut spécifié.
                    # Génère une erreur si une des valeurs est manquante
                    attrnameToDeleteValueList: [value1, value2]

                - dn: uid=entryToModify2,ou=exampleOU,dc=example,dc=com
                  # ...