Introduction
Dans l’article précédent, nous avons présenté comment intégrer plusieurs sources de données pour effectuer une recherche transversale. Cependant, une fois la recherche transversale mise en place, un nouveau défi apparaît : le contrôle des informations « autorisées à être consultées » et des informations « qui ne doivent pas être affichées ».
Il serait problématique que des documents confidentiels du service des ressources humaines apparaissent dans les résultats de recherche de tous les employés. Dans cet article, nous allons concevoir et mettre en œuvre un contrôle des résultats de recherche en fonction de l’appartenance et des droits d’accès des utilisateurs, en exploitant la recherche par rôle de Fess.
Public visé
Personnes ayant besoin de contrôler l’accès aux résultats de recherche
Personnes souhaitant construire une plateforme de recherche tenant compte de la sécurité de l’information en entreprise
Personnes disposant de connaissances de base sur Active Directory et LDAP
Scénario
Une entreprise dispose de trois services.
Service commercial : gère les informations clients, les devis et les propositions commerciales
Service développement : gère les documents de conception, les spécifications du code source et les comptes rendus de réunion
Service ressources humaines : gère les évaluations du personnel, les informations salariales et le règlement intérieur
Il existe également des documents communs accessibles à tous les services (règlement interne, guide des avantages sociaux, etc.).
L’objectif est de fournir l’expérience de recherche suivante :
Les employés du service commercial peuvent rechercher uniquement les documents du service commercial et les documents communs
Les employés du service développement peuvent rechercher uniquement les documents du service développement et les documents communs
Les employés du service ressources humaines peuvent rechercher uniquement les documents du service ressources humaines et les documents communs
La direction peut rechercher l’ensemble des documents
Fonctionnement de la recherche par rôle
La recherche par rôle de Fess fonctionne selon le processus suivant :
Lors de l’exploration : des informations de rôle sont attribuées aux documents (quels rôles peuvent y accéder)
Lors de la connexion : les informations de rôle de l’utilisateur sont récupérées (authentification interne Fess ou intégration avec un système d’authentification externe)
Lors de la recherche : seuls les documents correspondant aux rôles de l’utilisateur sont affichés dans les résultats
Ce mécanisme permet d’effectuer le contrôle d’accès au niveau du moteur de recherche.
Conception des rôles
Conception des utilisateurs et des groupes
Commençons par organiser la relation entre utilisateurs, groupes et rôles dans Fess.
Configuration des groupes et rôles dans Fess
Création des rôles
Dans l’écran d’administration, sélectionnez [Utilisateur] > [Rôle]
Créez les rôles suivants :
sales_roleengineering_rolehr_rolemanagement_role
Création des groupes
Sélectionnez [Utilisateur] > [Groupe]
Créez les groupes suivants :
salesengineeringhrmanagement
Création des utilisateurs et attribution des rôles
Sélectionnez [Utilisateur] > [Utilisateur]
Attribuez un groupe et un rôle à chaque utilisateur
Attribution des permissions dans la configuration d’exploration
Pour attribuer des informations de contrôle d’accès aux documents, spécifiez les permissions dans la configuration d’exploration. Les permissions s’expriment sous la forme {role}nom_du_rôle, {group}nom_du_groupe, {user}nom_utilisateur, séparées par des retours à la ligne.
Configuration d’exploration par service
Serveur de fichiers du service commercial
[Explorateur] > [Système de fichiers] > [Nouveau]
Configurez les éléments suivants :
Chemin :
smb://fileserver/sales/Permissions : saisissez
{role}sales_roleet{role}management_roleséparés par un retour à la ligne
Avec cette configuration, les documents explorés à partir du serveur de fichiers du service commercial ne seront visibles dans les résultats de recherche que par les utilisateurs possédant les rôles sales_role et management_role.
Serveur de fichiers du service développement
[Explorateur] > [Système de fichiers] > [Nouveau]
Configurez les éléments suivants :
Chemin :
smb://fileserver/engineering/Permissions : saisissez
{role}engineering_roleet{role}management_roleséparés par un retour à la ligne
Serveur de fichiers du service ressources humaines
[Explorateur] > [Système de fichiers] > [Nouveau]
Configurez les éléments suivants :
Chemin :
smb://fileserver/hr/Permissions : saisissez
{role}hr_roleet{role}management_roleséparés par un retour à la ligne
Documents communs
[Explorateur] > [Web] ou [Système de fichiers] > [Nouveau]
Permissions : laissez la valeur par défaut
{role}guest
Par défaut, {role}guest est automatiquement renseigné. Comme tous les utilisateurs, y compris les utilisateurs invités, possèdent le rôle guest, tous les utilisateurs peuvent consulter ces résultats de recherche.
Intégration avec l’authentification externe
Dans un environnement d’entreprise réel, il est courant de vouloir s’intégrer à un service d’annuaire existant plutôt que d’utiliser la gestion interne des utilisateurs de Fess.
Intégration Active Directory / LDAP
Fess prend en charge l’intégration LDAP et peut utiliser les informations utilisateur d’Active Directory pour l’authentification et l’attribution des rôles.
Pour activer l’intégration LDAP, configurez les informations de connexion LDAP dans le fichier de configuration de Fess.
Les principaux éléments de configuration sont les suivants :
URL du serveur LDAP
DN de liaison (compte de connexion)
DN de base de recherche des utilisateurs
DN de base de recherche des groupes
Mappage des attributs utilisateur
Lorsque l’intégration LDAP est activée, les utilisateurs peuvent se connecter à Fess avec leur compte Active Directory. Les informations d’appartenance aux groupes sont automatiquement reflétées en tant que rôles, ce qui évite de configurer manuellement les rôles pour chaque utilisateur dans Fess.
Intégration SSO
Pour une configuration plus avancée, l’intégration avec l’authentification unique (SSO) est également possible. Fess prend en charge les protocoles SSO suivants :
OpenID Connect (OIDC) : Entra ID (Azure AD), Keycloak, etc.
SAML : intégration avec divers fournisseurs d’identité (IdP)
SPNEGO/Kerberos : authentification intégrée Windows
Grâce à l’intégration SSO, les utilisateurs peuvent accéder automatiquement à Fess avec leurs identifiants habituels, et les informations de rôle sont également reflétées automatiquement. Les détails de l’intégration SSO seront traités en profondeur dans la Partie 15 « Plateforme de recherche sécurisée ».
Vérification du fonctionnement
Une fois la configuration de la recherche par rôle terminée, vérifions son fonctionnement.
Procédure de vérification
Connectez-vous en tant qu’utilisateur du service commercial et recherchez « devis » → Vérifiez que seuls les documents du service commercial et les documents communs s’affichent
Connectez-vous en tant qu’utilisateur du service développement et effectuez la même recherche → Vérifiez que les documents du service commercial ne s’affichent pas
Connectez-vous en tant qu’utilisateur de la direction et effectuez la même recherche → Vérifiez que les documents de tous les services s’affichent
Points de vérification
Les documents pour lesquels l’utilisateur n’a pas les droits ne doivent en aucun cas apparaître dans les résultats de recherche
Les documents communs doivent s’afficher pour tous les utilisateurs
Le comportement de la recherche lorsque l’utilisateur n’est pas connecté (périmètre de l’affichage invité)
Considérations de conception
Granularité des rôles
La granularité des rôles est déterminée en fonction de la structure organisationnelle et des exigences de sécurité.
Granularité large : rôles définis par service (scénario de cet article)
Avantage : configuration simple, gestion facile
Inconvénient : impossible de contrôler finement l’accès au sein d’un service
Granularité fine : rôles définis par projet ou par équipe
Avantage : contrôle d’accès détaillé possible
Inconvénient : le nombre de rôles augmente et la gestion devient complexe
Il est recommandé de commencer avec une granularité large, puis d’affiner progressivement selon les besoins.
Intégration avec les ACL du serveur de fichiers
Lors de l’exploration d’un serveur de fichiers, il est également possible d’utiliser les informations ACL (liste de contrôle d’accès) des fichiers pour le contrôle des droits. Dans ce cas, les paramètres de droits du système de fichiers sont directement reflétés dans le contrôle de l’affichage des résultats de recherche.
Pour exploiter les ACL du serveur de fichiers, vérifiez les éléments de configuration relatifs aux permissions dans la configuration d’exploration.
Conclusion
Dans cet article, nous avons conçu et mis en œuvre un contrôle des résultats de recherche par service en utilisant la recherche par rôle de Fess.
Conception et enregistrement des rôles, groupes et utilisateurs
Attribution des rôles dans la configuration d’exploration
Réflexion automatique des rôles via l’intégration Active Directory / LDAP
Options d’intégration SSO (OIDC, SAML, SPNEGO)
La recherche par rôle permet de fournir la commodité de la recherche transversale tout en garantissant la sécurité de l’information. Ceci conclut la section fondamentale. À partir du prochain article, nous aborderons la section solutions pratiques, en traitant de la construction d’un hub de connaissances pour les équipes de développement.