Connexion Gratuit pour toujours Démarrer

Outils MSP

Vos RMM effectuent déjà des appels API. Clavitor les sécurise.

Vos techniciens utilisent Datto, N-able et ConnectWise chaque jour. Chaque script, chaque automatisation, chaque tâche planifiée nécessite des identifiants. Aujourd'hui, ils sont dans des variables de script, des champs personnalisés ou un coffre-fort partagé que tout le monde peut lire. Le proxy et la CLI Clavitor changent cela sans modifier vos flux de travail.

Le modèle de proxy pour RMM

Définissez HTTPS_PROXY sur le point de terminaison et vos scripts existants fonctionneront sans modification. Le proxy intercepte les requêtes HTTPS sortantes, résout les références clavitor:// dans les en-têtes et injecte le véritable identifiant. Votre script ne voit jamais le secret. Votre console RMM ne l'enregistre jamais.

# On the managed endpoint — one-time setup
$env:HTTPS_PROXY = "http://localhost:1983"

# Your existing automation scripts work unchanged
# The proxy resolves clavitor:// references in request headers
Invoke-RestMethod -Uri "https://api.openai.com/v1/models" `
  -Headers @{ Authorization = "Bearer clavitor://OpenAI/key" }

PowerShell

PowerShell est le langage quotidien des MSP. La CLI et le proxy fonctionnent nativement.

CLI — valeurs uniques

# Resolve, use, scrub — the credential lives for one statement
$cred = clavitor-cli get "Client-Acme/VPN" --field password
Add-VpnConnection -Name "Acme" -ServerAddress "vpn.acme.com" -AuthenticationMethod MSChapv2
$secure = ConvertTo-SecureString $cred -AsPlainText -Force
Set-VpnConnectionUsernamePassword -ConnectionName "Acme" -Password $secure
Remove-Variable cred, secure

Rendu — modèles de configuration

# Template with clavitor:// references (safe to store in your RMM)
clavitor-cli render monitoring-config.json | `
  Set-Content -Path "C:\ProgramData\Monitor\config.json"

Proxy — injection transparente

$env:HTTPS_PROXY = "http://localhost:1983"

# Every Invoke-RestMethod and Invoke-WebRequest now resolves clavitor://
Invoke-RestMethod -Uri "https://api.datto.com/v1/devices" `
  -Headers @{ Authorization = "Bearer clavitor://Datto API/key" }

Atera

Atera substitue des espaces réservés de champs personnalisés dans les paramètres de script au moment de l'exécution, en utilisant la syntaxe {[Atera.<level>.CustomField.<name>]}. Transmettez le jeton Clavitor à un script d'installation unique en tant que paramètre ; les scripts ultérieurs appellent la CLI sur le point de terminaison.

Installation via le profil d'automatisation informatique

Dans la bibliothèque de scripts Atera, créez un script PowerShell Installer Clavitor avec un paramètre. Dans le profil d'automatisation informatique qui l'exécute, appelez avec l'espace réservé du champ au niveau du client :

Install-Clavitor.ps1 -Token "{[Atera.Customer.CustomField.ClavitorToken]}"

Atera substitue la valeur avant que l'agent ne lise sa liste d'arguments. Le script :

param([Parameter(Mandatory)][string]$Token)
$Token | clavitor-cli init
Remove-Variable Token

Résoudre les identifiants au moment de l'exécution

Une fois le point de terminaison inscrit, tous les scripts Atera ultérieurs lisent les identifiants depuis le coffre-fort — Atera ne détient que l'emplacement du jeton :

$pass = clavitor-cli get "Client-Acme/SQL Server" --field password
$secure = ConvertTo-SecureString $pass -AsPlainText -Force
Invoke-Sqlcmd -ServerInstance "sql.acme.local" `
  -Credential (New-Object PSCredential("sa", $secure)) -Query "SELECT 1"
Remove-Variable pass, secure

ConnectWise Automate

Automate substitue les macros de champ de données supplémentaires (EDF) dans les arguments de script en utilisant la syntaxe {%^el:FieldName^%} (EDF au niveau de l'ordinateur). La CLI s'installe via un script Automate qui télécharge le binaire et appelle une étape PowerShell avec le jeton passé en paramètre — la valeur EDF est remplacée avant l'exécution de l'étape de script.

Script Automate : installation

Dans l'éditeur de script Automate, créez le script avec deux étapes :

Step 1  File Download from LTShare       clavitor-cli.exe → %windir%\Temp\
Step 2  Shell Execute (PowerShell)       Install-Clavitor.ps1 -Token "{%^el:ClavitorToken^%}"

La macro {%^el:ClavitorToken^%} est remplacée par la valeur EDF au niveau de l'ordinateur avant l'exécution du script PowerShell. Conservez les jetons de moins de 255 caractères pour rester dans la limite de substitution de LabReplace. Le script lui-même :

# Install-Clavitor.ps1
param([Parameter(Mandatory)][string]$Token)
$Token | clavitor-cli init
Remove-Variable Token

Script Automate : rotation d'un identifiant de domaine

Les scripts ultérieurs lisent depuis le coffre-fort et écrivent un statut dans l'EDF pour le tableau de bord :

$cred = clavitor-cli get "Client-Delta/Domain Admin" --field password
$secure = ConvertTo-SecureString $cred -AsPlainText -Force
Reset-ComputerMachinePassword `
  -Credential (New-Object PSCredential("administrator", $secure))
# Push timestamp back to EDF "LastRotation" via Automate's ExtraData Set Value step
Write-Output (Get-Date -Format o)
Remove-Variable cred, secure

Datto RMM

Datto RMM expose les variables de site et globales aux composants PowerShell en tant que variables d'environnement avec le préfixe $env: ; les champs définis par l'utilisateur (UDF) sont exposés sous forme de $env:UDF_1 à $env:UDF_30. Un composant installe la CLI ; tout ce qui suit lit depuis le coffre-fort.

Composant : installation et initialisation

Définissez une variable de site ClavitorToken dans la console Datto — elle apparaît dans le composant sous $env:ClavitorToken :

# Datto RMM component: bootstrap Clavitor CLI
# Site variable "ClavitorToken" → $env:ClavitorToken at runtime
$env:ClavitorToken | clavitor-cli init

Composant : moniteur API via le proxy

Les composants ultérieurs écrivent des références clavitor:// dans les en-têtes de requête — le proxy les résout sur l'hôte. L'identifiant n'entre jamais dans la mémoire du script ni dans les journaux de Datto :

# Scheduled monitor — runs every 15 minutes
$env:HTTPS_PROXY = "http://localhost:1983"
$response = Invoke-RestMethod -Uri "https://api.client.com/v1/status" `
  -Headers @{ Authorization = "Bearer clavitor://Client-Bravo/Monitoring API" }

# Push a status code back into UDF_5 for the Datto dashboard
New-ItemProperty -Path "HKLM:\SOFTWARE\CentraStage" `
  -Name "Custom5" -Value $response.status -Force | Out-Null

Kaseya VSA

Les procédures d'agent VSA substituent les macros #variable# dans les arguments PowerShell au moment de l'exécution, puis exécutent le script via la famille d'étapes executePowershell (executePowerShell64BitSystem, etc.). Un champ personnalisé sur l'enregistrement de l'agent contient le jeton Clavitor ; la procédure le transmet à l'initialisation via stdin.

Procédure d'agent : installation

Ajoutez un champ personnalisé d'agent ClavitorToken (Audit → Modifier le profil → Champs personnalisés), puis créez une procédure avec deux étapes :

Step 1  Get File from VSA Server     clavitor-cli.exe → C:\Program Files\Clavitor\
Step 2  Execute PowerShell (64 Sys)  "C:\Program Files\Clavitor\clavitor-cli.exe init" \
                                     stdin = "#vAgentConfiguration.ClavitorToken#"

La macro #vAgentConfiguration.ClavitorToken# est remplacée par la valeur du champ personnalisé avant que VSA n'exécute la commande — le jeton n'apparaît pas dans l'historique des procédures de VSA.

Procédure d'agent : rotation d'un identifiant privilégié

Une fois initialisée, toute procédure ultérieure lit depuis le coffre-fort :

# Executed via executePowerShell64BitSystem
$cred = clavitor-cli get "Client-Hotel/Local Admin" --field password
$secure = ConvertTo-SecureString $cred -AsPlainText -Force
Set-LocalUser -Name "Administrator" -Password $secure
Remove-Variable cred, secure

N-able N-central

L'unité d'automatisation est une AMP (Automation Manager Policy) — une politique basée sur PowerShell construite dans Automation Manager. Les propriétés personnalisées au niveau de l'organisation, du client ou du site peuvent être transmises à un objet Run PowerShell Script en tant que paramètres d'entrée.

AMP : installation avec propriété personnalisée en entrée

Ajoutez une propriété personnalisée ClavitorToken au niveau du client (Administration → Propriétés personnalisées). Dans Automation Manager, créez une AMP dont l'objet Run PowerShell Script lie le paramètre d'entrée Token à cette propriété personnalisée. Le script :

param([Parameter(Mandatory)][string]$Token)
$Token | clavitor-cli init
Remove-Variable Token

La valeur de la propriété personnalisée circule en tant que $Token. Elle n'apparaît jamais dans le XML exporté de l'AMP ni dans le journal d'audit de N-central.

Référentiel de scripts : récupérer un identifiant au moment de l'exécution

Pour les scripts ad hoc poussés via le référentiel de scripts (Configuration → Référentiel → Scripts/Logiciels), le point de terminaison est déjà initialisé — le script appelle simplement la CLI :

$dbPass = clavitor-cli get "Client-Bcme/SQL Server" --field password
$secure = ConvertTo-SecureString $dbPass -AsPlainText -Force
Invoke-Sqlcmd -ServerInstance "sql.bcme.com" `
  -Credential (New-Object PSCredential("sa", $secure)) -Query "SELECT 1"
Remove-Variable dbPass, secure

N-able N-sight

N-sight (anciennement SolarWinds RMM) exécute le même moteur Automation Manager que N-central, ainsi qu'un Gestionnaire de scripts pour les scripts .ps1, AMP, batch et autres. Le modèle reflète N-central : AMP avec un paramètre d'entrée pour le jeton, puis tout le reste se résout au moment de l'exécution.

Gestionnaire de scripts : installation via tâche automatisée

Téléchargez un Install-Clavitor.ps1 dans Paramètres → Gestionnaire de scripts avec un paramètre pour le jeton. Attachez-le en tant que tâche automatisée sur le point de terminaison ; transmettez le jeton en tant qu'argument de script à partir du paramètre au niveau de l'appareil :

param([Parameter(Mandatory)][string]$Token)
$Token | clavitor-cli init
Remove-Variable Token

Tâche automatisée : sauvegarde planifiée avec des identifiants du coffre-fort

Une fois initialisées, les tâches planifiées extraient les identifiants du coffre-fort. Toute sortie standard jusqu'à 255 caractères remonte au tableau de bord N-sight :

$pass = clavitor-cli get "Client-India/SQL Backup" --field password
$secure = ConvertTo-SecureString $pass -AsPlainText -Force
Backup-SqlDatabase -ServerInstance "sql.india.com" -Database "AppDB" `
  -Credential (New-Object PSCredential("backup-svc", $secure))
Write-Output "backup OK $(Get-Date -Format o)"
Remove-Variable pass, secure

NinjaOne

Les scripts NinjaOne exécutés sur le point de terminaison peuvent lire et écrire des champs personnalisés via des cmdlets intégrées : Ninja-Property-Get <name> renvoie la valeur, Ninja-Property-Set <name> <value> la réécrit. Stockez le jeton Clavitor dans un champ personnalisé d'organisation (type Sécurisé pour qu'il soit en écriture seule depuis la console) ; le script d'installation le lit une fois.

Script d'installation : lire le jeton depuis un champ personnalisé

Dans Administration → Bibliothèque → Champs personnalisés, ajoutez un champ d'organisation clavitorToken de type Sécurisé. Exécutez ensuite un script d'installation :

$token = Ninja-Property-Get clavitorToken
$token | clavitor-cli init
Remove-Variable token

Action personnalisée : appel API via le proxy

Une fois installées, les automatisations appellent des API externes via le proxy — l'identifiant n'est jamais copié dans une variable de script :

$env:HTTPS_PROXY = "http://localhost:1983"
$response = Invoke-RestMethod -Uri "https://api.client-echo.com/v1/status" `
  -Headers @{ Authorization = "Bearer clavitor://Client-Echo/Monitoring API" }

# Push the result back to a device custom field for dashboarding
Ninja-Property-Set lastApiStatus $response.status

Syncro

Syncro expose les champs personnalisés et les balises d'actifs en tant que variables de script Plateforme en utilisant la syntaxe double-accolade {{asset_custom_field_<name>}}. Définissez une variable de script de type Plateforme et liez-la au champ — Syncro substitue la valeur dans un paramètre PowerShell au moment de l'exécution du script.

Script Syncro : installation

Créez un champ personnalisé d'actif clavitor_token. Dans l'éditeur de script, déclarez une variable Token de type Plateforme liée à {{asset_custom_field_clavitor_token}} ; transmettez-la à un paramètre PowerShell dans le corps du script :

param([Parameter(Mandatory)][string]$Token)
$Token | clavitor-cli init
Remove-Variable Token

Le panneau Aide rapide en bas de chaque éditeur de script Syncro liste toutes les variables de plateforme disponibles pour le contexte de l'actif, du client et du ticket.

Script Syncro : connexion VPN avec des identifiants du coffre-fort

Après l'installation, les scripts et les remédiations automatisées résolvent les identifiants depuis le coffre-fort et les utilisent directement :

$pass = clavitor-cli get "Client-Golf/VPN" --field password
$secure = ConvertTo-SecureString $pass -AsPlainText -Force
Add-VpnConnection -Name "Golf" -ServerAddress "vpn.golf.com" `
  -AuthenticationMethod MSChapv2 -Force
Set-VpnConnectionUsernamePassword -ConnectionName "Golf" -Password $secure
# Write status back to asset for Syncro dashboard
Rmm-Alert -Category "vpn-status" -Body "Golf connected $(Get-Date -Format o)"
Remove-Variable pass, secure

Pourquoi cela est important pour les MSP

Chaque plateforme RMM stocke les identifiants quelque part — propriétés personnalisées, variables de site, champs de données supplémentaires, paramètres de script. Chaque technicien ayant accès à la console peut les voir. Chaque compromission de votre console RMM expose les identifiants de chaque client.

Clavitor déplace les identifiants hors du RMM. Le RMM ne stocke que le jeton d'agent (un par client). Le jeton accorde un accès à portée limitée au coffre-fort de ce client. Une compromission de votre console RMM expose des jetons, pas des identifiants — et chaque jeton est sur liste blanche d'IP pour le point de terminaison sur lequel il a été déployé.

À portée limitée par client

Chaque coffre-fort client a son propre jeton d'agent. L'accès des techniciens est contrôlé par la portée, et non par « qui peut se connecter à la console RMM ».

Audité par script

Chaque accès aux identifiants est consigné — quel script, quel point de terminaison, quel identifiant, quand. Vos clients peuvent voir la piste d'audit. Vous pouvez prouver qui a accédé à quoi.

Révoqué en un clic

Le client part ? Révoquez son jeton d'agent. Chaque point de terminaison cesse immédiatement de résoudre les identifiants. Pas de mots de passe à faire pivoter, pas de propriétés personnalisées à effacer sur 200 machines.

Arrêtez de stocker des identifiants dans votre RMM.

Une CLI. Chaque client. Chaque identifiant à portée limitée, audité et révocable.