Поделиться через


Безопасность и развертывание

DevUI разработан в качестве примера приложения для локальной разработки. На этой странице рассматриваются вопросы безопасности и рекомендации, если необходимо предоставить DevUI за пределами localhost.

Предупреждение

DevUI не предназначен для использования в рабочей среде. Для рабочих развертываний создайте собственный пользовательский интерфейс с помощью пакета SDK agent Framework с соответствующими мерами безопасности.

Ожидается в скором времени

В ближайшее время ожидается документация по DevUI для C#. Вернитесь позже или ознакомьтесь с документацией по Python для получения концептуальных рекомендаций.

Режимы пользовательского интерфейса

DevUI предлагает два режима управления доступом к функциям:

Режим разработчика (по умолчанию)

Полный доступ ко всем функциям:

  • Панель отладки, содержащая информацию о трассировании
  • Горячая перезагрузка для быстрой разработки (/v1/entities/{id}/reload)
  • Средства развертывания (/v1/deployments)
  • Развернутые сообщения об ошибках для отладки
devui ./agents  # Developer mode is the default

Режим пользователя

Упрощенный, ограниченный интерфейс:

  • Интерфейс чата и управление беседами
  • Перечисление сущностей и основные сведения
  • Api-интерфейсы разработчика отключены (горячая перезагрузка, развертывание)
  • Универсальные сообщения об ошибках (сведения, зарегистрированные на стороне сервера)
devui ./agents --mode user

Authentication

Включите проверку подлинности маркера носителя с помощью флага --auth :

devui ./agents --auth

Если включена проверка подлинности:

  • Для localhost: маркер создается автоматически и отображается в консоли.
  • Для сетевых развертываний: необходимо предоставить маркер с помощью DEVUI_AUTH_TOKEN переменной среды или --auth-token флага.
# 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

Все запросы API должны содержать допустимый маркер носителя в заголовке Authorization :

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

Если необходимо предоставить DevUI конечным пользователям (не рекомендуется для рабочей среды):

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

Эта конфигурация:

  • Ограничивает API, ориентированные на разработчиков
  • Требуется проверка подлинности
  • Привязывается ко всем сетевым интерфейсам

Функции безопасности

DevUI включает несколько мер безопасности:

Функция Description
Привязка к Localhost Привязка к 127.0.0.1 по умолчанию
Режим пользователя Ограничивает API разработчика
Проверка подлинности носителя Необязательная проверка подлинности на основе токенов
Загрузка локальной сущности Загружает только сущности из локальных каталогов или в памяти
Нет удаленного выполнения Нет возможностей удаленного выполнения кода

Лучшие практики

Управление учетными данными

  • Хранение ключей и секретов API в .env файлах
  • Никогда не коммитьте .env файлы в систему управления версиями
  • Использование .env.example файлов для документирования обязательных переменных
# .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/

Сетевая безопасность

  • Сохранение привязки DevUI к localhost для разработки
  • Используйте обратный прокси-сервер (nginx, Caddy), если требуется внешний доступ
  • Включение HTTPS через обратный прокси-сервер
  • Реализация правильной проверки подлинности на уровне прокси-сервера

Защита сущностей

  • Перед выполнением просмотрите весь код агента или рабочего процесса
  • Только загружайте сущности из доверенных источников
  • Будьте осторожны с инструментами, которые имеют побочные эффекты (доступ к файлам, сетевые вызовы)

Очистка ресурсов

Зарегистрируйте хуки очистки, чтобы корректно закрыть учетные данные и ресурсы при завершении работы.

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])

Соображения о средствах MCP

При использовании средств MCP (протокол контекста модели) с 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])

Это важно

Не используйте async with диспетчеры контекстов при создании агентов с помощью средств MCP для DevUI. Подключения закроются перед выполнением. Средства MCP используют отложенную инициализацию и автоматически подключаются при первом использовании.

Дальнейшие шаги