Zabezpečení a nasazení

DevUI je navržená jako ukázková aplikace pro místní vývoj. Tato stránka se zabývá aspekty zabezpečení a osvědčenými postupy, pokud potřebujete vystavit DevUI mimo localhost.

Warning

DevUI není určen pro produkční použití. V případě produkčních nasazení vytvořte vlastní rozhraní pomocí sady SDK pro rozhraní Agent Framework s příslušnými bezpečnostními opatřeními.

Již brzy

Dokumentace k DevUI pro C# bude brzy k dispozici. Zkontrolujte to prosím později nebo se obraťte na dokumentaci k Pythonu pro konceptuální pokyny.

Režimy uživatelského rozhraní

DevUI nabízí dva režimy, které řídí přístup k funkcím:

Vývojářský režim (výchozí)

Úplný přístup ke všem funkcím:

  • Panel ladění s trasovacím informacemi
  • Opětovné načítání za provozu pro rychlý vývoj (/v1/entities/{id}/reload)
  • Nástroje pro nasazení (/v1/deployments)
  • Podrobné chybové zprávy pro ladění
devui ./agents  # Developer mode is the default

Uživatelský režim

Zjednodušené, omezené rozhraní:

  • Rozhraní chatu a správa konverzací
  • Výpis entit a základní informace
  • Zakázaná rozhraní API pro vývojáře (opětovné načítání za provozu, nasazení)
  • Obecné chybové zprávy (podrobnosti protokolované na straně serveru)
devui ./agents --mode user

Autentizace

Ověřování pomocí tokenu Bearer je ve výchozím nastavení povolené. V případě vazby zpětné smyčky vygeneruje DevUI token a zobrazí ho v konzole:

devui ./agents

Pro opakovatelný token nastavte DEVUI_AUTH_TOKEN nebo použijte --auth-token. Bind bez zpětné smyčky vyžaduje explicitní token a bez něj selže:

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

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

Všechny požadavky rozhraní API musí obsahovat token v Authorization hlavičce:

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

Používejte --no-auth pouze pro izolovaný loopback vývoj. DevUI odmítá neověřená navázání mimo zpětnou smyčku a dokonce i režim zpětné smyčky bez ověřování odstraňuje ochranu proti požadavkům odesílaným nepřátelskými weby.

Pokud potřebujete zpřístupnit DevUI koncovým uživatelům (nedoporučuje se pro produkční prostředí):

DEVUI_AUTH_TOKEN="<secure-dev-token>" devui ./agents --mode user --host 0.0.0.0

Tato konfigurace:

  • Omezuje rozhraní API určená pro vývojáře.
  • Vyžaduje ověření.
  • Vazby ke všem síťovým rozhraním

Funkce zabezpečení

DevUI zahrnuje několik bezpečnostních opatření:

funkce Description
Propojení na localhost Připojuje se k 127.0.0.1 ve výchozím nastavení
Uživatelský režim Omezení rozhraní API pro vývojáře
Autentizace Ověřování pomocí tokenu Bearer je ve výchozím nastavení povolené.
Režim bez ověřování Povoleno pouze na localhost nebo 127.0.0.1
Síťové vazby Je vyžadováno DEVUI_AUTH_TOKEN nebo --auth-token
Načítání místní entity Načítá pouze entity z místních adresářů nebo z paměti.
Žádné vzdálené spuštění Žádné možnosti vzdáleného spouštění kódu

Osvědčené postupy

Správa přihlašovacích údajů

  • Ukládání klíčů rozhraní API a tajných kódů v .env souborech
  • Nikdy neschovávejte .env soubory do správy zdrojového kódu
  • Použití .env.example souborů k dokumentaci požadovaných proměnných
# .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/

Zabezpečení sítě

  • Udržte DevUI přiřazený k localhostu pro vývoj
  • Pokud je potřeba externí přístup, použijte reverzní proxy server (nginx, Caddy).
  • Povolení HTTPS prostřednictvím reverzního proxy serveru
  • Implementace správného ověřování na úrovni proxy serveru

Zabezpečení entit

  • Kontrola veškerého kódu agenta nebo pracovního postupu před spuštěním
  • Načítejte pouze entity z důvěryhodných zdrojů
  • Buďte opatrní u nástrojů, které mají vedlejší účinky (přístup k souborům, síťová volání)

Vyčištění zdrojů

Registrace čisticích háčků pro správné zavření přihlašovacích údajů a prostředků při vypínání.

import os
from azure.identity.aio import DefaultAzureCredential
from agent_framework import Agent
from agent_framework.openai import OpenAIChatCompletionClient
from agent_framework_devui import register_cleanup, serve

credential = DefaultAzureCredential()
client = OpenAIChatCompletionClient(
    model=os.environ["AZURE_OPENAI_CHAT_COMPLETION_MODEL"],
    azure_endpoint=os.environ["AZURE_OPENAI_ENDPOINT"],
    api_version=os.getenv("AZURE_OPENAI_API_VERSION"),
    credential=credential,
)
agent = Agent(name="MyAgent", client=client)

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

Důležité informace o nástrojích MCP

Při použití nástrojů MCP (Model Context Protocol) s DevUI:

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

Důležité

Při vytváření agentů s nástroji MCP pro DevUI nepoužívejte async with kontextové manažery. Připojení se před provedením zavřou. Nástroje MCP používají opožděnou inicializaci a automaticky se připojují při prvním použití.

Poznámka:

Podpora této funkce v Go již brzy. Nejnovější stav najdete v úložišti Agent Framework Go .

Další kroky