Condividi tramite


Sicurezza e distribuzione

DevUI è progettato come applicazione di esempio per lo sviluppo locale. Questa pagina illustra le considerazioni sulla sicurezza e le procedure consigliate se è necessario esporre DevUI oltre localhost.

Avviso

DevUI non è destinato all'uso in produzione. Per le distribuzioni di produzione, creare un'interfaccia personalizzata usando Agent Framework SDK con misure di sicurezza appropriate.

Prossimamente

La documentazione di DevUI per C# sarà presto disponibile. Si prega di controllare più tardi o fare riferimento alla documentazione di Python per indicazioni concettuali.

Modalità dell'interfaccia utente

DevUI offre due modalità che controllano l'accesso alle funzionalità:

Modalità sviluppatore (impostazione predefinita)

Accesso completo a tutte le funzionalità:

  • Pannello di debug con informazioni di traccia
  • Ricaricamento rapido per lo sviluppo rapido (/v1/entities/{id}/reload)
  • Strumenti di distribuzione (/v1/deployments)
  • Messaggi di errore dettagliati per il debug
devui ./agents  # Developer mode is the default

Modalità utente

Interfaccia semplificata con restrizioni:

  • Interfaccia di chat e gestione delle conversazioni
  • Elenco di entità e informazioni di base
  • API per sviluppatori disabilitate (ricaricamento rapido, distribuzione)
  • Messaggi di errore generici (dettagli registrati lato server)
devui ./agents --mode user

Authentication

Abilitare l'autenticazione con token Bearer utilizzando il flag --auth.

devui ./agents --auth

Quando l'autenticazione è abilitata:

  • Per localhost: un token viene generato automaticamente e visualizzato nella console
  • Per le distribuzioni esposte alla rete : è necessario fornire un token tramite DEVUI_AUTH_TOKEN variabile o --auth-token flag di ambiente
# Auto-generated token (localhost only)
devui ./agents --auth

# Custom token via CLI
devui ./agents --auth --auth-token "your-secure-token"

# Custom token via environment variable
export DEVUI_AUTH_TOKEN="your-secure-token"
devui ./agents --auth --host 0.0.0.0

Tutte le richieste API devono includere un token di connessione valido nell'intestazione Authorization :

curl http://localhost:8080/v1/entities \
  -H "Authorization: Bearer your-token-here"

Se è necessario esporre DevUI agli utenti finali (non consigliato per la produzione):

devui ./agents --mode user --auth --host 0.0.0.0

Questa configurazione:

  • Limita le API rivolte agli sviluppatori
  • Richiede l'autenticazione
  • Si associa a tutte le interfacce di rete

Funzionalità di sicurezza

DevUI include diverse misure di sicurezza:

Caratteristica / Funzionalità Descrzione
Collegamento Localhost Associa a 127.0.0.1 per impostazione predefinita
Modalità utente Limita le API per sviluppatori
Autenticazione con token Autenticazione facoltativa basata su token
Caricamento di entità locali Carica solo le entità da percorsi locali o in memoria
Nessuna esecuzione remota Nessuna funzionalità di esecuzione del codice remoto

Migliori pratiche

Gestione delle credenziali

  • Archiviare chiavi API e segreti nei .env file
  • Non eseguire mai il commit dei .env file nel controllo del codice sorgente
  • Utilizzare i file .env.example per documentare le variabili richieste
# .env.example (safe to commit)
OPENAI_API_KEY=your-api-key-here
AZURE_OPENAI_ENDPOINT=https://your-resource.openai.azure.com/

# .env (never commit)
OPENAI_API_KEY=sk-actual-key
AZURE_OPENAI_ENDPOINT=https://my-resource.openai.azure.com/

Sicurezza di rete

  • Mantenere DevUI associato a localhost per lo sviluppo
  • Usare un proxy inverso (nginx, Caddy) se è necessario l'accesso esterno
  • Abilitare HTTPS tramite il proxy inverso
  • Implementare l'autenticazione corretta a livello di proxy

Sicurezza dell'entità

  • Esaminare tutto il codice agente/flusso di lavoro prima di eseguire
  • Caricare solo entità da origini attendibili
  • Prestare attenzione con gli strumenti che hanno effetti collaterali (accesso ai file, chiamate di rete)

Pulizia delle risorse

Registrare gli hook di pulizia per chiudere correttamente le credenziali e le risorse alla chiusura.

from azure.identity.aio import DefaultAzureCredential
from agent_framework import Agent
from agent_framework.azure import AzureOpenAIChatClient
from agent_framework_devui import register_cleanup, serve

credential = DefaultAzureCredential()
client = AzureOpenAIChatClient()
agent = Agent(name="MyAgent", chat_client=client)

# Register cleanup hook - credential will be closed on shutdown
register_cleanup(agent, credential.close)
serve(entities=[agent])

Considerazioni sugli strumenti MCP

Quando si usano gli strumenti MCP (Model Context Protocol) con DevUI:

# Correct - DevUI handles cleanup automatically
mcp_tool = MCPStreamableHTTPTool(url="http://localhost:8011/mcp", chat_client=chat_client)
agent = Agent(tools=mcp_tool)
serve(entities=[agent])

Importante

Non usare async with i gestori del contesto durante la creazione di agenti con strumenti MCP per DevUI. Le connessioni verranno chiuse prima dell'esecuzione. Gli strumenti MCP usano l'inizializzazione pigra e si connettono automaticamente al primo utilizzo.

Passaggi successivi