Partager via


Sécurité & Déploiement

DevUI est conçu comme exemple d’application pour le développement local. Cette page aborde les considérations relatives à la sécurité et les bonnes pratiques si vous devez exposer DevUI au-delà de localhost.

Avertissement

DevUI n’est pas destiné à une utilisation en production. Pour les déploiements de production, créez votre propre interface personnalisée à l’aide du Kit de développement logiciel (SDK) Agent Framework avec les mesures de sécurité appropriées.

Bientôt disponible

La documentation DevUI pour C# sera bientôt disponible. Consultez la documentation Python ultérieurement ou reportez-vous à la documentation Python pour obtenir des conseils conceptuels.

Modes d’interface utilisateur

DevUI propose deux modes qui contrôlent l’accès aux fonctionnalités :

Mode développeur (par défaut)

Accès complet à toutes les fonctionnalités :

  • Panneau Debug avec des informations de trace
  • Rechargement à chaud pour le développement rapide (/v1/entities/{id}/reload)
  • Outils de déploiement (/v1/deployments)
  • Messages d’erreur détaillés pour le débogage
devui ./agents  # Developer mode is the default

Mode utilisateur

Interface simplifiée et restreinte :

  • Interface de conversation et gestion des conversations
  • Liste d’entités et informations de base
  • API développeur désactivées (rechargement à chaud, déploiement)
  • Messages d’erreur génériques (détails consignés côté serveur)
devui ./agents --mode user

Authentication

Activez l’authentification par jeton du porteur avec l’indicateur --auth :

devui ./agents --auth

Lorsque l’authentification est activée :

  • Pour localhost : un jeton est généré automatiquement et affiché dans la console
  • Pour les déploiements exposés au réseau : vous devez fournir un jeton via DEVUI_AUTH_TOKEN une variable d’environnement ou --auth-token un indicateur
# 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

Toutes les demandes d’API doivent inclure un jeton porteur valide dans l’en-tête Authorization :

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

Si vous devez exposer DevUI aux utilisateurs finaux (non recommandés pour la production) :

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

Cette configuration :

  • Limite les API destinées aux développeurs
  • Authentification requise
  • Se lie à toutes les interfaces réseau

Fonctionnalités de sécurité

DevUI comprend plusieurs mesures de sécurité :

Caractéristique Descriptif
Liaison à Localhost Lie à 127.0.0.1 par défaut
Mode utilisateur Restreint les API des développeurs
Authentification du porteur Authentification basée sur un jeton facultatif
Chargement d’entité locale Charge uniquement des entités à partir de répertoires locaux ou en mémoire
Aucune exécution à distance Aucune capacité d’exécution de code distant

Meilleures pratiques

Gestion des identifiants

  • Stocker des clés API et des secrets dans des .env fichiers
  • Ne jamais valider .env les fichiers dans le contrôle de code source
  • Utiliser des .env.example fichiers pour documenter les variables requises
# .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/

Sécurité réseau

  • Conserver DevUI lié à localhost pour le développement
  • Utiliser un proxy inverse (nginx, Caddy) si l’accès externe est nécessaire
  • Activer HTTPS via le proxy inverse
  • Implémenter une authentification appropriée au niveau du proxy

Sécurité d'une entité

  • Passez en revue tout le code de l’agent/flux de travail avant d’exécuter
  • Charger uniquement des entités à partir de sources approuvées
  • Soyez prudent avec les outils qui ont des effets secondaires (accès aux fichiers, appels réseau)

Nettoyage des ressources

Enregistrez les hooks de nettoyage pour fermer correctement les identifiants et les ressources lors de l’arrêt.

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

Considérations relatives aux outils MCP

Lors de l’utilisation des outils MCP (Model Context Protocol) avec 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])

Important

N’utilisez async with pas de gestionnaires de contexte lors de la création d’agents avec des outils MCP pour DevUI. Les connexions sont fermées avant l’exécution. Les outils MCP utilisent l’initialisation différée et se connectent automatiquement lors de la première utilisation.

Étapes suivantes