plugins de source de données

  • ldap: utiliser un serveur LDAP comme source de données

  • oracle: utiliser une base de données Oracle comme source de données

  • postgresql: utiliser une base de données PostgreSQL comme source de données

  • sqlite: utiliser une base de données SQLite comme source de données

Boris Lechner 2025-05-05 e022507882f1c7d53ec4dc72b08922261dfdd25f

Sous-sections de plugins de source de données

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
                  # ...

Boris Lechner 2025-05-05 e022507882f1c7d53ec4dc72b08922261dfdd25f

oracle

Description

Ce plugin permet d’utiliser une base de données Oracle 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: oracle
        settings:
          # OBLIGATOIRE : le nom DNS ou l'adresse IP du serveur de base de données
          server: dummy.example.com
          # OBLIGATOIRE : le port de connexion à la base de données
          port: 1234
          # OBLIGATOIRE : le "service name" de la base de données. Ne peut pas être défini si 'sid' est défini
          service_name: DUMMY.example.com
          # OBLIGATOIRE : le "sid" de la base de données. Ne peut pas être défini si 'service_name' est défini
          sid: DUMMY
          # OBLIGATOIRE : les identifiants de connexion à la base de données
          login: HERMES_DUMMY
          password: "DuMmY_p4s5w0rD"

Utilisation

Spécifiez une requête. Si vous souhaitez utiliser des valeurs provenant du cache, il est possible de les indiquer dans un dictionnaire vars, et y faire référence en spécifiant le nom de variable (clé) préfixé par un double-points : dans la requête : cela nettoiera automatiquement les données dans la requête pour limiter les risques d’injection SQL.

Les noms d’exemple dans vars sont préfixés par sanitized_ pour donner plus de clarté, mais cela n’a rien d’obligatoire.

hermes-server:
  datamodel:
    oneDataType:
      sources:
        your_source_name: # 'your_source_name' a été défini dans les paramètres du plugin
          fetch:
            type: fetch
            query: >-
              SELECT {{ REMOTE_ATTRIBUTES | join(', ') }}
              FROM AN_ORACLE_TABLE              

          commit_one:
            type: modify
            query: >-
              UPDATE AN_ORACLE_TABLE
              SET
                valueToSet = :sanitized_valueToSet
              WHERE pkey = :sanitized_pkey              

            vars:
              sanitized_pkey: "{{ ITEM_FETCHED_VALUES.pkey }}"
              sanitized_valueToSet: "{{ ITEM_FETCHED_VALUES.valueToSet }}"

Boris Lechner 2025-05-05 e022507882f1c7d53ec4dc72b08922261dfdd25f

postgresql

Description

Ce plugin permet d’utiliser une base de données PostgreSQL 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: postgresql
        settings:
          # OBLIGATOIRE : le nom DNS ou l'adresse IP du serveur de base de données
          server: dummy.example.com
          # OBLIGATOIRE : le port de connexion à la base de données
          port: 1234
          # MANDATORY: le nom de la base de données
          dbname: DUMMY
          # OBLIGATOIRE : les identifiants de connexion à la base de données
          login: HERMES_DUMMY
          password: "DuMmY_p4s5w0rD"

Utilisation

Spécifiez une requête. Si vous souhaitez utiliser des valeurs provenant du cache, il est possible de les indiquer dans un dictionnaire vars, et y faire référence en spécifiant le nom de variable (clé) entouré par %()s dans la requête : cela nettoiera automatiquement les données dans la requête pour limiter les risques d’injection SQL. Voir l’exemple ci-dessous.

Les noms d’exemple dans vars sont préfixés par sanitized_ pour donner plus de clarté, mais cela n’a rien d’obligatoire.

hermes-server:
  datamodel:
    oneDataType:
      sources:
        your_source_name: # 'your_source_name' a été défini dans les paramètres du plugin
          fetch:
            type: fetch
            query: >-
              SELECT {{ REMOTE_ATTRIBUTES | join(', ') }}
              FROM A_POSTGRESQL_TABLE              

          commit_one:
            type: modify
            query: >-
              UPDATE A_POSTGRESQL_TABLE
              SET
                valueToSet = %(sanitized_valueToSet)s
              WHERE pkey = %(sanitized_pkey)s              

            vars:
              sanitized_pkey: "{{ ITEM_FETCHED_VALUES.pkey }}"
              sanitized_valueToSet: "{{ ITEM_FETCHED_VALUES.valueToSet }}"

Boris Lechner 2025-05-05 e022507882f1c7d53ec4dc72b08922261dfdd25f

sqlite

Description

Ce plugin permet d’utiliser une base de données SQLite 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: sqlite
        settings:
          # OBLIGATOIRE : le chemin vers le fichier de base de données
          uri: /path/to/sqlite.db

Utilisation

Spécifiez une requête. Si vous souhaitez utiliser des valeurs provenant du cache, il est possible de les indiquer dans un dictionnaire vars, et y faire référence en spécifiant le nom de variable (clé) préfixé par un double-points : dans la requête : cela nettoiera automatiquement les données dans la requête pour limiter les risques d’injection SQL.

Les noms d’exemple dans vars sont préfixés par sanitized_ pour donner plus de clarté, mais cela n’a rien d’obligatoire.

hermes-server:
  datamodel:
    oneDataType:
      sources:
        your_source_name: # 'your_source_name' a été défini dans les paramètres du plugin
          fetch:
            type: fetch
            query: >-
              SELECT {{ REMOTE_ATTRIBUTES | join(', ') }}
              FROM AN_SQLITE_TABLE              

          commit_one:
            type: modify
            query: >-
              UPDATE AN_SQLITE_TABLE
              SET
                valueToSet = :sanitized_valueToSet
              WHERE pkey = :sanitized_pkey              

            vars:
              sanitized_pkey: "{{ ITEM_FETCHED_VALUES.pkey }}"
              sanitized_valueToSet: "{{ ITEM_FETCHED_VALUES.valueToSet }}"