Installation & Configuration¶
Dernière mise à jour : 19 octobre 2026
Cette page est la référence de tous les paramètres de Tolk for Cisco UC. Toute la configuration se fait depuis l'interface Web d'administration : un chapitre par page, une section par onglet et, pour chaque paramètre, sa clé, sa description et sa valeur par défaut.
Modifier les paramètres¶
Les pages de paramètres (Paramètres globaux, Produits) regroupent les paramètres de chaque onglet dans des cartes. Chaque ligne affiche la clé, sa valeur courante et une icône ? avec une aide contextuelle.
- Modifier : survolez une valeur et cliquez sur l'icône crayon. La page d'édition affiche la valeur courante, vérifie la nouvelle (type, plage, cohérence) et propose Réinitialiser par défaut lorsque la valeur diffère de la valeur par défaut.
- Modifications en attente : une valeur enregistrée n'est pas appliquée immédiatement. La ligne passe en orange et un bandeau indique le nombre de modifications en attente.
- Appliquer : ouvrez Système & reload → Appliquer / Redémarrer. La page liste chaque modification (avant / après, auteur), exécute des contrôles avant redémarrage (intégrité, certificats TLS, clients actifs, sessions d'administration actives) et permet d'annuler une modification ou toutes. Redémarrer maintenant applique la configuration (le serveur MCP et les sessions d'administration sont brièvement interrompus).
- Instantanés : un instantané horodaté de la configuration est conservé avant chaque modification (voir
BACKUP_ADMIN_UI_ENV_BACKUP_RETENTION). - Nouveaux paramètres : après une mise à jour, les paramètres ajoutés par la nouvelle version sont surlignés en bleu jusqu'à leur modification, leur acquittement (Marquer comme vus) ou pendant 7 jours.
- Paramètres grisés : un paramètre rendu sans objet par un autre est grisé (p. ex. tous les
BACKUP_*lorsqueBACKUP_ENABLEDvaut0). - Filtres : la barre d'onglets propose une zone de recherche et l'option Masquer les paramètres dont la valeur est par défaut.
- Fichiers et magasins de confiance : les paramètres qui désignent un fichier (clés, certificats,
known_hosts…) ou un magasin de certificats d'AC ne se modifient pas en ligne : un lien Voir / Éditer ouvre une page dédiée (métadonnées, contenu, génération, import…).
Droits d'accès
La modification nécessite le niveau d'accès lecture-écriture (RW) sur la page, accordé par le profil de l'administrateur (voir Administrateurs).
Paramètres globaux¶
Menu Paramètres globaux. La page comporte huit onglets.
Server¶
Identité¶
| Clé | Description | Défaut |
|---|---|---|
MCP_SERVER_NAME |
Nom d'affichage du serveur MCP. | Tolk for Cisco UC |
MCP_SERVER_INSTRUCTIONS |
Instructions annoncées aux agents IA qui se connectent (le texte intégré leur demande d'appeler d'abord infra_init_session). |
(texte intégré) |
HOST_FQDN |
FQDN de l'hôte Docker (résultat de hostname -f), et non du conteneur. Sert de nom d'hôte du conteneur et au rattachement de la licence : doit correspondre à la licence. |
(à renseigner) |
Conteneur Docker¶
| Clé | Description | Défaut |
|---|---|---|
UID |
Identifiant numérique d'utilisateur du conteneur (résultat de id -u pour le compte de service). Doit être propriétaire des répertoires montés. 0 (root) est refusé. |
1000 |
GID |
Identifiant numérique de groupe du conteneur (résultat de id -g pour le compte de service). Doit correspondre au groupe des répertoires montés. 0 (root) est refusé. |
1000 |
Appliqué par Docker Compose
UID / GID sont lus par Docker Compose à la création du conteneur : après une modification, exécutez docker compose up -d sur l'hôte — Appliquer & redémarrer ne suffit pas. Changez en conséquence le propriétaire des répertoires montés (sudo chown -R <uid>:<gid> ~/tolk) avant de recréer le conteneur.
Données persistantes (volumes bind-mount)¶
La configuration et toutes les données d'exécution sont conservées sur l'hôte, dans le répertoire d'installation, via des volumes bind-mount :
| Chemin hôte | Chemin conteneur | Usage |
|---|---|---|
./secrets/ |
/app/secrets/ |
Clés RSA, certificats TLS, licence, comptes admin |
./clients/ |
/app/clients/ |
Données des clients, rapports |
./profiles/clients/_live |
/app/profiles/clients/_live |
Profils RBAC des clients (copies de travail) |
./profiles/webadmin/_live |
/app/profiles/webadmin/_live |
Profils RBAC de l'interface d'administration |
./logs/ |
/app/logs/ |
Journaux applicatifs & d'audit |
./backups/ |
/app/backups/ |
Sauvegardes chiffrées |
./servers-data/ |
/app/servers-data/ |
Schémas AXL/RIS, magasins de confiance, prompts perso. |
Reverse proxy¶
| Clé | Description | Défaut |
|---|---|---|
MCP_SERVER_PUBLIC_URL |
URL de base publique utilisée par les clients via un reverse proxy / VIP (https://hôte[:port], sans chemin). Automatiquement autorisée dans MCP_SERVER_SECURITY_ALLOWED_HOSTS / MCP_SERVER_SECURITY_ALLOWED_ORIGINS, annoncée à la place d'AUTH_ISSUER (découverte OAuth, /status, URL de connexion des clients) et ajoutée en SAN secondaire. Vide = pas de proxy. |
(vide) |
TRUSTED_PROXY_IPS |
Reverse proxies (IP / CIDR séparés par des virgules) placés devant le serveur MCP et l'interface d'administration. X-Forwarded-For n'est utilisé que depuis ces sources pour identifier le client réel (logs, liste noire, statistiques, ADMIN_UI_TRUSTED_IPS) ; elles ne sont jamais mises en liste noire. Vide = pas de proxy. |
(vide) |
Transport¶
| Clé | Description | Défaut |
|---|---|---|
MCP_SERVER_HOST |
Adresse d'écoute dans le conteneur. Doit rester 0.0.0.0 pour le mappage de ports Docker. |
0.0.0.0 |
MCP_SERVER_PORT |
Port TCP d'écoute du serveur MCP (HTTPS, défaut 8443). | 8443 |
MCP_SERVER_TRANSPORT |
Protocole de transport MCP. streamable-http est le seul transport supporté. |
streamable-http |
MCP_SERVER_SECURITY_TRANSPORT_ENABLED |
Protection contre le DNS rebinding sur le transport (1 = activé, 0 = désactivé). | 1 |
MCP_SERVER_URL_PATH |
Chemin d'URL sous lequel le point d'accès MCP est exposé. | /mcp |
MCP_SERVER_SECURITY_ALLOWED_HOSTS |
Valeurs d'en-tête Host autorisées (séparées par des virgules, port joker possible), p. ex. tolk.domaine.com:*. Les hôtes loopback et l'hôte de MCP_SERVER_PUBLIC_URL sont implicites. Les entrées non-loopback sont ajoutées en SAN du certificat auto-signé et du CSR. |
(à renseigner) |
MCP_SERVER_SECURITY_ALLOWED_ORIGINS |
Valeurs d'en-tête Origin autorisées (séparées par des virgules, https://), p. ex. https://tolk.domaine.com:8443. Les origines loopback et celle de MCP_SERVER_PUBLIC_URL sont implicites. |
(à renseigner) |
Protection contre le DNS rebinding
Passer MCP_SERVER_SECURITY_TRANSPORT_ENABLED à 0 désactive la validation des en-têtes Host / Origin. Ne la désactivez que sur des réseaux totalement isolés, où les attaques par DNS rebinding ne sont pas un risque. Ces contrôles s'appliquent au port MCP uniquement, pas à l'interface d'administration.
Mode maintenance¶
| Clé | Description | Défaut |
|---|---|---|
MAINTENANCE_IDLE_TIMEOUT_SECONDS |
Mode maintenance actif (page Système & reload) : un client inactif depuis plus de ce nombre de secondes voit ses requêtes MCP refusées (« réessayer plus tard »). Les clients actifs continuent ; les nouvelles sessions sont toujours refusées. | 300 |
MAINTENANCE_MAX_DRAIN_SECONDS |
Durée maximale de vidange optionnelle, en secondes, après l'activation du mode maintenance : une fois écoulée, toute requête MCP est refusée, client actif ou non. 0 = pas de limite. | 0 |
Le mode maintenance lui-même s'active et se désactive depuis la page Système & reload.
Autres¶
| Clé | Description | Défaut |
|---|---|---|
SERVER_HEALTHCHECK_STATUS_RESPONSE |
Corps renvoyé par le point de contrôle de santé lorsque le serveur est opérationnel. | ok |
INTEGRITY_CHECK_INTERVAL_HOURS |
Intervalle (en heures) de la vérification d'intégrité des fichiers par le watchdog. | 24 |
Infos¶
Ces valeurs en lecture seule identifient l'installation. Elles sont mises à jour automatiquement à chaque mise à jour.
| Clé | Description | Défaut |
|---|---|---|
PROJECT_CREATOR |
Métadonnée auteur/créateur du projet (informatif). | Pierre SOURDEAU |
PROJECT_NAME |
Métadonnée nom du projet (informatif). | tolk-for-cisco-uc |
PROJECT_VERSION |
Version du projet/build ; également utilisée par le manifeste d'intégrité. | (version installée) |
Authentication¶
Identité¶
| Clé | Description | Défaut |
|---|---|---|
AUTH_AUDIENCE |
Claim JWT aud attendu, qui identifie ce serveur comme destinataire des jetons. |
mcp-clients |
AUTH_ISSUER |
URL HTTPS publique du serveur (p. ex. https://tolk.domaine.com:8443) : claim JWT iss, URL de base du serveur d'autorisation OAuth 2.1 et CN des certificats générés. |
(à renseigner) |
AUTH_MODE |
Mode d'authentification global : jwt, oauth2 ou jwt+oauth2 (voir Modes d'authentification). |
jwt |
CLIENTS_DIR |
Répertoire des données de chaque client (identifiants, rapports). | ./clients/ |
Les clients MCP ne sont pas déclarés ici mais sur la page Clients.
Modes d'authentification¶
AUTH_MODE |
Identifiants | Usage type |
|---|---|---|
jwt |
Jeton JWT signé de longue durée (Bearer), pré-généré pour chaque client | Agents IA configurés avec un jeton statique |
oauth2 |
OAuth 2.1 : client_id / client_secret, jetons d'accès de courte durée |
Agents IA (connexion interactive par navigateur ou connexion automatique), scripts / pipelines |
jwt+oauth2 |
Les deux : chaque client a son propre mode (jwt, oauth2 ou les deux) |
Environnements mixtes |
Mode JWT (par défaut)¶
- Un JWT RS256 signé est généré pour chaque client et affiché une seule fois via Voir les identifiants sur la page Clients.
- Sa durée de vie est fixée par
AUTH_TOKEN_EXPIRY_DAYS(par défaut : 365 jours). - Au démarrage, un jeton est renouvelé automatiquement s'il est absent, corrompu, mal signé, ou si ses claims ou son sujet ont changé.
- Réinitialiser les tokens (page Clients) révoque immédiatement le jeton courant et en génère un nouveau.
Claims du JWT :
| Claim | Description |
|---|---|
sub |
Sujet du client |
iss |
Émetteur (AUTH_ISSUER) |
aud |
Audience (AUTH_AUDIENCE) |
iat |
Date d'émission |
exp |
Date d'expiration |
jti |
Identifiant unique (révocation) |
client_id |
Nom du client |
Mode OAuth 2.1¶
OAuth 2.1 utilise des jetons dynamiques de courte durée, mieux adaptés aux pipelines automatisés et aux environnements exigeants en matière d'hygiène des identifiants.
client_id= nom du client, créé sur la page Clients (pas d'enregistrement dynamique de client). Leclient_secretest affiché une seule fois via Voir les identifiants ; seul son hash bcrypt est conservé.- Durée de vie des jetons d'accès :
AUTH_OAUTH_TOKEN_EXPIRY_SECONDS(par défaut : 3600 s). Aucun jeton de rafraîchissement n'est émis : à l'expiration, l'agent obtient un nouveau jeton par le même mécanisme. - Réinitialiser les tokens (page Clients) renouvelle le
client_secret: l'ancien secret ne permet plus d'obtenir de jeton. - Endpoints :
GET/POST /authorize,POST /token,POST /revoke(RFC 7009),GET /.well-known/oauth-authorization-server(RFC 8414),GET /.well-known/oauth-protected-resource(RFC 9728).
Un agent IA obtient ses jetons de l'une des deux façons suivantes, selon ce qu'il supporte :
| Connexion interactive (navigateur) | Connexion automatique (client credentials) | |
|---|---|---|
| Type d'autorisation OAuth | authorization_code + PKCE (RFC 7636) |
client_credentials (RFC 6749 §4.4) |
| Configuration de l'agent | URL du serveur, plus le client_id si l'agent l'accepte |
URL du serveur, client_id et client_secret |
| Saisie du secret | Par l'utilisateur, sur la page de connexion Tolk | Aucune : l'agent le lit dans son fichier de configuration |
| Navigateur | Oui | Non |
| Expiration du jeton | L'agent rouvre la page de connexion | L'agent redemande un jeton de lui-même, sans action de l'utilisateur |
| Liste blanche des redirect URI | S'applique (voir Liste blanche des redirect URI OAuth) | Non utilisée |
| Clients typiques | IDE IA et agents avec connexion par navigateur (p. ex. OpenCode) | Agents supportant le type client credentials (p. ex. Claude Desktop), SDK MCP, plateformes d'automatisation, scripts |
Connexion interactive (authorization_code + PKCE) :
- L'agent reçoit une réponse 401 et effectue la découverte OAuth (
/.well-known/...). - Il ouvre la page de connexion Tolk dans le navigateur (
GET /authorize), avec leclient_idprérempli si sa configuration le fournit. - L'utilisateur saisit le
client_id(s'il est vide) et leclient_secret. - Le navigateur est redirigé vers l'agent (
redirect_uri) avec un code d'autorisation. - L'agent échange le code contre un jeton d'accès (
POST /token), protégé par PKCE.
Note
Dans ce mode, le secret est toujours saisi sur la page de connexion : même si la configuration de l'agent contient aussi un client_secret, Tolk ne l'utilise pas et le navigateur s'ouvre quand même. Seul un agent utilisant le type client credentials se connecte sans action de l'utilisateur.
Connexion automatique (client_credentials) :
- L'agent lit le
client_idet leclient_secretdans sa configuration. - Il les envoie à
POST /tokenavecgrant_type=client_credentials, dans l'en-tête HTTP Basic (client_secret_basic) ou dans le corps du formulaire (client_secret_post). - Il appelle le serveur MCP avec le jeton d'accès reçu (
Authorization: Bearer ...). - À l'expiration du jeton (
expires_in), il en redemande un de la même façon.
Requête équivalente avec curl :
curl -sk -X POST https://tolk.domaine.com:8443/token \
-u "<client_id>:<client_secret>" \
-d "grant_type=client_credentials"
Secret stocké dans la configuration de l'agent
En connexion automatique, le client_secret est stocké en clair dans le fichier de configuration de l'agent : restreignez ses droits d'accès, et créez un client par utilisateur et par agent afin que Réinitialiser les tokens n'affecte que cet agent.
Mode hybride JWT + OAuth 2.1¶
En jwt+oauth2, le formulaire client de la page Clients affiche un champ Mode d'authentification : chaque client utilise jwt, oauth2 ou les deux. Certains clients peuvent ainsi utiliser des jetons JWT statiques, d'autres OAuth 2.1.
Protection anti brute-force¶
| Clé | Description | Défaut |
|---|---|---|
AUTH_FAIL_LIMIT |
Nombre d'échecs d'authentification autorisés avant mise en liste noire de l'IP source. | 10 |
AUTH_FAIL_WINDOW_SECONDS |
Fenêtre glissante (en secondes) sur laquelle les échecs d'authentification sont comptés. | 300 |
AUTH_BLACKLIST_DURATION_SECONDS |
Durée (en secondes) de mise en liste noire d'une IP après dépassement du seuil d'échecs d'authentification. | 900 |
Expiration des jetons¶
| Clé | Description | Défaut |
|---|---|---|
AUTH_TOKEN_EXPIRY_DAYS |
Durée de vie (en jours) des jetons JWT statiques émis en mode jwt. | 365 |
AUTH_OAUTH_TOKEN_EXPIRY_SECONDS |
Durée de vie des jetons d'accès OAuth2, en secondes (utilisé seulement si AUTH_MODE inclut oauth2). |
3600 |
URIs de redirection OAuth2¶
| Clé | Description | Défaut |
|---|---|---|
AUTH_OAUTH_REDIRECT_URIS |
Liste blanche JSON par client des redirect_uri OAuth 2.1 (voir Liste blanche des redirect URI OAuth). Vide = pas de liste blanche. |
(vide) |
AUTH_OAUTH_REDIRECT_URI_ENFORCEMENT |
off (liste blanche non appliquée, les écarts sont seulement audités) ou strict (recommandé en production : une redirect_uri absente de la liste est rejetée). |
off |
Liste blanche des redirect URI OAuth¶
Dans le flux authorization_code, le navigateur est redirigé vers la redirect_uri fournie par l'agent IA. La liste blanche restreint ces URI, client par client :
{"alice": ["http://127.0.0.1:19876/mcp/oauth/callback"], "*": ["http://127.0.0.1:19876/mcp/oauth/*"]}
- Clé = nom du client (
client_id). La clé"*"contient les URI autorisées pour tous les clients ; elles s'ajoutent à la liste propre de chaque client. - Correspondance : exacte, ou par préfixe lorsque l'entrée se termine par
*. Gardez le schéma, l'hôte, le port et le chemin dans un préfixe (http://127.0.0.1/*ne correspond pas àhttp://127.0.0.1:19876/...). - Plusieurs agents : créez un client par utilisateur et par agent, et listez toutes ses URI ; un client peut en avoir plusieurs (p. ex. OpenCode et un autre outil).
- URI inconnue : en mode
strictavec une liste vide, rien n'est bloqué et laredirect_urireçue est journalisée en avertissement dans le journal applicatif. Ajoutez-la à la liste, puis appliquez.
| Agent | redirect_uri par défaut |
|---|---|
| OpenCode | http://127.0.0.1:19876/mcp/oauth/callback (fixable par serveur avec "oauth": {"redirectUri": "..."} dans opencode.json) |
Production
Passez AUTH_OAUTH_REDIRECT_URI_ENFORCEMENT à strict avec des URI exactes. La liste blanche n'est utilisée que lorsque AUTH_MODE vaut oauth2 ou jwt+oauth2.
Clés RSA¶
| Clé | Description | Défaut |
|---|---|---|
AUTH_RSA_KEY_SIZE |
Taille en bits de la paire de clés RSA du serveur (2048, 3072 ou 4096), utilisée lors de sa (re)génération. |
4096 |
AUTH_RSA_PRIVATE_KEY_FILE |
Clé privée RSA : signe les jetons JWT et déchiffre les sauvegardes. | ./secrets/rsa_private.pem |
AUTH_RSA_PUBLIC_KEY_FILE |
Clé publique RSA : vérifie les jetons JWT et chiffre les sauvegardes. | ./secrets/rsa_public.pem |
La paire de clés RSA du serveur signe les jetons JWT et chiffre les sauvegardes. Le bouton Régénérer la paire de cette carte effectue une rotation complète : sauvegarde complète du système, archivage de la paire courante, génération d'une nouvelle paire et réémission des jetons de tous les clients. Communiquez ensuite les nouveaux jetons via Voir les identifiants sur la page Clients, puis appliquez le redémarrage en attente.
Impact d'une régénération
Tous les jetons clients existants deviennent invalides, et les sauvegardes chiffrées avec l'ancienne clé ne peuvent être déchiffrées qu'avec la clé archivée : exportez-la hors ligne. Voir Rotation des clés RSA.
TLS / Crypto¶
Certificat du serveur MCP¶
| Clé | Description | Défaut |
|---|---|---|
MCP_TLS_CSR_FILE |
Demande de signature (CSR) du certificat du serveur MCP (Générer un CSR…). | ./secrets/server.csr |
MCP_TLS_KEY_FILE |
Clé privée du certificat du serveur MCP (auto-signé ou signé par une AC) ; signe aussi le CSR. | ./secrets/server.key |
MCP_TLS_CERT_FILE |
Certificat du serveur MCP, auto-signé ou signé par une AC (voir Certificats TLS). | ./secrets/server.crt |
MCP_TLS_SELFSIGNED_VALIDITY_DAYS |
Durée de validité (en jours) du certificat serveur auto-signé généré (défaut 365). | 365 |
Infos certificat¶
Ces valeurs alimentent le sujet des CSR ; le CN est toujours l'hôte de AUTH_ISSUER.
| Clé | Description | Défaut |
|---|---|---|
CERT_COUNTRY |
Champ Pays (C) du sujet de la CSR / du certificat généré. | FR |
CERT_STATE |
Champ Région/État (ST) du sujet de la CSR / du certificat généré. | STATE |
CERT_LOCATION |
Champ Localité (L) du sujet de la CSR / du certificat généré. | LOCATION |
CERT_ORG |
Champ Organisation (O) du sujet de la CSR / du certificat généré. | ORG |
CERT_OU |
Champ Unité organisationnelle (OU) du sujet de la CSR / du certificat généré. | OU |
CERT_KEY_SIZE |
Taille en bits de la clé RSA utilisée lors de la génération d'une nouvelle clé privée de certificat. | 4096 |
Crypto¶
| Clé | Description | Défaut |
|---|---|---|
CRYPTO_SALT_FILE |
Chemin du fichier de sel côté serveur utilisé pour les dérivations cryptographiques. | .salt |
CRYPTO_SECRETS_DIR |
Répertoire des secrets cryptographiques du serveur (clés, certificats, sel). | ./secrets/ |
Certificats TLS¶
Chaque écouteur utilise une unique paire certificat / clé, auto-signée ou signée par une AC :
| Écouteur | Paramètres certificat / clé |
|---|---|
| Serveur MCP | MCP_TLS_CERT_FILE / MCP_TLS_KEY_FILE |
| Interface d'administration | ADMIN_UI_TLS_CERT_FILE / ADMIN_UI_TLS_KEY_FILE (seulement si ADMIN_UI_TLS_REUSE_MCP_CERT vaut 0 ; voir Admin UI → TLS) |
Le type est déduit du certificat lui-même (émetteur = sujet → auto-signé, sinon signé par une AC).
Certificat auto-signé (par défaut)¶
Au démarrage, lorsque la paire est absente (ou qu'un seul des deux fichiers existe), Tolk génère un certificat auto-signé :
- CN = hôte de
AUTH_ISSUER; - SAN = le CN + chaque hôte non-loopback de
MCP_SERVER_SECURITY_ALLOWED_HOSTS(interface d'administration :ADMIN_UI_TLS_ALLOWED_HOSTS, ou la liste MCP si vide) + l'hôte deMCP_SERVER_PUBLIC_URL.localhost/127.0.0.1ne sont jamais inclus.
Un certificat auto-signé existant est régénéré au démarrage lorsque plus de 50 % de sa durée de vie est écoulée, lorsque son CN / ses SAN ne correspondent plus à la configuration, ou lorsqu'il ne correspond plus à sa clé privée.
Régénération uniquement au redémarrage
Un certificat auto-signé n'est jamais renouvelé pendant que le serveur tourne. Dès qu'il a dépassé 50 % de sa durée de vie, l'en-tête affiche Certificat TLS : REDÉMARRAGE REQUIS, le bandeau de redémarrage apparaît sur toutes les pages et la page Appliquer & redémarrer liste le certificat comme modification en attente (auteur Système). Redémarrez le serveur pour le régénérer.
Sans redémarrage, le certificat actuel continue d'être servi jusqu'à son expiration ; les agents IA rejettent alors la connexion TLS. Le redémarrage suivant le régénère. Un certificat régénéré est un nouveau certificat : les agents qui font explicitement confiance à l'ancien doivent faire confiance au nouveau.
Certificat signé par une AC¶
- Cliquez sur Voir / Éditer sur
MCP_TLS_CSR_FILE, puis Générer le CSR… : un aperçu affiche le sujet et les SAN, que l'on peut retirer ou ajouter pour cette demande uniquement. - Faites signer le CSR par votre AC.
- Importez le certificat signé sur la page
MCP_TLS_CERT_FILE. Il remplace le certificat auto-signé (la clé privée est conservée) et le CSR consommé est supprimé. - Appliquez & redémarrez.
Un certificat signé par une AC n'est jamais écrasé ni renouvelé par Tolk. Au démarrage, un certificat signé par une AC expiré est bloquant pour le serveur MCP (l'écouteur de l'interface d'administration est désactivé à la place). Pour revenir à un certificat auto-signé, utilisez Supprimer certificat + clé : une nouvelle paire auto-signée est générée au prochain redémarrage.
Recommandé en production
Un certificat signé par une AC supprime les avertissements de confiance TLS sur les agents IA et est fortement recommandé pour tout déploiement de production.
État des certificats¶
Le tableau de bord (zone Sécurité), la page Système & reload et l'en-tête appliquent la même règle, pour les deux certificats et les deux types :
OK — moins de 50 % de la durée de vie écoulée ;
Renouvellement recommandé — plus de 50 % écoulés (auto-signé : redémarrage requis, le redémarrage le régénère ; signé par une AC : générez un nouveau CSR et installez le certificat re-signé) ;
Expiré.
Admin UI¶
Général¶
| Clé | Description | Défaut |
|---|---|---|
ADMIN_UI_ENABLED |
Interrupteur principal de toute l'interface web d'administration (0 = le port HTTPS dédié n'est pas ouvert). | 1 |
ADMIN_UI_DEFAULT_LANGUAGE |
Langue de l'interface avant connexion : en ou fr. | en |
Désactiver l'interface d'administration
Avec ADMIN_UI_ENABLED à 0, le port d'administration est fermé après le redémarrage et l'interface Web n'est plus accessible.
Transport¶
| Clé | Description | Défaut |
|---|---|---|
ADMIN_UI_HOST |
Adresse d'écoute de l'interface d'administration dans le conteneur. Doit rester 0.0.0.0 pour le mappage de ports Docker (avec 127.0.0.1 ou une IP de l'hôte, l'interface d'administration est injoignable depuis l'extérieur du conteneur) ; restreindre l'accès via le pare-feu de l'hôte et ADMIN_UI_TRUSTED_IPS. |
0.0.0.0 |
ADMIN_UI_PORT |
Port HTTPS dédié de l'interface d'administration (doit différer de MCP_SERVER_PORT). |
9443 |
ADMIN_UI_TRUSTED_IPS |
Liste blanche d'accès (CIDR séparés par des virgules) évaluée sur l'IP du client (IP de la socket TCP, ou X-Forwarded-For derrière un proxy listé dans TRUSTED_PROXY_IPS). Vide = tout refuser. |
10.0.0.0/8,172.16.0.0/12,192.168.0.0/16 |
Loopback toujours autorisé
127.0.0.1/32 est toujours autorisé, même s'il n'est pas listé dans ADMIN_UI_TRUSTED_IPS (contrôle de santé du conteneur et récupération locale).
Protection anti brute-force¶
| Clé | Description | Défaut |
|---|---|---|
ADMIN_UI_LOGIN_LOCKOUT_MINUTES |
Durée (en minutes) du blocage après trop de connexions admin échouées. | 15 |
ADMIN_UI_LOGIN_MAX_ATTEMPTS |
Nombre de connexions admin échouées autorisées avant blocage temporaire. | 5 |
ADMIN_UI_LOGIN_WINDOW_SECONDS |
Fenêtre glissante (en secondes) sur laquelle les connexions admin échouées sont comptées. | 300 |
Politique de mot de passe¶
| Clé | Description | Défaut |
|---|---|---|
ADMIN_UI_PWD_MIN_LENGTH |
Longueur minimale des mots de passe admin (12 recommandé au minimum). | 12 |
ADMIN_UI_PWD_REQUIRE_COMPLEXITY |
Exige des types de caractères variés dans les mots de passe admin (1 = activé, 0 = désactivé). | 1 |
ADMIN_UI_PWD_BCRYPT_COST |
Facteur de coût bcrypt (log2 du nombre de tours) des mots de passe des comptes admin, appliqué quand un mot de passe est défini (changement, création de compte, réinitialisation, admin_set_password.py). Chaque +1 double le temps de hachage, y compris à chaque connexion (≈ 0,2 s à 12, 0,8 s à 14). Les mots de passe existants conservent leur coût jusqu'à leur changement. Plage 4 à 16. Ne s'applique pas aux secrets OAuth des clients. |
12 |
Session¶
| Clé | Description | Défaut |
|---|---|---|
ADMIN_UI_SESSION_IDLE_MINUTES |
Délai d'inactivité (en minutes) avant expiration automatique d'une session admin. | 15 |
ADMIN_UI_SESSION_REMEMBER_DAYS |
Durée (en jours) d'une session persistante lorsque « Rester connecté » est coché. | 7 |
ADMIN_UI_SESSION_TTL_MINUTES |
Durée de vie maximale d'une session admin, en minutes. | 30 |
ADMIN_UI_SESSION_SECRET_FILE |
Chemin du secret de signature des cookies de session admin (créé automatiquement s'il est absent). | ./secrets/admins/sessions.key |
TLS¶
| Clé | Description | Défaut |
|---|---|---|
ADMIN_UI_TLS_REUSE_MCP_CERT |
Réutilise le certificat TLS du MCP sur le port d'admin (1) ou sert un certificat dédié (0). | 1 |
ADMIN_UI_TLS_CSR_FILE |
Chemin du CSR pour obtenir un certificat admin signé par une CA. Généré depuis l'admin UI et signé avec la clé privée de l'admin UI (la clé est conservée). | ./secrets/admins/admin-ui.csr |
ADMIN_UI_TLS_KEY_FILE |
Clé privée du certificat dédié de l'admin (utilisée seulement si reuse=0). | ./secrets/admins/admin-ui.key |
ADMIN_UI_TLS_CERT_FILE |
Certificat dédié de l'interface d'administration, auto-signé ou signé par une AC (utilisé seulement si ADMIN_UI_TLS_REUSE_MCP_CERT vaut 0). |
./secrets/admins/admin-ui.crt |
ADMIN_UI_TLS_ALLOWED_HOSTS |
SAN supplémentaires du certificat dédié de l'interface d'administration (hôte[:port] séparés par des virgules). Vide = reprend MCP_SERVER_SECURITY_ALLOWED_HOSTS. |
(vide) |
ADMIN_UI_TLS_SELFSIGNED_VALIDITY_DAYS |
Durée de validité (en jours) du certificat auto-signé de l'interface d'administration. | 365 |
Par défaut, l'interface d'administration réutilise le certificat du serveur MCP. Avec ADMIN_UI_TLS_REUSE_MCP_CERT à 0, elle présente son propre certificat, géré comme celui du MCP (voir Certificats TLS).
Autres¶
| Clé | Description | Défaut |
|---|---|---|
ADMIN_UI_HELP_LINK |
URL ouverte par l'icône d'aide (?) de la page de connexion et du menu latéral (http:// ou https://). Pointez-la vers un miroir interne de la documentation sur les sites isolés. |
https://tolk.sourdeau.com |
ADMIN_UI_PROMPTS_EDITOR_ENABLED |
Éditeur de prompts personnalisés : 1 = modifiable depuis l'interface Web, 0 = lecture seule. |
1 |
ADMIN_UI_SEASONAL_EFFECTS |
Animation décorative de la page de connexion : off, auto (thème saisonnier selon la date) ou un thème forcé (snow, christmas, spring, summer, autumn). |
auto |
Modèle d'affichage des identifiants client¶
La carte Modèle d'affichage des identifiants client définit le texte affiché par Voir les identifiants sur la page Clients (informations de connexion à transmettre à un client). Variables : {server_name}, {server_url}, {client_id}, {jwt_token}, {oauth_client_secret}.
Logging¶
Général¶
| Clé | Description | Défaut |
|---|---|---|
LOGGING_LEVEL |
Niveau minimal de journalisation : debug, info, warning, error ou critical. | info |
LOGGING_DIR |
Répertoire d'écriture des fichiers de journalisation. | ./logs/ |
LOGGING_ENCODING_FORMAT |
Encodage de caractères des fichiers de log (ex. utf-8). | utf-8 |
Niveau debug
debug est très verbeux et signalé par une icône d'avertissement dans l'interface Web. Ne l'utilisez que pour le dépannage.
Rotation des logs applicatifs¶
| Clé | Description | Défaut |
|---|---|---|
LOGGING_ROTATE_FILES |
Nombre d'archives de journal applicatif à conserver après rotation. | 3 |
LOGGING_ROTATE_SIZE |
Taille (en octets) déclenchant la rotation du journal applicatif. | 5_000_000 |
Rotation des logs d'audit¶
| Clé | Description | Défaut |
|---|---|---|
LOGGING_AUDIT_ROTATE_FILES |
Nombre d'archives de journal d'audit à conserver après rotation. | 10 |
LOGGING_AUDIT_ROTATE_SIZE |
Taille (en octets) déclenchant la rotation du journal d'audit. | 10_000_000 |
Journalisation console¶
| Clé | Description | Défaut |
|---|---|---|
LOGGING_CONSOLE_ENABLED |
Active la sortie des journaux en console (1 = activé, 0 = désactivé). | 0 |
LOGGING_COLORED_CRITICAL |
Couleur ANSI des lignes CRITICAL dans la sortie console. | bold_red |
LOGGING_COLORED_DEBUG |
Couleur ANSI des lignes DEBUG dans la sortie console. | cyan |
LOGGING_COLORED_ERROR |
Couleur ANSI des lignes ERROR dans la sortie console. | red |
LOGGING_COLORED_INFO |
Couleur ANSI des lignes INFO dans la sortie console. | green |
LOGGING_COLORED_WARNING |
Couleur ANSI des lignes WARNING dans la sortie console. | yellow |
Autres¶
| Clé | Description | Défaut |
|---|---|---|
LOGGING_SHOW_TECH_BACKUP_RETENTION |
Conservation des archives show-tech, en jours (0 = jamais purgées). |
30 |
Backup¶
Les sauvegardes sont chiffrées (AES-256-GCM + RSA OAEP) et peuvent aussi être lancées et restaurées depuis la page Sauvegarde / Restauration. Voir Sauvegarde & Restauration pour le modèle de chiffrement et la procédure de restauration.
Général¶
| Clé | Description | Défaut |
|---|---|---|
BACKUP_ENABLED |
Active les sauvegardes périodiques automatiques (1 = activé, 0 = désactivé). | 1 |
BACKUP_DIR |
Répertoire local de stockage des archives de sauvegarde. | ./backups/ |
BACKUP_INTERVAL_HOURS |
Intervalle entre deux sauvegardes automatiques, en heures. | 168 |
BACKUP_RETENTION |
Nombre d'archives de sauvegarde locales à conserver. | 4 |
BACKUP_EXCLUDE_DIRS |
Répertoires (relatifs à la racine du projet) exclus des sauvegardes, séparés par des virgules. | ./backups/,./.git/,./__pycache__/,./.venv/,./dist/,./build/ |
Export SFTP de sauvegarde¶
Après chaque sauvegarde locale, l'archive peut être envoyée vers un serveur SFTP distant.
Un répertoire distant par serveur Tolk
Si plusieurs serveurs Tolk exportent vers le même serveur SFTP, chacun doit utiliser son propre répertoire ou sous-répertoire dans BACKUP_SFTP_REMOTE_PATH (p. ex. /backups/tolk-1/, /backups/tolk-2/). Ne partagez jamais un répertoire distant entre deux serveurs Tolk.
| Clé | Description | Défaut |
|---|---|---|
BACKUP_SFTP_HOST |
Nom d'hôte du serveur SFTP pour l'export des sauvegardes (vide = export SFTP désactivé). | (vide) |
BACKUP_SFTP_PORT |
Port TCP du serveur SFTP (défaut 22). | 22 |
BACKUP_SFTP_AUTH |
Méthode d'authentification SFTP pour l'export distant : key (clé) ou password (mot de passe). | key |
BACKUP_SFTP_USER |
Nom d'utilisateur pour la connexion d'export SFTP. | (vide) |
BACKUP_SFTP_PASSWORD_ENC |
Mot de passe SFTP (si BACKUP_SFTP_AUTH vaut password), stocké chiffré. À saisir via le lien Définir le mot de passe. |
(vide) |
BACKUP_SFTP_KEY_FILE |
Clé privée SSH utilisée pour l'export SFTP (si BACKUP_SFTP_AUTH vaut key). |
./secrets/backup_ssh_key |
BACKUP_SFTP_REMOTE_PATH |
Répertoire de destination sur le serveur SFTP, dédié à ce serveur Tolk. | /backups/tolk/ |
BACKUP_SFTP_RETENTION |
Nombre d'archives de sauvegarde à conserver sur le serveur SFTP. | 52 |
BACKUP_SFTP_KNOWN_HOSTS |
Fichier OpenSSH known_hosts qui épingle la clé d'hôte du serveur SFTP (obligatoire avant le premier transfert). |
./secrets/sftp_known_hosts |
Faire d'abord confiance à la clé d'hôte du serveur SFTP
Sans entrée pour le serveur dans BACKUP_SFTP_KNOWN_HOSTS, aucun transfert n'a jamais lieu : le transfert s'interrompt avant l'envoi de tout identifiant (anti-MITM). Cliquez sur Voir / Éditer sur BACKUP_SFTP_KNOWN_HOSTS, puis Récupérer les clés du serveur : les clés d'hôte de BACKUP_SFTP_HOST / BACKUP_SFTP_PORT sont récupérées (sans authentification) avec leurs empreintes SHA-256. Vérifiez les empreintes par un autre canal auprès de l'administrateur SFTP, puis cliquez sur Enregistrer.
Réglez BACKUP_SFTP_AUTH sur key. Cliquez sur Voir / Éditer sur BACKUP_SFTP_KEY_FILE pour générer la clé (Régénérer la clé) ou la remplacer, puis autorisez la clé publique correspondante sur le serveur SFTP.
Réglez BACKUP_SFTP_AUTH sur password, puis cliquez sur Définir le mot de passe sur la ligne BACKUP_SFTP_PASSWORD_ENC. Le mot de passe est chiffré avec la clé du serveur ; il n'est jamais stocké en clair.
Autres sauvegardes¶
Instantanés pris automatiquement par l'interface Web avant une modification.
| Clé | Description | Défaut |
|---|---|---|
BACKUP_ADMIN_UI_ENV_BACKUP_RETENTION |
Nombre maximal d'instantanés de la configuration conservés (un instantané est pris avant chaque modification). | 16 |
BACKUP_ADMIN_UI_CERT_BACKUP_RETENTION |
Nombre maximal d'instantanés de certificat, clé et CSR conservés par fichier dans le répertoire backups/certificates. | 16 |
BACKUP_ADMIN_UI_RSA_BACKUP_RETENTION |
Nombre maximal d'instantanés de la paire de clés RSA du serveur (AUTH_RSA) conservés par fichier de clé dans le répertoire backups/rsa_keys. |
16 |
Rate limiting¶
En plus des limites par client définies dans chaque profil client, une limite globale optionnelle (tous clients confondus) protège chaque nœud Cisco. Elle est comptée par hôte de destination et par service, après le contrôle par client. Les plafonds par produit se trouvent sur la page Produits.
Général¶
| Clé | Description | Défaut |
|---|---|---|
RATELIMIT_GLOBAL_ENABLED |
Interrupteur principal du limiteur de débit global (tous clients). | true |
RATELIMIT_WINDOW_SECONDS |
Durée de la fenêtre du limiteur global, en secondes (défaut 60). | 60 |
Commun¶
| Clé | Description | Défaut |
|---|---|---|
RATELIMIT_GLOBAL_COMMON_REPORT |
Plafond global (requêtes par fenêtre, tous clients confondus) pour l'écriture de rapports. | 120 |
Sémantique par destination
Chaque plafond s'applique par hôte de destination : chaque nœud Cisco dispose de son propre budget. 0 désactive le plafond global pour ce service. Un rejet global émet une ligne d'audit RATE_LIMITED_GLOBAL et incrémente mcp_global_rate_limit_hits_total.
Pool SSH¶
Les sessions SSH vers les nœuds Cisco sont mutualisées et réutilisées.
| Clé | Description | Défaut |
|---|---|---|
SSH_POOL_MAX_SESSIONS_PER_HOST |
Plafond strict de sessions SSH simultanées ouvertes par le pool vers chaque nœud de destination. Les commandes au-delà sont mises en file jusqu'à libération d'une session (défaut : 3). | 3 |
SSH_POOL_ACQUIRE_TIMEOUT |
Nombre maximal de secondes qu'une commande en file attend une session SSH libre avant d'échouer en pool timeout (défaut : 120). | 120 |
SSH_POOL_IDLE_TTL |
Secondes pendant lesquelles une session SSH inactive est conservée dans le pool avant fermeture par le reaper (défaut : 300). | 300 |
SSH_POOL_HEALTH_CHECK_TIMEOUT |
Secondes pour sonder une session SSH réutilisée (attente du prompt admin) avant de la déclarer non saine (défaut : 5). | 5 |
Reports¶
Graphiques¶
| Clé | Description | Défaut |
|---|---|---|
REPORT_CHARTS_COLORS |
Palette de couleurs (séparées par des virgules) utilisée pour les graphiques des rapports générés. | PASS=#78F5AE,WARN=#FFBE54,FAIL=#FF6F61,INFO=#69C2FF,N/A=#BACCCC |
Limites de taille¶
| Clé | Description | Défaut |
|---|---|---|
REPORT_MAX_CHUNK_BYTES |
Taille maximale de contenu par appel write_report ; au-delà, le contenu est tronqué. | 204800 |
REPORT_MAX_FILE_SIZE_BYTES |
Taille maximale d'un fichier de rapport avant découpage automatique en une nouvelle partie. | 2097152 |
REPORT_RESUME_TAIL_BYTES |
Nombre d'octets de fin renvoyés lors de la reprise d'une écriture de rapport. | 8192 |
REPORT_RETENTION_DAYS |
Nombre de jours de conservation des rapports clients avant purge automatique (0 désactive la purge). | 30 |
Produits¶
Menu Produits. Un onglet par produit activé par la licence (les produits hors licence sont grisés). Ces paramètres s'appliquent à tous les nœuds du produit.
Serveurs Cisco UC et identifiants
Les nœuds Cisco UC et leurs identifiants ne se configurent pas sur cette page : ils sont stockés chiffrés par client MCP, via les outils *_store_credentials appelés par l'agent IA (voir Référence).
CUCM¶
AXL (SOAP)¶
| Clé | Description | Défaut |
|---|---|---|
SERVER_CUCM_AXL_PORT |
Port TCP de l'API SOAP AXL du CUCM (typiquement 8443). | 8443 |
SERVER_CUCM_AXL_SCHEMAS_DIR |
Répertoire local des schémas WSDL/XSD AXL du CUCM. | ./servers-data/cucm/axl-schemas/ |
SERVER_CUCM_AXL_WSDL_TIMEOUT |
Délai HTTP de téléchargement du WSDL AXL du CUCM, en secondes. | 10 |
RIS (RisPort)¶
| Clé | Description | Défaut |
|---|---|---|
SERVER_CUCM_RIS_MAX_DEVICE_NAMES |
Nombre maximal de noms de devices acceptés par appel cucm_risport_query, tous résolus en une seule requête RisPort ; au-delà, la liste doit être découpée en lots. | 1000 |
SERVER_CUCM_RIS_PORT |
Port TCP de l'API RisPort (temps réel) du CUCM. | 8443 |
SERVER_CUCM_RIS_SCHEMAS_DIR |
Répertoire local des schémas WSDL/XSD RisPort du CUCM. | ./servers-data/cucm/ris-schemas/ |
SERVER_CUCM_RIS_WSDL_TIMEOUT |
Délai HTTP de téléchargement du WSDL RisPort du CUCM, en secondes. | 15 |
Téléphones IP¶
| Clé | Description | Défaut |
|---|---|---|
SERVER_CUCM_PHONES_ENABLED |
Charge le sous-module CUCM Téléphones IP (outils cucm_phone_* et prompt de procédure téléphone) : 1 = chargé (défaut), 0 = non chargé. Appliqué au redémarrage. | 1 |
SERVER_CUCM_PHONES_SSL_CA_BUNDLE |
Magasin de confiance utilisé pour les téléphones IP si SERVER_CUCM_PHONES_SSL_VERIFY vaut True (p. ex. AC émettrice CAPF / LSC). |
./servers-data/cucm/certs-trust-store-phones/ |
SERVER_CUCM_PHONES_SSL_VERIFY |
Vérifie la chaîne du certificat HTTPS des téléphones IP avec le magasin de confiance téléphones (nom d'hôte non vérifié : téléphones joints par IP). | False |
SERVER_CUCM_PHONE_CAMPAIGN_RETENTION_DAYS |
Jours de conservation des journaux des campagnes de mise à jour des téléphones IP terminées ou jamais démarrées, avant la purge nocturne (03:15). Une campagne en cours ou suspendue n'est jamais purgée. 0 = jamais purgés. |
30 |
SERVER_CUCM_PHONE_MESSAGE_CONCURRENCY |
Nombre maximal de terminaux contactés en parallèle lors d'un même appel cucm_phone_send_message. | 10 |
SERVER_CUCM_PHONE_MESSAGE_MAX_TARGETS |
Nombre maximal de terminaux acceptés par appel cucm_phone_send_message ; au-delà, la liste doit être découpée en lots. | 50 |
SERVER_CUCM_PHONE_MESSAGE_TIMEOUT |
Délai HTTP d'envoi d'un message texte à un téléphone IP Cisco 88xx/98xx, en secondes. | 10 |
SERVER_CUCM_PHONE_SCREENSHOT_TIMEOUT |
Délai HTTP de capture d'écran d'un téléphone CUCM, en secondes. | 10 |
SERVER_CUCM_PHONE_WEB_BATCH_TIMEOUT |
Budget de temps d'un appel cucm_phone_web_info avec ip_phones, en secondes : les téléphones et pages non commencés dans ce délai sont signalés comme non lus. | 120 |
SERVER_CUCM_PHONE_WEB_CONCURRENCY |
Nombre maximal de téléphones lus en parallèle lors d'un même appel cucm_phone_web_info avec ip_phones (les pages d'un téléphone sont toujours lues séquentiellement). | 5 |
SERVER_CUCM_PHONE_WEB_MAX_TARGETS |
Nombre maximal de téléphones acceptés par appel cucm_phone_web_info avec ip_phones ; les listes plus longues doivent être découpées en lots. | 20 |
SERVER_CUCM_PHONE_WEB_TIMEOUT |
Délai HTTP de lecture d'une page d'information web d'un téléphone IP Cisco 88xx/98xx (cucm_phone_web_info), en secondes. | 10 |
Codecs RoomOS¶
| Clé | Description | Défaut |
|---|---|---|
SERVER_CUCM_ROOMOS_CAMPAIGN_RETENTION_DAYS |
Jours de conservation des journaux des campagnes de mise à jour RoomOS terminées ou jamais démarrées, avant la purge nocturne (03:15). Une campagne en cours ou suspendue n'est jamais purgée. 0 = jamais purgés. |
30 |
SERVER_CUCM_ROOMOS_ENABLED |
Charge le sous-module CUCM RoomOS (outils cucm_roomos_*, prompt de procédure RoomOS et référence xAPI) : 1 = chargé (défaut), 0 = non chargé. Appliqué au redémarrage. | 1 |
SERVER_CUCM_ROOMOS_MESSAGE_CONCURRENCY |
Nombre maximal de codecs contactés en parallèle lors d'un même appel cucm_roomos_send_message. | 10 |
SERVER_CUCM_ROOMOS_MESSAGE_MAX_TARGETS |
Nombre maximal de codecs acceptés par appel cucm_roomos_send_message ; au-delà, la liste doit être découpée en lots. | 50 |
SERVER_CUCM_ROOMOS_SSL_CA_BUNDLE |
Magasin de confiance utilisé pour les codecs RoomOS si SERVER_CUCM_ROOMOS_SSL_VERIFY vaut True (p. ex. AC émettrice CAPF / LSC). |
./servers-data/cucm/certs-trust-store-roomos/ |
SERVER_CUCM_ROOMOS_SSL_VERIFY |
Vérifie la chaîne du certificat HTTPS des codecs RoomOS avec le magasin de confiance RoomOS (nom d'hôte non vérifié : codecs joints par IP). | False |
SERVER_CUCM_ROOMOS_TIMEOUT |
Délai HTTP d'une requête xAPI (getxml/putxml) vers un codec RoomOS, en secondes. | 10 |
Sous-modules CUCM
Les téléphones IP et les codecs RoomOS sont deux sous-modules CUCM optionnels. Un sous-module désactivé (SERVER_CUCM_PHONES_ENABLED / SERVER_CUCM_ROOMOS_ENABLED = 0) ne charge aucun de ses outils, prompts ou ressources, et ses paramètres sont grisés. Une modification nécessite un redémarrage.
Vérification des certificats des terminaux
La vérification des certificats est désactivée par défaut pour les téléphones et les codecs : ils sont joints par adresse IP et présentent généralement un certificat constructeur (MIC) ou auto-signé. Lorsque *_SSL_VERIFY vaut True, la chaîne du certificat est vérifiée avec le magasin de confiance du sous-module (pas le nom d'hôte). Ajoutez les AC émettrices (émetteur CAPF / LSC, AC d'entreprise) via Voir / Éditer sur SERVER_CUCM_PHONES_SSL_CA_BUNDLE / SERVER_CUCM_ROOMOS_SSL_CA_BUNDLE. La sécurité repose aussi sur l'isolation VLAN des terminaux, les identifiants HTTP et l'obtention de l'IP du terminal depuis CUCM (RIS/AXL).
SSH / CLI¶
| Clé | Description | Défaut |
|---|---|---|
SERVER_CUCM_SSH_PORT |
Port TCP du SSH CUCM (CLI admin OS), typiquement 22. | 22 |
SERVER_CUCM_SSH_TERM |
Type de terminal annoncé pour les sessions SSH CUCM (ex. vt100). | dumb |
SERVER_CUCM_SSH_TERM_HEIGHT |
Hauteur (lignes) du pseudo-terminal des sessions SSH CUCM. | 50 |
SERVER_CUCM_SSH_TERM_WIDTH |
Largeur (colonnes) du pseudo-terminal des sessions SSH CUCM. | 220 |
SERVER_CUCM_SSH_TIMEOUT |
Délai des commandes SSH CUCM, en secondes. | 120 |
Timeout SSH
Le timeout SSH vaut 120 secondes par défaut sur tous les produits : certaines commandes (p. ex. l'état du cluster sur CUCM) mettent du temps à répondre.
TLS / certificats¶
| Clé | Description | Défaut |
|---|---|---|
SERVER_CUCM_SSL_CA_BUNDLE |
Magasin de confiance utilisé pour vérifier le certificat CUCM (AC privée ou certificats du produit). | ./servers-data/cucm/certs-trust-store/ |
SERVER_CUCM_SSL_VERIFY |
Vérifie le certificat TLS du CUCM. True recommandé ; False (labo uniquement) expose le trafic au MITM et journalise un événement CRITICAL. | True |
AC privée pour les connexions Cisco UC
Pour faire confiance à une AC interne (ou aux certificats du produit) pour les connexions AXL / RIS / CUPI, cliquez sur Voir / Éditer sur SERVER_<PRODUIT>_SSL_CA_BUNDLE et collez les certificats PEM. Passer SERVER_<PRODUIT>_SSL_VERIFY à False est réservé aux labos (exposition au MITM, événement CRITICAL journalisé).
SOAP (Zeep)¶
| Clé | Description | Défaut |
|---|---|---|
SERVER_CUCM_ZEEP_TIMEOUT |
Délai du transport SOAP Zeep pour CUCM AXL/RisPort, en secondes. | 30 |
Limitation de débit¶
Plafonds globaux par nœud CUCM, tous clients confondus (voir Rate limiting).
| Clé | Description | Défaut |
|---|---|---|
RATELIMIT_GLOBAL_CUCM_AXL |
Plafond global (tous clients confondus) pour les appels CUCM AXL par hôte de destination. | 500 |
RATELIMIT_GLOBAL_CUCM_PHONE |
Plafond global pour les appels CUCM téléphone (capture/web) par hôte de destination. | 500 |
RATELIMIT_GLOBAL_CUCM_RIS |
Plafond global pour les appels CUCM RisPort par hôte de destination. | 300 |
RATELIMIT_GLOBAL_CUCM_ROOMOS |
Plafond global pour les appels xAPI vers les codecs RoomOS, par hôte CUCM (tous clients confondus). | 500 |
RATELIMIT_GLOBAL_CUCM_SSH |
Plafond global pour les sessions SSH CUCM par hôte de destination. | 60 |
IMP¶
AXL (SOAP)¶
| Clé | Description | Défaut |
|---|---|---|
SERVER_IMP_AXL_PORT |
Port TCP de l'API SOAP AXL de l'IM&P. | 8443 |
SERVER_IMP_AXL_SCHEMAS_DIR |
Répertoire local des schémas WSDL/XSD AXL de l'IM&P. | ./servers-data/imp/axl-schemas/ |
SERVER_IMP_AXL_WSDL_TIMEOUT |
Délai HTTP de téléchargement du WSDL AXL de l'IM&P, en secondes. | 10 |
SSH / CLI¶
| Clé | Description | Défaut |
|---|---|---|
SERVER_IMP_SSH_PORT |
Port TCP du SSH IM&P (CLI admin OS), typiquement 22. | 22 |
SERVER_IMP_SSH_TERM |
Type de terminal annoncé pour les sessions SSH IM&P. | dumb |
SERVER_IMP_SSH_TERM_HEIGHT |
Hauteur (lignes) du pseudo-terminal des sessions SSH IM&P. | 50 |
SERVER_IMP_SSH_TERM_WIDTH |
Largeur (colonnes) du pseudo-terminal des sessions SSH IM&P. | 220 |
SERVER_IMP_SSH_TIMEOUT |
Délai des commandes SSH IM&P, en secondes. | 120 |
TLS / certificats¶
| Clé | Description | Défaut |
|---|---|---|
SERVER_IMP_SSL_CA_BUNDLE |
Magasin de confiance utilisé pour vérifier le certificat IM&P (AC privée ou certificats du produit). | ./servers-data/imp/certs-trust-store/ |
SERVER_IMP_SSL_VERIFY |
Vérifie le certificat TLS de l'IM&P. True recommandé ; False (labo uniquement) expose le trafic au MITM et journalise un événement CRITICAL. | True |
SOAP (Zeep)¶
| Clé | Description | Défaut |
|---|---|---|
SERVER_IMP_ZEEP_TIMEOUT |
Délai du transport SOAP Zeep pour IM&P AXL, en secondes. | 30 |
Limitation de débit¶
| Clé | Description | Défaut |
|---|---|---|
RATELIMIT_GLOBAL_IMP_AXL |
Plafond global pour les appels IM&P AXL par hôte de destination. | 300 |
RATELIMIT_GLOBAL_IMP_SSH |
Plafond global pour les sessions SSH IM&P par hôte de destination. | 60 |
CUC¶
CUPI (messagerie)¶
| Clé | Description | Défaut |
|---|---|---|
SERVER_CUC_CUPI_PORT |
Port TCP de l'API REST CUPI du CUC (provisioning Unity). | 8443 |
SERVER_CUC_CUPI_TIMEOUT |
Délai HTTP des appels REST CUPI du CUC, en secondes. | 30 |
SSH / CLI¶
| Clé | Description | Défaut |
|---|---|---|
SERVER_CUC_SSH_PORT |
Port TCP du SSH CUC (CLI admin OS), typiquement 22. | 22 |
SERVER_CUC_SSH_TERM |
Type de terminal annoncé pour les sessions SSH CUC. | dumb |
SERVER_CUC_SSH_TERM_HEIGHT |
Hauteur (lignes) du pseudo-terminal des sessions SSH CUC. | 50 |
SERVER_CUC_SSH_TERM_WIDTH |
Largeur (colonnes) du pseudo-terminal des sessions SSH CUC. | 220 |
SERVER_CUC_SSH_TIMEOUT |
Délai des commandes SSH CUC, en secondes. | 120 |
TLS / certificats¶
| Clé | Description | Défaut |
|---|---|---|
SERVER_CUC_SSL_CA_BUNDLE |
Magasin de confiance utilisé pour vérifier le certificat CUC (AC privée ou certificats du produit). | ./servers-data/cuc/certs-trust-store/ |
SERVER_CUC_SSL_VERIFY |
Vérifie le certificat TLS du CUC. True recommandé ; False réservé au labo/dev. | True |
Limitation de débit¶
| Clé | Description | Défaut |
|---|---|---|
RATELIMIT_GLOBAL_CUC_CUPI |
Plafond global pour les appels REST CUC CUPI par hôte de destination. | 300 |
RATELIMIT_GLOBAL_CUC_SSH |
Plafond global pour les sessions SSH CUC par hôte de destination. | 60 |
Prompts personnalisés¶
Menu Prompts personnalisés. Un onglet par produit sous licence (CUCM, IMP, CUC). Chaque prompt est une consigne réutilisable publiée aux agents IA sous forme de prompt MCP.
| Champ | Description |
|---|---|
| Nom | Identifiant unique : minuscules, chiffres, tirets bas |
| Titre | Titre d'affichage optionnel |
| Description | Texte visible par les clients MCP |
| Étiquettes | Optionnelles, séparées par des virgules (p. ex. audit, security) |
| Contenu du prompt | Texte de la consigne |
| Activé | Publié ou non |
| Ajouter la synthèse de fin de workflow commune | Ajoute la synthèse client commune à la fin du prompt (voir ci-dessous) |
- Ajouter un prompt personnalisé, modifier, activer / désactiver ou supprimer un prompt depuis la liste.
- Charger un fichier de définition de prompts : importez des prompts depuis un fichier
.json(ou un contenu collé) et cochez ceux à ajouter ; les prompts existants sont ignorés. - Synthèse de fin de workflow : une fois cochée (
"summary": truedans le fichier.json), un modèle commun est ajouté au prompt. L'agent IA termine alors le workflow — succès, échec, interruption ou rien à faire — par une courte synthèse client : opération, référence / dates, résultat global (✅ / ⚠️ / ❌ / ⏸️ / ➖), chiffres clés, modifications, points d'attention, actions restantes, retour arrière. Une forme courte (opération, résultat, modifications, retour arrière) est utilisée pour les opérations sur un seul objet. Placez le contenu propre au workflow (contenu de chaque ligne, emplacement de la synthèse) dans une section## Summary specificsdu corps du prompt. Une étiquette Synthèse signale ces prompts dans la liste. - Les modifications s'appliquent après un redémarrage.
- Avec
ADMIN_UI_PROMPTS_EDITOR_ENABLEDà0(onglet Admin UI), les prompts sont en lecture seule.
Administrateurs¶
Menu Administrateurs : comptes et droits d'accès de l'interface Web d'administration. Les modifications prennent effet immédiatement.
Comptes¶
| Champ | Description |
|---|---|
| Identifiant | Nom du compte |
| Mot de passe | Soumis à la politique de mot de passe (ADMIN_UI_PWD_*) |
| Profil | Profil d'administrateur (voir l'onglet Profils) |
| Verrouillé | Un compte verrouillé ne peut pas se connecter |
| Changer le mot de passe à la prochaine connexion | Impose un nouveau mot de passe à la prochaine connexion |
- Ajouter un compte, modifier, verrouiller ou supprimer un compte ; Réinitialiser le mot de passe définit un mot de passe temporaire à changer à la prochaine connexion.
- Vous ne pouvez ni verrouiller ni supprimer votre propre compte, ni supprimer le dernier compte
superadmin. - Le premier mot de passe
superadminest défini en ligne de commande à l'installation (voir Démarrage).
Profils¶
Un profil fixe un niveau d'accès pour chaque page de l'interface Web : aucun accès, lecture seule (RO) ou lecture-écriture (RW).
superadminest intégré, dispose du RW sur toutes les pages et n'est pas modifiable.- Ajouter un profil crée un nouveau profil ; un profil encore attribué à un compte ne peut pas être supprimé.
Clients¶
Menu Clients : les clients MCP (agents IA, scripts) et leurs profils RBAC. Les modifications des clients sont mises en attente et s'appliquent après Appliquer & redémarrer.
Comptes¶
Champs d'un client¶
| Champ | Règles |
|---|---|
| Nom | Identifiant unique, utilisé comme client_id et comme nom du répertoire du client. Lettres, chiffres et tirets. |
| Sujet | Claim JWT sub. Format recommandé : sub-<nom>-AAAAMMJJ. |
| Profil | Profil RBAC du client (voir l'onglet Profils). |
| Mode d'authentification | jwt, oauth2 ou jwt+oauth2. Affiché seulement si AUTH_MODE vaut jwt+oauth2 ; sinon le client utilise le mode global. |
Immuabilité du sujet
Le sujet est intégré dans chaque jeton JWT émis. Le modifier invalide tous les jetons déjà distribués. Choisissez-le avec soin avant de distribuer les jetons.
Identifiants¶
- Après le redémarrage qui crée un client (ou après Réinitialiser les tokens), un bouton Voir les identifiants affiche une seule fois les informations de connexion : URL du serveur,
client_id, jeton JWT et/ouclient_secretOAuth, mis en forme avec le modèle d'affichage. Copiez-les et transmettez-les de manière sécurisée au client. - Réinitialiser les tokens révoque immédiatement le jeton JWT courant et en génère un nouveau. Les jetons d'accès OAuth déjà émis expirent d'eux-mêmes.
Cycle de vie des clients¶
À chaque démarrage, le serveur synchronise les répertoires des clients avec les clients déclarés :
| Condition | Action |
|---|---|
| Nouveau client | Répertoire créé, identifiants générés |
| Client existant, jeton valide | Aucune action |
| Client existant, jeton invalide (expiré, signature invalide, claims modifiés) | Jeton renouvelé automatiquement |
| Client supprimé | Répertoire purgé |
Purge automatique
Supprimer un client puis redémarrer supprime définitivement son répertoire, y compris ses rapports et ses identifiants. Exportez d'abord les données utiles.
Profils¶
Un profil client définit les produits, opérations et commandes qu'un client peut utiliser, ainsi que ses limites de débit par client.
Profils prédéfinis¶
| Profil | Périmètre produits | Opérations AXL | Accès SSH | Accès RIS | Téléphone | RoomOS xAPI | Accès CUPI (CUC) | Limites (req/min) |
|---|---|---|---|---|---|---|---|---|
admin |
Tous | Tous préfixes + SQL Update | Toutes commandes | Toutes classes d'équipement | Screenshot, infos web, message | Status, Configuration (lecture/écriture), toutes les Commands | Tous les verbes (GET/POST/PUT/DELETE) |
60 / 5 / 20 / 100 / 60 / 60 |
operator |
cucm, imp, cuc | get, list + écriture phone + SQLQuery | show uniquement |
Phone uniquement | Screenshot, infos web, message | Status, Configuration (lecture), Phonebook, Message, Standby | GET + PUT ciblés (users, callhandlers) |
30 / 5 / 20 / 100 / 30 / 30 |
auditor |
cucm, imp, cuc | get, list + SQLQuery | show + utils d'audit |
Toutes classes d'équipement | Screenshot, infos web | Status, Configuration (lecture), Phonebook Search | GET /vmrest/ uniquement (lecture seule) |
30 / 5 / 20 / 100 / 30 / 30 |
Colonnes des limites
Les colonnes de limites représentent : AXL / SSH / RIS / Téléphone / RoomOS / Commun (rapports), en requêtes par minute et par client.
Redémarrage des services CUCM (serviceability)
Seul admin accorde cucm_restart_feature_service (préfixe restart). Les feature services (Cisco Tftp, Cisco CallManager…) ne peuvent pas être redémarrés depuis la CLI VOS ; les services réseau / plateforme se redémarrent en CLI avec utils service restart <service> (permission SSH).
Opérations RoomOS sensibles
Les opérations RoomOS sensibles (réinitialisation usine, mise à jour logicielle, clés d'option, macros, HttpClient, gestion des utilisateurs, sécurité, provisioning, et les branches set Configuration correspondantes) apparaissent en tuiles rouges dans la liste RoomOS de chaque profil. Elles sont bloquées par défaut, même pour admin : une opération sous un préfixe sensible n'est autorisée que si ce préfixe (ou un préfixe plus fin) est accordé explicitement — cochez sa tuile pour l'autoriser.
Profils par défaut
Les profils prédéfinis sont installés au premier démarrage et ne sont plus jamais écrasés ensuite : vos modifications sont conservées lors des mises à jour.
Modifier un profil¶
- Ajouter un profil crée un profil à partir d'un modèle (un profil prédéfini ou existant).
- Dans l'éditeur, chaque permission est une tuile : vert = autorisé, rouge = refusé ; cliquez sur une tuile pour l'inverser. Un champ sous chaque liste ajoute des préfixes personnalisés (séparés par des virgules ou des retours à la ligne). Chaque service a sa propre limite de débit (requêtes par minute).
- Comparer affiche les profils sélectionnés côte à côte.
- Les modifications enregistrées s'appliquent sans redémarrage. Un profil encore attribué à un client ne peut pas être supprimé.
Règles de correspondance¶
| Portée | Règle | Exemple |
|---|---|---|
| Préfixe AXL | Toute opération commençant par le préfixe est autorisée | list → autorise listPhone, listLine, listUser, … |
| AXL exact | Correspondance exacte du nom d'opération uniquement | executeSQLQuery → autorise uniquement cet appel |
| Préfixe SSH | La commande doit être égale au préfixe ou commencer par <préfixe> (séparé par un espace) |
show → autorise show version, show interface, … |
| Filtres RIS | Les classes d'équipement et statuts sont optionnels ; s'ils sont absents, aucun filtre n'est appliqué | Phone → limite aux enregistrements de téléphones |
| Préfixe CUPI | Appels CUPI autorisés — correspondance de préfixe sur <MÉTHODE> <chemin> (CUC uniquement) |
GET /vmrest/ → autorise tout GET sous /vmrest/ |
| Préfixe RoomOS | Opération xAPI get Status <chemin> / get Configuration <chemin> / set Configuration <chemin> / Command <chemin>, comparée nœud par nœud ; les préfixes sensibles (réinitialisation usine, macros, sécurité…) exigent une entrée explicite |
Command Phonebook → autorise Command Phonebook Search, Command Phonebook Contact Add, … |
| Préfixe Serviceability | Opération sur feature service CUCM restart <nom du service>, insensible à la casse, mot par mot |
restart → tous les feature services ; restart Cisco Tftp → Cisco Tftp uniquement |
Pas de section SSH
Si un profil n'accorde aucune permission SSH pour un produit, l'accès SSH est refusé pour ce produit.