Ferramentas MSP
Seu RMM já faz chamadas de API. O Clavitor as torna seguras.
Seus técnicos usam Datto, N-able e ConnectWise todos os dias. Cada script, cada automação, cada tarefa agendada precisa de credenciais. Hoje elas estão em variáveis de script, campos personalizados ou um cofre compartilhado que todos podem ler. O proxy e o CLI do Clavitor mudam isso sem alterar seus fluxos de trabalho.
O padrão de proxy para RMM
Defina HTTPS_PROXY no endpoint e seus scripts existentes funcionarão sem alterações. O proxy intercepta requisições HTTPS de saída, resolve referências clavitor:// em cabeçalhos e injeta a credencial real. Seu script nunca vê o segredo. Seu console RMM nunca o registra.
# 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 é a linguagem diária do MSP. Tanto o CLI quanto o proxy funcionam nativamente.
CLI — valores únicos
# 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
Renderizar — modelos de configuração
# 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 — injeção 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 substitui placeholders de campos personalizados em parâmetros de script no momento da execução, usando a sintaxe {[Atera.<level>.CustomField.<name>]}. Passe o token do Clavitor para um script de instalação único como parâmetro; scripts posteriores chamam o CLI no endpoint.
Instalar via perfil de Automação de TI
Na biblioteca de scripts da Atera, crie um script PowerShell Instalar Clavitor com um parâmetro. No perfil de Automação de TI que o executa, invoque com o placeholder de campo no nível do cliente:
Install-Clavitor.ps1 -Token "{[Atera.Customer.CustomField.ClavitorToken]}"Atera substitui o valor antes que o agente leia sua lista de argumentos. O script:
param([Parameter(Mandatory)][string]$Token) $Token | clavitor-cli init Remove-Variable Token
Resolver credenciais em tempo de execução
Uma vez que o endpoint é registrado, todos os scripts posteriores da Atera leem credenciais do cofre — a Atera detém apenas o slot do token:
$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, secureConnectWise Automate
Automate substitui macros de Extra Data Field (EDF) em argumentos de etapas de script usando a sintaxe {%^el:FieldName^%} (EDF no nível do computador). O CLI é instalado via um script Automate que baixa o binário e invoca uma etapa PowerShell com o token passado como parâmetro — o valor do EDF é substituído antes que a etapa do script seja executada.
Script Automate: instalar
No editor de scripts Automate, crie o script com duas etapas:
Step 1 File Download from LTShare clavitor-cli.exe → %windir%\Temp\
Step 2 Shell Execute (PowerShell) Install-Clavitor.ps1 -Token "{%^el:ClavitorToken^%}"A macro {%^el:ClavitorToken^%} é substituída pelo valor do EDF no nível do computador antes que a etapa PowerShell seja executada. Mantenha tokens com menos de 255 caracteres para permanecer dentro do limite de substituição do LabReplace. O script em si:
# Install-Clavitor.ps1 param([Parameter(Mandatory)][string]$Token) $Token | clavitor-cli init Remove-Variable Token
Script Automate: rotacionar uma credencial de domínio
Scripts subsequentes leem do cofre e escrevem um status de volta para o EDF para dashboard:
$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, secureDatto RMM
Datto RMM expõe variáveis de site e globais para componentes PowerShell como variáveis de ambiente com o prefixo $env:; campos definidos pelo usuário (UDFs) são expostos como $env:UDF_1 a $env:UDF_30. Um componente instala o CLI; tudo o que vem depois lê do cofre.
Componente: instalar e inicializar
Defina uma variável de site ClavitorToken no console Datto — ela aparece dentro do componente como $env:ClavitorToken:
# Datto RMM component: bootstrap Clavitor CLI # Site variable "ClavitorToken" → $env:ClavitorToken at runtime $env:ClavitorToken | clavitor-cli init
Componente: monitor de API via proxy
Componentes subsequentes escrevem referências clavitor:// em cabeçalhos de requisição — o proxy as resolve no host. A credencial nunca entra na memória do script ou nos logs do 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-NullKaseya VSA
Procedimentos do agente VSA substituem macros #variable# em argumentos PowerShell no momento da execução, e então executam o script via a família de etapas executePowershell (executePowerShell64BitSystem, etc.). Um Campo Personalizado no registro do agente contém o token do Clavitor; o procedimento o passa para a inicialização via stdin.
Procedimento do agente: instalar
Adicione um Campo Personalizado do agente ClavitorToken (Auditoria → Editar Perfil → Campos Personalizados), então construa um procedimento com duas etapas:
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#"A macro #vAgentConfiguration.ClavitorToken# é substituída pelo valor do Campo Personalizado antes que o VSA execute o comando — o token não aparece no histórico de procedimentos do VSA.
Procedimento do agente: rotacionar uma credencial privilegiada
Uma vez inicializado, qualquer procedimento posterior lê do cofre:
# 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
A unidade de automação é um AMP (Automation Manager Policy) — uma política baseada em PowerShell construída no Automation Manager. Propriedades Personalizadas nos níveis de organização, cliente ou site podem ser passadas para um objeto Run PowerShell Script como Parâmetros de Entrada.
AMP: instalar com Propriedade Personalizada como entrada
Adicione uma Propriedade Personalizada ClavitorToken no nível do cliente (Administração → Propriedades Personalizadas). No Automation Manager, crie um AMP cujo objeto Run PowerShell Script vincule o Parâmetro de Entrada Token a essa Propriedade Personalizada. O script:
param([Parameter(Mandatory)][string]$Token) $Token | clavitor-cli init Remove-Variable Token
O valor da Propriedade Personalizada flui como $Token. Ele nunca aparece no XML exportado do AMP ou no registro de auditoria do N-central.
Repositório de Scripts: buscar uma credencial em tempo de execução
Para scripts ad-hoc enviados via o Repositório de Scripts (Configuração → Repositório → Scripts/Software), o endpoint já está inicializado — o script apenas chama o 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, secureN-able N-sight
N-sight (anteriormente SolarWinds RMM) executa o mesmo motor Automation Manager que o N-central, mais um Script Manager para .ps1, AMP, batch e outros tipos de script. O padrão espelha o N-central: AMP com um Parâmetro de Entrada para o token, então todo o resto é resolvido em tempo de execução.
Script Manager: instalar via Tarefa Automatizada
Faça upload de um Install-Clavitor.ps1 para Configurações → Script Manager com um parâmetro para o token. Anexe-o como uma Tarefa Automatizada no endpoint; passe o token como um argumento de script da configuração no nível do dispositivo:
param([Parameter(Mandatory)][string]$Token) $Token | clavitor-cli init Remove-Variable Token
Tarefa Automatizada: backup agendado com credenciais do cofre
Uma vez inicializadas, tarefas agendadas buscam credenciais do cofre. Qualquer saída padrão de até 255 caracteres aparece de volta no painel do 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, secureNinjaOne
Scripts NinjaOne executados no endpoint podem ler e escrever campos personalizados através de cmdlets integrados: Ninja-Property-Get <name> retorna o valor, Ninja-Property-Set <name> <value> o grava de volta. Armazene o token do Clavitor em um campo personalizado de organização (tipo Seguro para que seja somente escrita do console); o script de instalação o lê uma vez.
Script de instalação: ler token de campo personalizado
Em Administração → Biblioteca → Campos Personalizados, adicione um campo de organização clavitorToken do tipo Seguro. Em seguida, execute um script de instalação:
$token = Ninja-Property-Get clavitorToken $token | clavitor-cli init Remove-Variable token
Ação Personalizada: chamada de API via proxy
Uma vez instalado, automações chamam APIs externas via proxy — a credencial nunca é copiada para uma variável 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.statusSyncro
Syncro expõe campos personalizados de ativos e tags como variáveis de script Plataforma usando a sintaxe de dupla chave {{asset_custom_field_<name>}}. Defina uma variável de script do tipo Plataforma e vincule-a ao campo — Syncro substitui o valor em um parâmetro PowerShell no momento da execução do script.
Script Syncro: instalar
Crie um campo personalizado de ativo clavitor_token. No editor de script, declare uma variável Token do tipo Plataforma vinculada a {{asset_custom_field_clavitor_token}}; passe-a para um parâmetro PowerShell no corpo do script:
param([Parameter(Mandatory)][string]$Token) $Token | clavitor-cli init Remove-Variable Token
O painel Ajuda Rápida na parte inferior de cada editor de script Syncro lista todas as variáveis de plataforma disponíveis para o contexto de ativo, cliente e ticket.
Script Syncro: conectar VPN com credenciais do cofre
Após a instalação, scripts e Remediações Automatizadas resolvem credenciais do cofre e as usam diretamente:
$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
Por que isso importa para MSPs
Cada plataforma RMM armazena credenciais em algum lugar — propriedades personalizadas, variáveis de site, campos de dados extras, parâmetros de script. Todo técnico com acesso ao console pode vê-las. Cada violação do seu console RMM expõe as credenciais de cada cliente.
Clavitor move as credenciais para fora do RMM. O RMM armazena apenas o token do agente (um por cliente). O token concede acesso com âmbito limitado ao cofre desse cliente. Uma violação do seu console RMM expõe tokens, não credenciais — e cada token é IP-whitelisted para o endpoint em que foi implantado.
Com âmbito limitado por cliente
Cada cofre de cliente tem seu próprio token de agente. O acesso do técnico é controlado por âmbito limitado, não por "quem pode fazer login no console RMM".
Auditado por script
Cada acesso a credencial é registrado — qual script, qual endpoint, qual credencial, quando. Seus clientes podem ver o rastro de auditoria. Você pode provar quem acessou o quê.
Revogado em um clique
Cliente saiu? Revogue o token do agente deles. Cada endpoint para de resolver credenciais imediatamente. Sem senhas para rotacionar, sem propriedades personalizadas para limpar em 200 máquinas.
Pare de armazenar credenciais no seu RMM.
Um CLI. Cada cliente. Cada credencial com âmbito limitado, auditada e revogável.