Architecture de la base de données

UserLock s’appuie sur une base de données centrale pour stocker les journaux d’activité. Comprendre le fonctionnement de cette base et les technologies prises en charge aide les administrateurs à faire les bons choix en termes de performance, de fiabilité et de maintenance à long terme.

Publié le 10 septembre 2025

Pourquoi UserLock a besoin d’une base de données

UserLock enregistre en continu des informations telles que :

  • les événements de session et d’authentification,

  • les changements de statut des utilisateurs,

  • les actions des administrateurs,

  • les modifications de configuration.

Une base de données centrale garantit que ces informations sont conservées, consultables et cohérentes sur l’ensemble du déploiement.

Base de données par défaut : Microsoft Access

Par défaut, le package d’installation de UserLock fournit un fichier de base de données Microsoft Access (UserLock.mdb).

Cette option est conçue pour la simplicité : aucune configuration n’est nécessaire et elle permet aux administrateurs de commencer immédiatement l’évaluation de UserLock.

Cependant, Access présente des limitations structurelles :

  • taille maximale de fichier de 2 Go,

  • performances et évolutivité limitées,

  • manque de résilience pour un usage à long terme ou en production.

Cas d'usage

👉 Uniquement adapté pour l’évaluation, les tests ou de très petits environnements.

Bases de données de production prises en charge et prérequis

Pour les déploiements en production, IS Decisions recommande vivement d’utiliser SQL Server ou un autre système pris en charge :

  • Microsoft SQL Server (2005 et versions ultérieures, 32/64 bits)

    • Aucune limite théorique de taille.

    • Recommandé pour l’évolutivité, la résilience et l’intégration en entreprise.

  • Microsoft SQL Server Express (2005 et versions ultérieures, 32/64 bits)

    • Édition gratuite avec une taille maximale de base de données de 10 Go.

    • Fournit la plupart des fonctionnalités de SQL Server, avec des limitations CPU et RAM.

    • Une option économique pour les PME ou les environnements plus petits, mais suffisamment robuste pour la production.

  • MySQL 5.6 et versions ultérieures

    • Nécessite le pilote ODBC 32 bits (même sur les systèmes d’exploitation 64 bits).

    • Le connecteur .NET MySQL ne doit pas être installé.

    • Une fois le pilote ODBC disponible, MySQL apparaît comme option dans UserLock.

Note

Les éditions LocalDB de SQL Server ne sont pas compatibles avec UserLock.

Scénarios de migration

Les déploiements UserLock évoluent fréquemment au fil du temps. Les besoins de migration courants incluent :

UserLock fournit des outils et des guides dédiés pour effectuer ces migrations tout en conservant les données et l’historique.

Si vous avez besoin d'aider pour déployer SQL Express, vous pouvez consulter ce guide pour savoir comment installer et configurer SQL Express.

Bonnes pratiques

  • Utiliser toujours SQL Server (ou SQL Server Express, ou MySQL) pour la production.

  • Héberger la base sur un serveur dédié et sauvegardé.

  • Surveiller la croissance de la base et planifier la maintenance (archivage, purge des anciens journaux).

  • Tester les migrations dans un environnement de préproduction dès que possible.

  • Travailler avec l’équipe DBA pour respecter les standards et politiques de sauvegarde de l’entreprise.

Note

Pour les options de configuration détaillées dans la console, voir Paramètres serveur ▸ Base de données.

Schéma de base de données

La base de données UserLock est composée de quatre tables. Ces tables ne sont pas configurables depuis la console, mais comprendre leur contenu peut aider pour l’audit, le dépannage ou l’intégration.

Vous trouverez ci-dessous la liste détaillée des champs de ces tables, indiquant leur type et leur usage.

Ces informations sont fournies dans un objectif de transparence et d’intégration.

Note

La base de données UserLock est librement accessible afin de permettre l’intégration et le reporting sur les données collectées. Toutefois, nous recommandons fortement de ne pas modifier la structure ni le contenu de la base.

Table UserLogonEvents

Nom du champ

Type

Description du champ

EventType

entier

Sessions interactives
0 fermeture / 1 ouverture / 2 verrouillage / 3 déverrouillage / 4 connexion refusée / 5 reconnexion / 6 déconnexion
20: Connexions Interactives refusées par Active Directory
420: Connexions RDP refusées par Active Directory (Voir LogonInfo pour détails)

Sessions d'accès à distance Wi-Fi/VPN
200 fermeture / 201 / 204 connexion refusée
220 Connexions refusées par Active Directory (Voir LogonInfo pour détails)

Sessions IIS
100 fermeture / 101 ouverture / 104 connexion refusée
120: Connexions refusées par Active Directory (Voir LogonInfo pour détails)

Sessions SaaS
500 fermeture / 501 ouverture / 504 connexion refusée par UserLock

Evènements UAC
601 ouverture / 604 connexion refusée par UserLock
620: Connexions refusées par Active Directory (Voir LogonInfo pour détails)

EventTime

heure et date

Date et heure de l'événement d'ouverture/fermeture de session

UserAccount

chaîne

Compte utilisateur

UserDomain


chaîne


Domaine de l'utilisateur

UserFullName


chaîne

Nom complet de l'utilisateur

ComputerName


chaîne

La station de travail ou le serveur de terminal

ComputerSession

entier

Identifiant de la session terminal

ClientName

chaîne

Nom de la station de travail ou nom du terminal pour une session terminal

ClientAddress


chaîne

Adresse de la station de travail ou du terminal (adresse MAC pour les sessions Wi-Fi, sinon adresse IP).

SessionId

chaîne

Identificateur de session (unique dans le temps)

SubSessionId


entier

Identificateur de sous-session. Incrémenté par 1 après chaque événement de déverrouillage ou de connexion (nouvelle sous-session)

Status


entier

0: Pour tous les événements de session, à l'exception des cas ci-dessous.
1: Pour :

  • Les réinitialisations faites depuis la console.

  • Les événements de fermeture de sessions interactives enregistrés automatiquement dans les cas suivants:

    • L'ordinateur ne se trouve plus dans la zone réseau protégée par le serveur UserLock depuis au moins 7 jours.

    • Le paramètre avancé "UnavailableTimeForRemove" est configuré et UserLock ne peut pas contacter l'ordinateur sur lequel la session était en cours pendant au moins le nombre de minutes configuré dans ce paramètre.

    • Le service UserLock a détecté à distance que la session n'existe plus sur cet ordinateur.

3: Pour les événements de fermeture de sessions interactives enregistrés automatiquement après un arrêt ou un crash de l'ordinateur sur lequel la session se déroulait.
Pour les valeurs 1 et 3: Si l'agent de bureau UserLock Desktop de l'ordinateur associé envoie ultérieurement la "vraie" fermeture de session interactive, l'enregistrement de la base de données sera automatiquement mis à jour avec la date de l'événement et le champ "Status" défini sur "0".

ErrorId

chaîne

Non nul uniquement si l'événement de session n'a pas pu être notifié en temps réel au serveur UserLock. Cela peut arriver dans les cas suivants :

  • La connexion réseau n'est pas encore initialisée

  • Les prérequis ne sont pas respectés

  • Le service UserLock n'est pas démarré

LastError

entier

Différent de 0 uniquement si l'événement de session n'a pas pu être notifié en temps réel au serveur UserLock. Consultez la documentation du champ ErrorId ci-dessus pour plus de détails.

Param1 to Param6

chaîne

Champs dynamiques pour les événements de sessions NPS/RRAS/IIS

Id

entier

Identifiant de l'enregistrement (automatique)Record id (auto)

LogonInfo

entier

La signification de cette valeur est liée à la valeur du champ EventType associé.

Raisons détaillées d'une connexion réussie lorsque le champs EventType associé = 1, 3, 5, 101, 201 ou 501:
128: MFA réussie (sauf si la valeur du champ "SkipReason" est différente de "-1", voir la documentation de ce champ ci-dessous).

Raisons détaillées d'un refus de connexion par UserLock lorsque le champs EventType associé = 4, 104 ou 204.
1 : Restriction de Groupe
2 : Restriction de Postes de travail
4 : Restriction de temps
8 : Restriction Quota de temps
16 : Restriction de Sessions
32 : Restriction de Points d'accès initiaux
64 : L'utilisateur est bloqué par UserLock
128: MFA échouée (lorsqu'un utilisateur tape un code MFA incorrect et que sa session est refusée)
256: MFA annulée (lorsqu'un utilisateur clique sur le bouton «Annuler» d'une fenêtre MFA)
512: Demande d'aide (lorsqu'un utilisateur clique sur le bouton "Demander de l'aide" d'une fenêtre MFA).
1024: Restriction de géolocalisation
2048: UserLock inaccessible

Un refus de connexion par UserLock peut avoir plusieurs raisons. C'est pourquoi la valeur enregistrée est une valeur cumulative. Par exemple 25 correspond à l'application conjointe de restrictions de Groupe, Utilisateur et Quotas de temps (1 + 16 + 8).

Raisons détaillées d'un refus de connexion par UserLock lorsque le champs EventType associé =20, 220 ou 420:
0 : Inconnue
1 : Utilisateur invalide
2 : Mot de passe invalide
4 : Compte verrouillé
8 : Les horloges du contrôleur de domaine et de la station sont désynchronisées
16 : Le mot de passe doit être changer avant l'ouverture de la session
32 : Restriction Active Directory
64 : Restriction de compte
128 : ​Restriction d'heures de connexion
256 : Compte désactivé
512 : Restriction de station
1024 : Compte expiré
2048 : ​Mot de passe expiré

Les refus de connexions par Active Directory étant exclusifs, la valeur enregistrée sera toujours une seule valeur de cette liste.

Raison détaillée d'un refus de connexion par UserLock lorsque le champs EventType associé = 120:
2 : Mot de passe invalide

SessionType

entier

Type de Session:
1 = Station
2 = Terminal
4 = IIS
16 = VPN
32 = Wi-Fi
64 = SSO

ServerAddress

chaîne

L'adresse IP de l'ordinateur où s'est déroulé l'événement de session.

TimeZoneShift

entier

Décalage horaire par rapport à UTC (Temps universel coordonné), en minutes.
Ce champ est rempli uniquement pour les événements de sessions interactives.

SkipReason

entier

Relatif au bouton “Passer” optionnellement affiché dans la boîte de dialogue de configuration MFA.
-1: Passer n'a pas été cliqué.
1: Passer a été cliqué, puis la raison suivante a été choisie: "J'ai oublié mon smartphone".
2: Passer a été cliqué, puis la raison suivante a été choisie: "Je n'ai pas de smartphone".
3: Passer a été cliqué, puis la raison suivante a été choisie: "Autre raison technique".

Country

chaîne

Pays à partir duquel la connexion a été effectuée

UserStatus table

Nom du champ


Type

Description du champ

Id

entier

Identifiant de l'enregistrement (automatique)

Status

entier

Statut actuel de l'utilisateur.
0 : Non protégé
1 : Protégé
2 : Inactif
3 : Nouveau
4 : Risque
5 : Haut risque

Triggers

entier

Identifiant des conditions remarquables pour la déduction du statut actuel de l'utilisateur.
Valeurs en hexadécimal:
0x00000001 : Protégé
0x00000002 : Premier évènement
0x00000004 : Evènement
0x00000008 : Evènement après une période
0x00000010 : Inactivité
0x00000020 : Accès refusé pour un compte verrouillé dans Active Directory
0x00000040 : Sessions au-delà des limites
0x00000080 : Sessions au-delà d'une valeur personnalisée
0x00000100 : Accès refusé par UserLock
0 : Accès refusé par Active Directory

OldStatus

entier

Statut précédent de l'utilisateur.
0 : Non protégé
1 : Protégé
2 : Inactif
3 : Nouveau
4 : Risque
5 : Haut risque

OldTriggers

entier

Identifiant des conditions remarquables pour la déduction du statut actuel de l'utilisateur.
Valeurs en hexadécimal:
0x00000001 : Protégé
0x00000002 : Premier évènement
0x00000004 : Evènement
0x00000008 : Evènement après une période
0x00000010 : Inactivité
0x00000020 : Accès refusé pour un compte verrouillé dans Active Directory
0x00000040 : Sessions au-delà des limites
0x00000080 : Sessions au-delà d'une valeur personnalisée
0x00000100 : Accès refusé par UserLock
0 : Accès refusé par Active Directory

UserAccount

chaîne

Compte utilisateur

UserDomain

chaîne

Domaine de l'utilisateur

UserFullName

chaîne

Nom complet de l'utilisateur

SessionId

chaîne

Identificateur de session (unique dans le temps)

SubSessionId

entier

Identificateur de sous-session. Incrémenté par 1 après chaque événement de déverrouillage ou de connexion (nouvelle sous-session)

EventType

entier

Sessions interactives
0 fermeture / 1 ouverture / 2 verrouillage / 3 déverrouillage / 4 connexion refusée / 5 reconnexion / 6 déconnexion
20: Connexions Interactives refusées par Active Directory
420: Connexions RDP refusées par Active Directory (Voir LogonInfo de la table UserLogonEvents pour détails)

Sessions d'accès à distance Wi-Fi/VPN
200 fermeture / 201 / 204 connexion refusée
220 Connexions refusées par Active Directory (Voir LogonInfo de la table UserLogonEvents pour détails)

Sessions IIS
100 fermeture / 101 ouverture / 104 connexion refusée
120: Connexions refusées par Active Directory (Voir LogonInfo de la table UserLogonEvents pour détails)

EventTime

heure et date

Date et heure de l'événement d'ouverture/fermeture de sessionDate and time of the logon/logoff event

AdminActions table

Nom du champ

Type

Description du champ

Id

entier

ID de l’enregistrement (auto)

ServerName

chaîne

Nom du serveur

Kind

entier

  • 0: action sur les sessions

  • 1: action sur les machines

  • 2: action sur les utilisateurs

  • 3: action sur les comptes protégés (stratégies)

  • 4: action sur les propriétés du serveur

Action

entier

  • 0: installation d'agent(s)

  • 1: désinstallation d’agent(s)

  • 2: redémarrage de machine(s)

  • 3: arrêt de machine(s)

  • 4: réveil de machine(s)

  • 10: fermeture de la (des) session(s)

  • 11: verrouillage de la (des) session(s)

  • 12: réinitialiser la (les) session(s)

  • 13: envoyer une popup à la (aux) session(s)

  • 20: réinitialiser la clé Mfa

  • 21: réinitialiser le statut de l'aide Mfa

  • 30: création de stratégie

  • 31: mise à jour de stratégie

  • 32: suppression de stratégie

  • 33: bloquer un utilisateur

  • 34: débloquer un utilisateur

  • 35: désactiver la Mfa

  • 40: mise à jour des paramètres du serveur

  • 41: mise à jour de la version du serveur

DateStart

heure et date

Date et heure de début de l'action de l'administrateur

DateEnd

heure et date

Date et heure de fin de l'action de l'administrateur

UserAccount

chaîne

Nom du compte utilisateur à l’origine de l’action

Priority

entier

  • 0: Faible

  • 1: Moyenne

  • 2: Haute

Severity

entier

  • 0: Mineure

  • 1: Modérée

  • 2: Majeure

  • 3: Critique

DisplayState

entier

  • 0: Non-lu

  • 1: Lu

UserAccountFullName

chaîne

Nom complet du compte utilisateur à l’origine de l’action

Domain

chaîne

Nom du domaine

AdminActionResults table

Nom du champ

Type

Description du champ

Id

entier

ID de l’enregistrement (auto)

ServerName

string

Nom du serveur

AdminActionId

integer

Identifiant de AdminAction

Item

string

Le paramètre modifié par l’action de l’administrateur

Param1

string

Champs dynamique

Param2

string

Champs dynamique

Param3

string

Champs dynamique

Param4

string

Champs dynamique

Param5

string

Champs dynamique

Param6

string

Champs dynamique

StateResult

integer

  • 0: Réussie

  • 1: Annulée

  • 2: Echouée

Details

string

Détails concernant l'action de l'administrateur