Vai al contenuto principale

title: “Chiavi API” description: “Documentazione delle chiavi API di AgentEye.”

AgentEye utilizza chiavi API a granularità fine per controllare l’accesso al server. Ogni chiave porta una o più autorizzazioni che determinano cosa può fare.

Autorizzazioni

Il server applica un catalogo fisso di autorizzazioni; ognuna controlla route HTTP specifiche. Una chiave admin le contiene tutte; una chiave con ambito contiene il sottoinsieme che concedi al momento della creazione. Le stringhe di autorizzazione sconosciute vengono rifiutate quando si crea una chiave.
Non assegnabili alle chiavi. Due autorizzazioni valide sono solo per utenti/dashboard e non possono essere concesse a una chiave API: orgs:admin (amministrazione dell’istanza, esclusiva degli operatori) e keys:update. Una richiesta a POST /keys o PATCH /keys/:id che tenta di concedere una di queste viene rifiutata con HTTP 422. Vedi la riga keys:update di seguito per capire perché una chiave bearer può creare chiavi ma non modificarle.

Acquisizione e query di eventi

AutorizzazioneRoute HTTPCosa consente
events:addPOST /eventsAcquisire batch di eventi da un collettore. L’unica autorizzazione di cui ha bisogno un collettore.
events:readGET /events, GET /events/latency_aggregate, GET /events/environments, GET /events/models, GET /sessions/:session_id/exportQuery di eventi, elenco degli ambienti noti, elenco degli identificatori di modelli visti nei dati (utilizzati dalla vista Modelli e dai filtri modello), calcolo dell’aggregato di latenza che alimenta la heat-map / banda percentile ed esportazione di una sessione come JSONL. Gli endpoint di facet della barra filtri condivisa GET /events/environments e GET /events/models sono raggiungibili con events:read o evaluations:read, quindi la pagina sessioni (controllata da evaluations:read) riutilizza lo stesso facet per organizzazione.

Sessioni e valutazioni

AutorizzazioneRoute HTTPCosa consente
evaluations:readGET /sessions, GET /evaluations, GET /evaluations/aggregate, GET /evaluations/environments, GET /evaluation-jobsElencare sessioni, leggere risultati di valutazione, la salute della valutazione ripiegata utilizzata dai dashboard e lo stato della coda di lavoro del worker evaluation-job.
evaluations:triggerPOST /sessions/:session_id/re-evaluateAccodare manualmente una rivalutazione per una sessione completata.

Dashboard

AutorizzazioneRoute HTTPCosa consente
dashboards:readGET /dashboards, GET /dashboards/:id, GET /dashboards/:id/tilesElencare dashboard, caricarne uno e leggere i suoi tile.
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/layoutCreare e modificare dashboard, aggiungere/modificare/rimuovere tile e riordinare la griglia tile.
dashboards:deleteDELETE /dashboards/:idEliminare un intero dashboard (l’eliminazione a livello di tile rientra in dashboards:write).

Query salvate (SQL composer)

AutorizzazioneRoute HTTPCosa consente
queries:readGET /queries, GET /queries/:id, GET /queries/schemaElencare query salvate, caricarne una e ispezionare lo schema ClickHouse di sola lettura verso cui il composer punta.
queries:writePOST /queries, PUT /queries/:idCreare e modificare query salvate. L’SQL viene ancora instradato attraverso lo stesso ruolo di sola lettura e i controlli sql_guard di una chiamata queries:run.
queries:deleteDELETE /queries/:idEliminare una query salvata.
queries:runPOST /queries/runEseguire SQL salvato o ad hoc rispetto al ruolo di sola lettura utilizzato dal composer.

Assistente AI

AutorizzazioneRoute HTTPCosa consente
agent:useGET /agent/conversations, POST /agent/conversations, GET /agent/conversations/:id, PATCH /agent/conversations/:id, DELETE /agent/conversations/:id, PUT /agent/conversations/:id/messagesComunicare con l’assistente AI del dashboard e gestire le tue conversazioni private. Richiesta sull’utente per vedere il dock dell’assistente; la chiave dell’assistente stesso è dashboard-assistant e viene seminata separatamente (vedi sotto).

Chiavi API

AutorizzazioneRoute HTTPCosa consente
keys:createPOST /keysCreare una nuova chiave API con ambito. Non consente di modificare le autorizzazioni di una chiave esistente (quello è keys:update).
keys:readGET /keysElencare chiavi esistenti. I segreti non vengono mai restituiti da questo endpoint.
keys:updatePATCH /keys/:idModificare le autorizzazioni di una chiave esistente. Un’autorizzazione solo per utenti/dashboard; non può essere assegnata a una chiave API (una chiave bearer può creare chiavi ma non modificarle).
keys:disablePOST /keys/:id/disableRevocare una chiave. Le chiavi protette (admin, dashboard-assistant) non possono essere disabilitate; ruotale tramite variabile di ambiente + riavvio.
keys:regeneratePOST /keys/:id/regenerateRuotare il segreto di una chiave. Le chiavi protette non possono essere rigenerate tramite questa route.

Utenti del dashboard

AutorizzazioneRoute HTTPCosa consente
users:createPOST /users, GET /users/defaultsInvitare un nuovo utente del dashboard (invia email + login OTP) e leggere il set di autorizzazioni predefinite configurato nel dashboard utilizzato per inizializzare il modulo di invito.
users:readGET /users, GET /users/:idElencare utenti e caricare un singolo record utente.
users:updatePUT /users/:idModificare le autorizzazioni di un utente. Gli aggiornamenti inoltrano un’email di modifica permessi all’utente interessato e hanno effetto alla sua prossima richiesta; non è richiesto accesso di nuovo.
users:deleteDELETE /users/:id, POST /users/:id/enableDisabilitare un utente (revoca immediatamente le sue sessioni) e riabilitare un utente precedentemente disabilitato.
Queste autorizzazioni supportano la pagina Utenti del dashboard, dove gli ambiti concessi a ogni membro vengono mostrati come chip: La pagina Utenti: una card per utente del dashboard con email, autorizzazioni concesse e controlli modifica/disabilita

Impostazioni operative

AutorizzazioneRoute HTTPCosa consente
settings:readGET /settings, GET /settings/schema, GET /settings/model-context-windows, GET /settings/model-context-windows/resolveVisualizzare le impostazioni operative gestite dal dashboard e i loro metadati; elencare override della finestra di contesto per modello; e risolvere la finestra effettiva per un modello.
settings:writePUT /settings/:key, PUT /settings/model-context-windows, DELETE /settings/model-context-windowsModificare le impostazioni operative e aggiungere, modificare o rimuovere override della finestra di contesto per modello. Le modifiche interessano i nuovi eventi senza riavviare il server.
La pagina Impostazioni: impostazioni operative gestite dal dashboard come accessi consentiti e durate di sessione/OTP, modificabili senza riavvio

Avvisi e incidenti

AutorizzazioneRoute HTTPCosa consente
alerts:readGET /alerts, GET /alerts/:idVisualizzare le definizioni di avviso configurate.
alerts:writePOST /alerts, PUT /alerts/:id, DELETE /alerts/:id, POST /alerts/:id/testCreare, modificare, eliminare e testare le definizioni di avviso.
incidents:readGET /alerts/incidents, GET /alerts/incidents/:iid, GET /alerts/incidents/:iid/comments, GET /alerts/incidents/:iid/subscribersVisualizzare incidenti e il loro percorso di triage.
incidents:writePOST /alerts/:id/incidentsAprire manualmente un incidente su un avviso esistente.
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/unsubscribeRiconoscere, assegnare, risolvere e commentare incidenti.

Audit

AutorizzazioneRoute HTTPCosa consente
audits:readGET /audits, GET /audits/:id, GET /audits/:id/runs, GET /audits/findings, GET /audits/findings/:fidVisualizzare definizioni di audit, cronologia di esecuzione e risultati.
audits:writePOST /audits, PUT /audits/:id, DELETE /audits/:id, POST /audits/:id/run, POST /audits/findings/:fid/statusCreare, modificare, eliminare ed eseguire audit; esaminare i risultati (riconoscere/escludere/respingere/risolvere/riaprire/assegnare).
Quando Audits è stato lanciato, i destinatari esistenti sono stati ampliati selon la stessa forma di ruoli degli avvisi: ogni utente e set di autorizzazioni che contiene alerts:read ha acquisito audits:read, e ogni detentore di alerts:write ha acquisito audits:write. Le chiavi API esistenti non sono state ampliate — concedi esplicitamente audits:* a una chiave se ha bisogno della superficie di audit.
I grant archiviati del token legacy alerts:ack vengono analizzati come incidents:ack quindi gli on-caller mantengono l’accesso senza ricreaere le chiavi. Il token non è più assegnabile dall’editor utenti del dashboard; la matrice offre incidents:ack invece.
L’endpoint del selettore destinatari GET /alerts/recipients (che elenca le email dei membri che un editor di avviso può notificare) è raggiungibile da un detentore di alerts:read o alerts:write, così gli editor di avviso possono popolare il selettore senza che gli venga concesso users:read.
Un visualizzatore di dashboard ha bisogno di entrambi dashboards:read (per caricare le visualizzazioni salvate) e evaluations:read (le metriche di salute vengono calcolate da dati di valutazione). Concedi dashboards:write per consentire a un utente di creare o modificare dashboard, e dashboards:delete per rimuoverli.
/health e /auth/* (richiesta OTP, verifica OTP, controllo sessione, logout) sono senza autenticazione per design; sono il flusso di login e la sonda di vivacità. GET /access-granters richiede una chiave valida ma nessuna autorizzazione specifica, quindi qualsiasi utente connesso può vedere quali admin contattare per le modifiche di accesso.

Set di autorizzazioni

I set di autorizzazioni ti consentono di applicare un ruolo denominato anziché selezionare manualmente singoli token ogni volta. Anziché selezionare una dozzina di autorizzazioni una per una per ogni nuovo utente di dashboard o chiave API, scegli un set e tutti coloro assegnati ad esso portano un grant coerente e verificabile. Modificare un set personalizzato applica il nuovo grant a ogni utente già assegnato ad esso, quindi un cambio di ruolo è una semplice modifica anziché una passata attraverso ogni membro. Ogni organizzazione viene inizializzata con tre set incorporati:
SetAutorizzazioniDestinato a
read-onlyevents:read, keys:read, users:read, evaluations:read, dashboards:read, queries:read, settings:read, alerts:read, audits:read, incidents:readAccesso di sola visualizzazione su ogni superficie operativa.
standardtutto in read-only, più evaluations:trigger, queries:run, incidents:ack, agent:useSolo lettura più le azioni on-caller di tutti i giorni: eseguire query, rivalutare sessioni, riconoscere incidenti e utilizzare l’assistente AI.
adminogni autorizzazione assegnabileControllo completo dell’organizzazione.
I tre set incorporati sono immutabili; i loro nomi significano sempre la stessa cosa, quindi read-only, standard e admin sono sicuri da riferire in policy e onboarding. Un operatore può creare set personalizzati aggiuntivi per modellare ruoli specifici della tua organizzazione (per esempio, un ruolo di autore di dashboard o un ruolo di solo collettore). I set vengono visualizzati nel dashboard e gestiti sull’API in GET /permission-sets (elenca, controllato da users:read) e POST /permission-sets / PUT /permission-sets/:name / DELETE /permission-sets/:name (crea, modifica, elimina un set personalizzato, controllato da settings:write). L’eliminazione o la modifica di un set incorporato viene rifiutata. L’appartenenza al set è ciò che supporta altre due funzionalità:
  • DEFAULT_USER_PERMISSIONS (il grant preselezionato quando un admin apre + nuovo utente) di default al set standard. Vedi Deployment.
  • Il flag --set su agenteye-orgctl (gestione dei membri dell’operatore) inizia un membro da un set denominato, che poi ottimizzi con --add / --remove. Vedi Tenant Management.
Quando un set include un’autorizzazione che non è assegnabile alle chiavi (per esempio un set personalizzato che contiene keys:update), l’inizializzazione di una chiave da quel set scarta i token non assegnabili; il server altrimenti rifiuterebbe la chiave con HTTP 422. Gli utenti del dashboard non sono soggetti a questa restrizione.

Chiave Admin di Bootstrap

La chiave admin è l’unica credenziale root che consente a un operatore di avviare l’accesso dal nulla: con essa puoi creare ogni altra chiave con ambito, invitare i primi utenti del dashboard e configurare l’istanza prima che esista qualsiasi altra chiave. È l’unica chiave che non crei tramite l’API delle chiavi; viene fornita dall’ambiente in modo che il server sia raggiungibile al primo avvio. Imposta la variabile di ambiente ADMIN_KEY sul server. Ad ogni avvio il server esegue un upsert di questo valore come chiave admin con tutte le autorizzazioni. Per ruotare: cambia ADMIN_KEY a un nuovo segreto e riavvia il server.

Ambito dell’organizzazione

Le organizzazioni stesse vengono create e gestite fuori banda da un operatore, non tramite questa API delle chiavi. Il ciclo di vita dell’org e dei membri (creare/rinominare/eliminare/purificare un’org; aggiungere/aggiornare/rimuovere un membro) viene effettuato con il CLI agenteye-orgctl che viene eseguito all’interno del pod del server; non esiste un API HTTP o pulsante nel dashboard per esso. Vedi Tenant Management. Quello che non cambia: le chiavi API per org vengono comunque create nel dashboard (o tramite questa API delle chiavi) dai membri dell’organizzazione. In un deployment multi-org, ogni chiave creata da un membro dell’org (tramite questa API delle chiavi o la pagina Chiavi del dashboard) appartiene a un’organizzazione e può solo leggere o scrivere i dati di quell’org; l’org viene timbrato sulla chiave al momento della creazione e applicato su ogni richiesta. Le due chiavi di bootstrap sono l’unica eccezione: la chiave admin (seminata da ADMIN_KEY) e la chiave dashboard-assistant (seminata da AGENT_API_KEY) sono con scope istanza (non portano org). Il container del dashboard autentica con la chiave admin in modo che possa eseguire il proxy di richieste per org per conto dei membri connessi. I deployment single-tenant non hanno bisogno di pensare a questo; tutte le chiavi appartengono all’org default incorporata.

Creazione di chiavi

Utilizza la chiave admin (o qualsiasi chiave con autorizzazione keys:create) per creare chiavi con ambito aggiuntive.

Chiave collettore (solo acquisizione)

Chiave dashboard (sola lettura)

Quando crei una chiave tramite l’API HTTP, fornisci tu stesso il valore key; scegli un segreto forte e conservalo in sicurezza. (Il dashboard funziona al contrario: genera un segreto forte per te e lo mostra una sola volta alla creazione; vedi Key Management in the Dashboard.) La risposta conferma che la chiave è stata creata:

Elenco delle chiavi

I segreti delle chiavi non vengono restituiti nelle risposte di elenco, solo ID, nomi e autorizzazioni.

Disabilitazione di una chiave

La disabilitazione revoca l’accesso immediatamente senza eliminare il record della chiave.

Rigenerazione di una chiave

Genera un nuovo segreto per una chiave esistente. Il vecchio segreto viene invalidato immediatamente.
La risposta include il nuovo segreto di testo normale, mostrato una sola volta.

Key Management nel Dashboard

La pagina Chiavi nel dashboard fornisce un’interfaccia utente per tutte le operazioni di cui sopra. Hai bisogno di una chiave con autorizzazione keys:read per visualizzare l’elenco, e keys:create / keys:update / keys:disable / keys:regenerate per le azioni di creazione/modifica/disabilitazione/rigenerazione rispettivamente. La modifica delle autorizzazioni di una chiave (keys:update) è separata dalla creazione di una (keys:create), quindi puoi concedere a un operatore la capacità di creare chiavi senza la capacità di ricambiare il campo di applicazione di quelle esistenti, o vice versa. La chiave admin copre tutte queste. Quando crei una chiave dal dashboard non fornisci il segreto; il dashboard genera un segreto forte per te e lo visualizza una sola volta alla creazione. Copialo immediatamente e conservalo in sicurezza; non viene mai mostrato di nuovo, proprio come con una rigenerazione. Puoi comunque scegliere direttamente le autorizzazioni della chiave o inizializzarle da un set di autorizzazioni (vedi sotto). La pagina Chiavi API: una card per chiave che mostra il suo nome, le autorizzazioni concesse e l'ora di creazione, con azioni rigenerare e disabilitare; le chiavi protette come admin sono marcate

Layout di chiave consigliato

ChiaveAutorizzazioniUtilizzato da
admin (bootstrap tramite variabile di ambiente ADMIN_KEY)tutteOps/setup e il container del dashboard (autentica con ADMIN_KEY, esegue proxy delle richieste utente con controlli di autorizzazione)
Chiave collettore per hostevents:addCollettore su ogni macchina agente
dashboard-assistant (bootstrap tramite variabile di ambiente AGENT_API_KEY)events:read, evaluations:read, dashboards:read, dashboards:write, queries:read, queries:write, queries:runContainer assistente AI, seminato automaticamente, protetto; non può essere modificato tramite l’API
Chiave telemetria assistente (opzionale)events:addStrumentazione autonoma dell’assistente AI, se abilitata
Chiave assistente. La chiave dell’assistente viene seminata automaticamente dal server dalla variabile di ambiente AGENT_API_KEY (lo stesso segreto che l’agente presenta come AGENTEYE_API_KEY); non c’è alcun passaggio manuale di creazione delle chiavi e nessuna chiave admin coinvolta. Le sue autorizzazioni sono fissate nel codice sorgente in modo che l’ambito non possa essere allargato da misconfiguration: lettura su eventi/valutazioni/dashboard, più scrittura del dashboard e lettura/scrittura/esecuzione delle query per il flusso di authoring “Chiedi all’AI di scrivere una query”. Tutto l’SQL passa comunque attraverso lo stesso ruolo di sola lettura e i controlli sql_guard di una query scritta dall’utente, quindi ciò allarga la superficie di authoring, non la superficie dati; le operazioni distruttive (queries:delete, dashboards:delete) rimangono deliberatamente fuori dalla chiave dell’assistente. Come la chiave admin, è protetta: non può essere disabilitata o rigenerata tramite l’API delle chiavi, solo ruotata cambiando AGENT_API_KEY e riavviando. Gli utenti del dashboard inoltre hanno bisogno dell’autorizzazione agent:use per vedere e utilizzare l’assistente. Se abiliti l’autostrumentazione, dai all’assistente una chiave separata events:add-only.