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