Introduction
Dans de nombreuses entreprises, l’utilisation du stockage cloud est devenue une evidence. Cependant, il n’est pas rare que differents services cloud soient utilises selon les departements ou les usages. Le temps passe a se demander « Ce fichier est-il sur Google Drive, SharePoint ou Box ? » nuit a la productivite.
Dans cet article, nous allons integrer plusieurs services de stockage cloud avec Fess et mettre en place un environnement permettant de rechercher tous les fichiers cloud de maniere transversale depuis une seule barre de recherche.
Public cible
Administrateurs d’organisations utilisant plusieurs services de stockage cloud
Personnes confrontees a des difficultes de recherche dans le stockage cloud
Personnes ayant une comprehension des concepts de base de l’authentification OAuth
Scenario
Une entreprise utilise les services de stockage cloud suivants.
Preparation de l’integration du stockage cloud
Installation des plugins de data store
Les plugins suivants sont utilises pour le crawl des services de stockage cloud.
fess-ds-gsuite: Crawl de Google Drive / Google Workspacefess-ds-microsoft365: Crawl de SharePoint Online / OneDrivefess-ds-box: Crawl de Box
L’installation s’effectue depuis l’ecran d’administration via [Systeme] > [Plugins].
Configuration de l’authentification OAuth
Pour acceder aux API des services de stockage cloud, la configuration de l’authentification OAuth est necessaire. Dans la console d’administration de chaque service, enregistrez une application et obtenez l’identifiant client et le secret.
Procedure commune
Enregistrer une application dans la console d’administration de chaque service
Configurer les scopes API (permissions) necessaires (l’acces en lecture seule est suffisant)
Obtenir l’identifiant client et le secret client
Configurer ces informations dans les parametres de data store de Fess
Configuration de chaque service
Configuration de Google Drive
Nous allons ajouter les fichiers Google Drive aux cibles de recherche.
Preparation dans Google Cloud Console
Creer un projet dans Google Cloud Console
Activer l’API Google Drive
Creer un compte de service et telecharger le fichier de cle JSON
Configurer le partage du compte de service sur les drives ou dossiers cibles
Configuration dans Fess
[Crawler] > [Data Store] > [Nouveau]
Nom du handler : selectionner GoogleDriveDataStore
Configuration des parametres et des scripts
Label : definir
google-drive
Exemple de configuration des parametres
private_key=-----BEGIN RSA PRIVATE KEY-----\nMIIE...\n-----END RSA PRIVATE KEY-----
private_key_id=your-private-key-id
client_email=fess-crawler@your-project.iam.gserviceaccount.com
supported_mimetypes=.*
include_pattern=
exclude_pattern=
Exemple de configuration des scripts
url=url
title=name
content=contents
mimetype=mimetype
content_length=size
last_modified=modified_time
Definissez les valeurs private_key, private_key_id et client_email a partir du fichier de cle JSON du compte de service. Les formats proprietaires Google tels que Google Docs, Sheets et Slides peuvent egalement etre extraits et recherches sous forme de texte.
Configuration de SharePoint Online
Nous allons ajouter les bibliotheques de documents SharePoint Online aux cibles de recherche.
Preparation dans Entra ID (Azure AD)
Enregistrer une application dans Entra ID
Configurer les permissions de l’API Microsoft Graph (Sites.Read.All, etc.)
Creer un secret client ou un certificat
Configuration dans Fess
[Crawler] > [Data Store] > [Nouveau]
Nom du handler : selectionner SharePointDocLibDataStore (pour les bibliotheques de documents. Selon l’usage, SharePointListDataStore, SharePointPageDataStore ou OneDriveDataStore sont egalement disponibles)
Configuration des parametres et des scripts
Label : definir
sharepoint
Exemple de configuration des parametres
tenant=your-tenant-id
client_id=your-client-id
client_secret=your-client-secret
site_id=your-site-id
Exemple de configuration des scripts
url=url
title=name
content=content
last_modified=modified
Definissez tenant, client_id et client_secret avec les valeurs obtenues lors de l’enregistrement de l’application dans Entra ID. En specifiant site_id, seul un site particulier sera crawle. Si cette valeur est omise, tous les sites accessibles seront inclus.
Configuration de Box
Nous allons ajouter les fichiers Box aux cibles de recherche.
Preparation dans Box Developer Console
Creer une application personnalisee dans Box Developer Console
Selectionner « Authentification serveur (avec identifiants client) » comme methode d’authentification
Demander l’approbation de l’application a un administrateur
Configuration dans Fess
[Crawler] > [Data Store] > [Nouveau]
Nom du handler : selectionner BoxDataStore
Configuration des parametres et des scripts
Label : definir
box
Exemple de configuration des parametres
client_id=your-client-id
client_secret=your-client-secret
enterprise_id=your-enterprise-id
public_key_id=your-public-key-id
private_key=-----BEGIN ENCRYPTED PRIVATE KEY-----\nMIIE...\n-----END ENCRYPTED PRIVATE KEY-----
passphrase=your-passphrase
supported_mimetypes=.*
Exemple de configuration des scripts
url=url
title=name
content=contents
mimetype=mimetype
content_length=size
last_modified=modified_at
Configurez les informations d’authentification de l’application personnalisee creee dans Box Developer Console. Le parametre supported_mimetypes permet de filtrer les types de fichiers a crawler a l’aide d’expressions regulieres.
Optimisation de la recherche transversale
Utilisation du crawl differentiel
Pour le crawl des services de stockage cloud, il est plus efficace d’utiliser le crawl differentiel, qui ne recupere que les fichiers mis a jour depuis le dernier crawl, plutot que de recuperer l’ensemble des fichiers a chaque fois.
Verifiez si l’option de crawl differentiel est disponible dans la configuration de chaque plugin. Le crawl differentiel permet de reduire le nombre d’appels API et de raccourcir le temps de crawl.
URL des resultats de recherche
Pour les documents crawles depuis le stockage cloud, un clic sur le lien dans les resultats de recherche ouvre le fichier dans l’interface Web du service correspondant. Ce comportement est naturel pour les utilisateurs et ne necessite generalement aucune configuration particuliere.
Points d’attention operationnels
Renouvellement des tokens OAuth
Lors de l’integration avec les services de stockage cloud, il est important de surveiller la validite des tokens OAuth.
Google Drive : dans le cas d’un compte de service, les tokens sont renouveles automatiquement
SharePoint Online : les secrets client ont une date d’expiration et doivent etre renouveles periodiquement
Box : une re-approbation de l’application peut etre necessaire
Enregistrez les dates d’expiration des tokens dans un calendrier afin d’eviter l’arret du crawl en raison d’une expiration.
Surveillance de l’utilisation des API
Les API des services de stockage cloud sont soumises a des limites d’utilisation. En particulier lors du crawl d’un grand nombre de fichiers, surveillez l’utilisation des API et ajustez les parametres de crawl pour ne pas depasser les limites.
Permissions et securite
Le compte de service Fess pour le stockage cloud doit etre configure avec des permissions en lecture seule. Les permissions en ecriture ne sont pas necessaires, conformement au principe de minimisation des risques de securite.
De plus, en combinant cette approche avec la recherche basee sur les roles abordee dans la Partie 5, il est possible de controler les resultats de recherche en fonction du systeme de permissions du stockage cloud.
Conclusion
Dans cet article, nous avons integre trois services de stockage cloud – Google Drive, SharePoint Online et Box – avec Fess pour mettre en place un environnement de recherche transversale.
Configuration des plugins de data store et de l’authentification OAuth pour chaque service de stockage cloud
Distinction et filtrage des sources d’information par labels
Optimisation de l’experience de recherche grace au crawl differentiel
Gestion des tokens OAuth et surveillance de l’utilisation des API
Cela permet de trouver instantanement les fichiers necessaires sans avoir a se demander sur quel service cloud ils se trouvent.
Dans le prochain article, nous aborderons le cycle de tuning pour l’amelioration continue de la qualite de recherche.