Pular para o conteúdo principal
O AgentEye utiliza API keys com permissões refinadas para controlar o acesso ao servidor. Cada chave carrega uma ou mais permissões que determinam o que ela pode fazer.

Permissões

O servidor aplica um catálogo fixo de permissões; cada uma protege rotas HTTP específicas. Uma chave admin possui todas elas; uma chave com escopo restrito possui apenas o subconjunto que você define na criação. Strings de permissão desconhecidas são rejeitadas ao criar uma chave.
Não atribuíveis a chaves. Duas permissões válidas são exclusivas para humanos/dashboard e não podem ser concedidas a uma API key: orgs:admin (administração da instância, exclusiva do operador) e keys:update. Uma requisição para POST /keys ou PATCH /keys/:id que tente conceder qualquer uma delas será rejeitada com HTTP 422. Veja a linha keys:update abaixo para entender por que uma chave bearer pode criar chaves, mas nunca editá-las.

Ingestão e consulta de eventos

PermissãoRotas HTTPO que permite
events:addPOST /eventsIngerir lotes de eventos de um coletor. É a única permissão que um coletor precisa.
events:readGET /events, GET /events/latency_aggregate, GET /events/environments, GET /events/models, GET /sessions/:session_id/exportConsultar eventos, listar os ambientes conhecidos, listar os identificadores de modelos vistos nos dados (usado pela view de Modelos e filtros de modelo), calcular o agregado de latência que alimenta o mapa de calor/banda de percentil, e exportar uma sessão como JSONL. Os endpoints de faceta do filtro compartilhado GET /events/environments e GET /events/models são acessíveis com events:read ou evaluations:read, de modo que a página de sessões (controlada por evaluations:read) reutiliza a mesma faceta por organização.

Sessões e avaliações

PermissãoRotas HTTPO que permite
evaluations:readGET /sessions, GET /evaluations, GET /evaluations/aggregate, GET /evaluations/environments, GET /evaluation-jobsListar sessões, ler resultados de avaliações, a saúde consolidada de avaliações usada pelos dashboards, e o estado da fila de trabalho de evaluation-jobs.
evaluations:triggerPOST /sessions/:session_id/re-evaluateEnfileirar manualmente uma reavaliação para uma sessão finalizada.

Dashboards

PermissãoRotas HTTPO que permite
dashboards:readGET /dashboards, GET /dashboards/:id, GET /dashboards/:id/tilesListar dashboards, carregar um deles e ler seus tiles.
dashboards:writePOST /dashboards, PUT /dashboards/:id, POST /dashboards/:id/tiles, PUT /dashboards/:id/tiles/:tile_id, DELETE /dashboards/:id/tiles/:tile_id, PUT /dashboards/:id/tiles/layoutCriar e editar dashboards, adicionar/editar/remover tiles e reorganizar o grid.
dashboards:deleteDELETE /dashboards/:idExcluir um dashboard inteiro (a exclusão a nível de tile está em dashboards:write).

Consultas salvas (compositor SQL)

PermissãoRotas HTTPO que permite
queries:readGET /queries, GET /queries/:id, GET /queries/schemaListar consultas salvas, carregar uma delas e inspecionar o schema somente leitura do ClickHouse que o compositor utiliza.
queries:writePOST /queries, PUT /queries/:idCriar e editar consultas salvas. O SQL ainda é roteado pelo mesmo papel somente leitura e pelas verificações do sql_guard, assim como em uma chamada queries:run.
queries:deleteDELETE /queries/:idExcluir uma consulta salva.
queries:runPOST /queries/runExecutar SQL salvo ou ad-hoc contra o papel somente leitura usado pelo compositor.

Assistente de IA

PermissãoRotas HTTPO que permite
agent:useGET /agent/conversations, POST /agent/conversations, GET /agent/conversations/:id, PATCH /agent/conversations/:id, DELETE /agent/conversations/:id, PUT /agent/conversations/:id/messagesConversar com o assistente de IA do dashboard e gerenciar suas próprias conversas (privadas). É necessária no usuário para exibir o painel do assistente; a própria chave do assistente é dashboard-assistant e é inicializada separadamente (veja abaixo).

API Keys

PermissãoRotas HTTPO que permite
keys:createPOST /keysCriar uma nova API key com escopo. Não concede a edição das permissões de uma chave existente (isso é keys:update).
keys:readGET /keysListar as chaves existentes. Segredos nunca são retornados por esse endpoint.
keys:updatePATCH /keys/:idEditar as permissões de uma chave existente. Permissão exclusiva para humanos/dashboard; não pode ser atribuída a uma API key (uma chave bearer pode criar chaves, mas nunca editá-las).
keys:disablePOST /keys/:id/disableRevogar uma chave. Chaves protegidas (admin, dashboard-assistant) não podem ser desabilitadas; faça a rotação via variável de ambiente + reinicialização.
keys:regeneratePOST /keys/:id/regenerateRotacionar o segredo de uma chave. Chaves protegidas não podem ser regeneradas por essa rota.

Usuários do dashboard

PermissãoRotas HTTPO que permite
users:createPOST /users, GET /users/defaultsConvidar um novo usuário do dashboard (envia um email + login OTP) e ler o conjunto de permissões padrão configurado no dashboard, usado para preencher o formulário de convite.
users:readGET /users, GET /users/:idListar usuários e carregar um registro de usuário individual.
users:updatePUT /users/:idEditar as permissões de um usuário. As atualizações enviam um email de mudança de permissão ao usuário afetado e entram em vigor na próxima requisição dele; não é necessário fazer login novamente.
users:deleteDELETE /users/:id, POST /users/:id/enableDesabilitar um usuário (revoga suas sessões imediatamente) e reabilitar um usuário previamente desabilitado.
Essas permissões embasam a página Users do dashboard, onde os escopos concedidos a cada membro são exibidos como chips: A página Users: um card por usuário do dashboard com seu email, permissões concedidas e controles de edição/desabilitação

Configurações operacionais

PermissãoRotas HTTPO que permite
settings:readGET /settings, GET /settings/schema, GET /settings/model-context-windows, GET /settings/model-context-windows/resolveVisualizar as configurações operacionais gerenciadas pelo dashboard e seus metadados; listar overrides de janela de contexto por modelo; e resolver a janela efetiva para um modelo.
settings:writePUT /settings/:key, PUT /settings/model-context-windows, DELETE /settings/model-context-windowsEditar configurações operacionais e adicionar, alterar ou remover overrides de janela de contexto por modelo. As alterações afetam novos eventos sem reiniciar o servidor.
A página Settings: configurações operacionais gerenciadas pelo dashboard, como logins permitidos e durações de sessão/OTP, editáveis sem reinicialização

Alertas e incidentes

PermissãoRotas HTTPO que permite
alerts:readGET /alerts, GET /alerts/:idVisualizar definições de alertas configuradas.
alerts:writePOST /alerts, PUT /alerts/:id, DELETE /alerts/:id, POST /alerts/:id/testCriar, editar, excluir e disparar alertas para teste.
incidents:readGET /alerts/incidents, GET /alerts/incidents/:iid, GET /alerts/incidents/:iid/comments, GET /alerts/incidents/:iid/subscribersVisualizar incidentes e sua trilha de triagem.
incidents:writePOST /alerts/:id/incidentsAbrir um incidente manualmente para um alerta existente.
incidents:ackPOST /alerts/incidents/:iid/ack, POST /alerts/incidents/:iid/assign, POST /alerts/incidents/:iid/resolve, POST /alerts/incidents/:iid/comments, POST /alerts/incidents/:iid/subscribe, POST /alerts/incidents/:iid/unsubscribeReconhecer, atribuir, resolver e comentar em incidentes.

Auditorias

PermissãoRotas HTTPO que permite
audits:readGET /audits, GET /audits/:id, GET /audits/:id/runs, GET /audits/findings, GET /audits/findings/:fidVisualizar definições de auditoria, histórico de execuções e achados.
audits:writePOST /audits, PUT /audits/:id, DELETE /audits/:id, POST /audits/:id/run, POST /audits/findings/:fid/statusCriar, editar, excluir e executar auditorias; fazer triagem de achados (reconhecer/silenciar/descartar/resolver/reabrir/atribuir).
Quando o recurso de Auditorias foi lançado, as concessões existentes foram ampliadas seguindo os mesmos padrões de função dos alertas: todo usuário e conjunto de permissões com alerts:read passou a ter audits:read, e todo portador de alerts:write passou a ter audits:write. As API keys existentes não foram ampliadas — conceda audits:* a uma chave explicitamente caso ela precise acessar a funcionalidade de auditoria.
Concessões armazenadas do token legado alerts:ack são interpretadas como incidents:ack, para que os responsáveis de plantão mantenham o acesso sem precisar gerar novas chaves. O token não é mais atribuível pelo editor de usuários do dashboard; a matriz oferece incidents:ack em seu lugar.
O endpoint de seleção de destinatários GET /alerts/recipients (que lista os emails dos membros que um editor de alerta pode notificar) é acessível por quem possui alerts:read ou alerts:write, de modo que os editores de alertas podem preencher o seletor sem precisar de users:read.
Um visualizador de dashboards precisa de dashboards:read (para carregar as views salvas) e evaluations:read (as métricas de saúde são calculadas a partir de dados de avaliação). Conceda dashboards:write para permitir que um usuário crie ou edite dashboards, e dashboards:delete para removê-los.
/health e /auth/* (solicitação de OTP, verificação de OTP, verificação de sessão, logout) não requerem autenticação por design; fazem parte do fluxo de login e do probe de liveness. GET /access-granters exige uma chave válida, mas nenhuma permissão específica, de modo que qualquer usuário autenticado pode ver quais administradores contatar sobre mudanças de acesso.

Conjuntos de Permissões

Os conjuntos de permissões permitem aplicar uma função nomeada em vez de selecionar tokens individuais manualmente a cada vez. Em vez de escolher uma dúzia de permissões uma a uma para cada novo usuário do dashboard ou API key, você escolhe um conjunto, e todos os que forem atribuídos a ele terão uma concessão consistente e auditável. Editar um conjunto personalizado reaplicará a nova concessão a todos os usuários já atribuídos a ele, de modo que uma mudança de função é uma única edição, não uma varredura por todos os membros. Cada organização é inicializada com três conjuntos padrão:
ConjuntoPermissõesDestinado a
read-onlyevents:read, keys:read, users:read, evaluations:read, dashboards:read, queries:read, settings:read, alerts:read, audits:read, incidents:readAcesso somente leitura em toda a superfície operacional.
standardtudo em read-only, mais evaluations:trigger, queries:run, incidents:ack, agent:useSomente leitura acrescido das ações cotidianas de plantão: executar consultas, reavaliar sessões, reconhecer incidentes e usar o assistente de IA.
admintoda permissão atribuívelControle total da organização.
Os três conjuntos padrão são imutáveis; seus nomes sempre significam a mesma coisa, portanto read-only, standard e admin são seguros para referenciar em políticas e processos de integração. Um operador pode criar conjuntos personalizados adicionais para modelar funções específicas de sua organização (por exemplo, uma função de “autor de dashboard” ou uma função de “somente coletor”). Os conjuntos são expostos no dashboard e gerenciados via API em GET /permission-sets (listagem, controlada por users:read) e POST /permission-sets / PUT /permission-sets/:name / DELETE /permission-sets/:name (criar, editar, excluir um conjunto personalizado, controlado por settings:write). Excluir ou editar um conjunto padrão é recusado. A associação a conjuntos embase dois outros recursos:
  • DEFAULT_USER_PERMISSIONS (a concessão pré-selecionada quando um admin abre + novo usuário) tem como padrão o conjunto standard. Veja Deployment.
  • A flag --set no agenteye-orgctl (gerenciamento de membros pelo operador) inicia um membro a partir de um conjunto nomeado, que você pode ajustar com --add / --remove. Veja Tenant Management.
Quando um conjunto inclui uma permissão não atribuível a chaves (por exemplo, um conjunto personalizado com keys:update), ao inicializar uma chave a partir desse conjunto, os tokens não atribuíveis são descartados; caso contrário, o servidor rejeitaria a chave com HTTP 422. Usuários do dashboard não estão sujeitos a essa restrição.

Chave Admin de Bootstrap

A chave admin é a credencial raiz única que permite a um operador iniciar o acesso do zero: com ela você pode criar todas as outras chaves com escopo, convidar os primeiros usuários do dashboard e configurar a instância antes que qualquer outra chave exista. É a única chave que você não cria pela API de chaves; ela é provisionada a partir do ambiente para que o servidor seja acessível na primeira inicialização. Defina a variável de ambiente ADMIN_KEY no servidor. Em cada inicialização, o servidor faz upsert desse valor como uma chave admin com todas as permissões. Para rotacionar: altere ADMIN_KEY para um novo segredo e reinicie o servidor.

Escopo de organização

As organizações em si são criadas e gerenciadas fora de banda por um operador, não por esta API de chaves. O ciclo de vida de organizações e membros (criar/renomear/excluir/purgar uma organização; adicionar/atualizar/remover um membro) é realizado com a CLI agenteye-orgctl, que roda dentro do pod do servidor; não há API HTTP ou botão no dashboard para isso. Veja Tenant Management. O que não muda: as API keys por organização ainda são criadas no dashboard (ou via esta API de chaves) pelos membros da organização. Em uma implantação multi-organização, toda chave criada por um membro (por esta API de chaves ou pela página Keys do dashboard) pertence a uma organização e só pode ler ou escrever os dados dessa organização; a organização é registrada na chave no momento da criação e verificada em cada requisição. As duas chaves de bootstrap são a única exceção: a chave admin (inicializada a partir de ADMIN_KEY) e a chave dashboard-assistant (inicializada a partir de AGENT_API_KEY) têm escopo de instância (não carregam organização). O container do dashboard autentica com a chave admin para que possa fazer proxy de requisições por organização em nome dos membros autenticados. Implantações single-tenant não precisam se preocupar com isso; todas as chaves pertencem à organização padrão default.

Criando Chaves

Use a chave admin (ou qualquer chave com permissão keys:create) para criar chaves adicionais com escopo.

Chave de coletor (somente ingestão)

Chave de dashboard (somente leitura)

Ao criar uma chave pela API HTTP, você fornece o valor de key você mesmo; escolha um segredo forte e armazene-o com segurança. (O dashboard funciona de forma diferente: ele gera um segredo forte para você e o exibe uma única vez na criação; veja Gerenciamento de Chaves no Dashboard.) A resposta confirma que a chave foi criada:

Listando Chaves

Os segredos das chaves não são retornados nas respostas de listagem; apenas IDs, nomes e permissões.

Desabilitando uma Chave

Desabilitar revoga o acesso imediatamente sem excluir o registro da chave.

Regenerando uma Chave

Gera um novo segredo para uma chave existente. O segredo antigo é invalidado imediatamente.
A resposta inclui o novo segredo em texto simples, exibido apenas uma vez.

Gerenciamento de Chaves no Dashboard

A página Keys no dashboard oferece uma interface para todas as operações acima. Você precisa de uma chave com permissão keys:read para visualizar a lista, e keys:create / keys:update / keys:disable / keys:regenerate para as ações de criar/editar/desabilitar/regenerar, respectivamente. Editar as permissões de uma chave (keys:update) é separado de criá-la (keys:create), de modo que você pode conceder a um operador a capacidade de criar chaves sem a capacidade de reatribuir o escopo das existentes, ou vice-versa. A chave admin cobre todas essas operações. Ao criar uma chave pelo dashboard, você não fornece o segredo; o dashboard gera um segredo forte para você e o exibe uma única vez na criação. Copie-o imediatamente e armazene-o com segurança; ele nunca será exibido novamente, exatamente como acontece com uma regeneração. Você ainda pode escolher as permissões da chave diretamente, ou inicializá-las a partir de um conjunto de permissões (veja abaixo). A página API Keys: um card por chave mostrando nome, permissões concedidas e data de criação, com ações de regenerar e desabilitar; chaves protegidas como admin são marcadas

Layout de Chaves Recomendado

ChavePermissõesUsada por
admin (bootstrap via variável de ambiente ADMIN_KEY)todasOperações/configuração, e o container do dashboard (autentica com ADMIN_KEY, faz proxy de requisições de usuários com verificações de permissão)
Chave de coletor por hostevents:addColetor em cada máquina de agente
dashboard-assistant (bootstrap via variável de ambiente AGENT_API_KEY)events:read, evaluations:read, dashboards:read, dashboards:write, queries:read, queries:write, queries:runContainer do assistente de IA, inicializado automaticamente, protegido; não pode ser editado pela API
Chave de telemetria do assistente (opcional)events:addAuto-instrumentação do assistente de IA, se habilitada
Chave do assistente. A chave do assistente é inicializada automaticamente pelo servidor a partir da variável de ambiente AGENT_API_KEY (o mesmo segredo que o agente apresenta como AGENTEYE_API_KEY); não há etapa manual de criação de chave nem envolvimento da chave admin. Suas permissões são fixadas no código-fonte para que o escopo não possa ser ampliado por configuração incorreta: leitura de eventos/avaliações/dashboards, mais escrita em dashboards e leitura/escrita/execução de consultas para o fluxo de criação de consultas via IA. Todo SQL ainda passa pelo mesmo papel somente leitura e pelas verificações do sql_guard que uma consulta escrita por um usuário, portanto isso amplia a superfície de criação, não a superfície de dados; operações destrutivas (queries:delete, dashboards:delete) são deliberadamente mantidas fora da chave do assistente. Assim como a chave admin, ela é protegida: não pode ser desabilitada ou regenerada pela API de chaves, apenas rotacionada alterando AGENT_API_KEY e reiniciando. Usuários do dashboard também precisam da permissão agent:use para ver e usar o assistente. Se você habilitar a auto-instrumentação, forneça ao assistente uma chave separada somente com events:add.