Sécurité
Utilisateurs Tock Studio
Authentification
Tock Studio prend en charge plusieurs systèmes d'authentification : utilisateurs et rôles définis par propriétés (par défaut), OAuth2 (générique, Keycloak, GitHub) ou CAS (SSO). Ils sont décrits dans la page Authentification Tock Studio.
Rôles
Tock permet d'affecter plusieurs rôles ou niveaux d'habilitations aux utilisateurs dans les interfaces Tock Studio. En fonction du système d'authentification utilisé (par propriétés, OAuth, etc.) chaque utilisateur se voit assigné un ou plusieurs de ces rôles, lui donnant différents accès dans l'application.
Les rôles disponibles sont définis dans l'enum TockUserRole:
| Rôle | Description |
|---|---|
nlpUser |
NLP platform user, allowed to qualify and search sentences. |
~~faqNlpUser~~ |
~~FAQ NLP platform user, allowed to qualify and search sentences.~~ (Deprecated: Use the 'nlpUser' role instead) |
~~faqBotUser~~ |
~~A faq bot user is allowed to manage the FAQ content, and train the FAQ~~ (Deprecated: Use the 'botUser' role instead) |
botUser |
Bot platform user, allowed to create and modify stories, rules and answers. |
admin |
Allowed to update applications and configurations/connectors, import/export intents, sentences, stories, etc.. |
technicalAdmin |
Allowed to access encrypted data, import/export application dumps, etc. |
La manière de configurer quel utilisateur Tock Studio a quel rôle dépend du mode d'authentification,
autrement dit l'implémentation de TockAuthProvider utilisée (voir Authentification Tock Studio).
Données
Les utilisateurs pouvant transmettre aux bots des données personnelles à travers leurs conversations, il est important de réfléchir à la nature des données manipulées dans Tock Studio ou stockées par Tock, et de mettre en oeuvre des mécanismes de protection appropriés (anonymisation, chiffrement, durée de rétention, restrictions d'accès basées sur des rôles, etc.).
Voir en particulier la réglementation RGPD.
Chiffrement des données
Chiffrement de la base
Il est recommandé de déployer vos bases de données MongoDB en mode chiffré.
Chiffrement applicatif
Tock peut réaliser un chiffrement applicatif (facultatif) de certains champs en base de données, indépendamment du chiffrement de la base elle-même.
C'est le rôle de la variable d'environnement tock_encrypt_pass, qui permet d'indiquer un mot de passe
pour chiffrer et déchiffrer ces champs. Par défaut en environnement prod, Tock chiffre toutes les données utilisateurs
jugées sensibles à condition que tock_encrypt_pass soit défini.
Pour plus de détails, vous pouvez vous réferrer au code source.
Anonymisation
Il est souvent souhaitable que certaines phrases soient anonymisées que ce soit dans les logs (journalisation) ou dans l'interface (Tock Studio). Par exemple, des coordonnées, numéros de cartes de fidélité, etc. ne devraient être lus ni par les utilisateurs de Tock Studio ni par les administrateurs de la plateforme.
Par le framework
Pour anonymiser ces données, Tock met à disposition dans son framework une solution basée sur des
expressions régulières (RegExp) dont l'interface de base est StringObfuscator.
Par le modèle NLP
Tock permet également d'anonymiser dans Tock Studio (vue Inbox notamment.) les valeurs des entités reconnues par le modèle NLP.
Cette anonymisation par types d'entités se configure dans la vue Language Understanding > Entities. Seuls les
utilisateurs ayant un rôle admin ou technicalAdmin dans Tock Studio peuvent activer/désactiver cette fonctionnalité.
Pour en savoir plus, voir Rôles.
Dans les vues où les phrases sont affichées anonymisées (Inbox, Search par exemple), un admin ou
technicalAdmin peut décider d'afficher quand même (pour lui-même uniquement) une phrase non anonymisée grâce à l'action
Reveal the sentence (oeil ouvert).
Remarque : définir
tock_encrypt_passest requis pour utiliser les fonctions d'anonymisation d'entités NLP dans les interfaces Tock Studio.
Stockage & conservation
Tock stocke automatiquement différents types de données, allant d'informations peu sensibles (configuration de Stories et réponses du bot, structure des intentions, statistiques de navigation tous utilisateurs confondus, etc.) à des données plus personnelles (détails des conversations, préférences utilisateurs, etc.).
En fonction de leur nature et leur utilisation dans le fonctionnement de Tock (NLP, supervision, debug...), ces données ont des durées de rétention spécifiques, et configurables. Chaque utilisateur de Tock décide et configure combien de temps les données stockées sont conservées, en fonction de ses besoins.
La section Installation > Conservation des données décrit les différents types de données conservées et comment modifier leur durée de rétention.
Supprimer et migrer les données d'un utilisateur
Tock peut supprimer toutes les données liées à un utilisateur, par exemple pour répondre à une demande au titre du RGPD :
quand un utilisateur envoie le mot-clé de suppression (_delete_user_ par défaut, configurable avec la propriété
tock_bot_delete_keyword), ses données sont supprimées.
La suppression (et la migration des données d'un identifiant utilisateur vers un autre) passe par le service
UserDataRedactor, qui appelle chaque UserDataRedactionProvider disponible :
| Fournisseur | Données |
|---|---|
user_timeline |
Timeline de l'utilisateur (profil, préférences) et dialogues |
web_sse_messages |
Messages en file du connecteur Web (SSE) |
bot_orchestration |
Données d'orchestration entre bots |
Si votre bot stocke d'autres données personnelles, implémentez ai.tock.shared.service.UserDataRedactionProvider et
déclarez-le dans un fichier META-INF/services/ai.tock.shared.service.UserDataRedactionProvider, pour que ces données
soient aussi supprimées.
Secrets
Les clés d'API et les mots de passe (fournisseurs Gen AI, bases vectorielles, MongoDB, iAdvize...) peuvent être lus depuis AWS Secrets Manager ou GCP Secret Manager plutôt que d'être stockés dans la base Tock ou dans des variables d'environnement :
| Variable d'environnement | Description |
|---|---|
tock_gen_ai_secret_manager_provider |
Gestionnaire de secrets pour les clés d'API Gen AI : AWS_SECRETS_MANAGER ou GCP_SECRET_MANAGER (voir fournisseurs Gen AI) |
tock_gen_ai_secret_prefix |
Préfixe des noms de secrets Gen AI (par défaut : LOCAL/TOCK) |
tock_database_mongodb_secret_manager_provider |
Gestionnaire de secrets pour les identifiants MongoDB |
tock_database_mongodb_credentials_secret_name |
Nom du secret contenant les identifiants MongoDB |