Injection de secrets dans des points de terminaison en ligne (préversion)

S’APPLIQUE À :Extension Azure CLI v2 (actuelle)Kit de développement logiciel (SDK) Python azure-ai-ml v2 (version actuelle)

L’injection de secrets dans le contexte d’un point de terminaison en ligne est un processus de récupération de secrets (tels que des clés API) à partir de magasins de secrets et leur injection dans votre conteneur utilisateur qui s’exécute dans un déploiement en ligne. Les secrets font finalement l’objet d’un accès en toute sécurité via des variables d’environnement, lesquelles sont utilisées par le serveur d’inférence qui exécute votre script de scoring avec une approche de déploiement BYOC (Apportez votre propre certificat).

Important

Cette fonctionnalité est actuellement disponible en préversion publique. Cette préversion est fournie sans contrat de niveau de service et n’est pas recommandée pour les charges de travail de production. Certaines fonctionnalités peuvent être limitées ou non prises en charge.

Pour plus d’informations, consultez Conditions d’Utilisation Supplémentaires relatives aux Évaluations Microsoft Azure.

Définition du problème

Quand vous créez un déploiement en ligne, il est possible que vous vouliez utiliser des secrets à partir du déploiement pour accéder à des services externes. Certains de ces services externes incluent le service Microsoft Azure OpenAI, Azure AI Services et Azure AI Sécurité du Contenu.

Pour utiliser les secrets, vous devez chercher le moyen de les passer en toute sécurité à votre conteneur utilisateur qui s’exécute au sein du déploiement. Nous vous déconseillons d’inclure des secrets dans le cadre de la définition de déploiement, car cette pratique va exposer les secrets dans la définition de déploiement.

Une meilleure approche consiste à stocker les secrets dans des magasins de secrets, puis de les récupérer de manière sécurisée à partir du déploiement. Toutefois, cette approche comporte ses propres problèmes : comment le déploiement doit s’authentifier dans les magasins de secrets pour récupérer ces derniers. Étant donné que le déploiement en ligne exécute votre conteneur utilisateur en utilisant l’identité de point de terminaison, qui est une identité managée, vous pouvez utiliser RBAC Azure pour contrôler les autorisations de l’identité de point de terminaison et autoriser le point de terminaison à récupérer des secrets à partir du magasin de secrets. L’utilisation de cette approche nécessite que vous effectuiez les tâches suivantes :

  • Attribuez les rôles appropriés à l’identité de point de terminaison afin qu’elle puisse lire des secrets à partir du magasin de secrets.
  • Implémentez la logique de scoring pour le déploiement afin qu’il utilise l’identité managée du point de terminaison pour récupérer les secrets à partir du magasin de secrets.

Bien que cette approche consistant à utiliser une identité managée soit une façon sécurisée de récupérer et d’injecter des secrets, l’injection de secrets via la fonctionnalité d’injection de secrets simplifie davantage le processus de récupération de secrets pour des connexions d’espace de travail et des coffres de clés.

Identité managée associée à un point de terminaison

Un déploiement en ligne exécute votre conteneur utilisateur avec l’identité managée associée au point de terminaison. Cette identité managée, appelée identité de point de terminaison, est un service Microsoft Entra ID qui prend en charge RBAC Azure. Par conséquent, vous pouvez attribuer des rôles Azure à l’identité afin de contrôler les autorisations requises pour effectuer des opérations. L’identité de point de terminaison peut être une identité affectée par le système (SAI) ou une identité affectée par l’utilisateur (UAI). Vous pouvez décider du type d’identité à utiliser lorsque vous créez le point de terminaison.

  • Pour une identité affectée par le système, l’identité est créée automatiquement lorsque vous créez le point de terminaison, et les rôles avec des autorisations fondamentales (telles que l’autorisation d’extraction Azure Container Registry et Lecteur des données blob du stockage) sont automatiquement attribués.
  • Pour une identité affectée par l’utilisateur, vous devez d’abord créer l’identité, puis l’associer au point de terminaison lorsque vous créez ce dernier. Vous êtes également responsable de l’attribution de rôles appropriés à l’identité UAI en fonction des besoins.

Si vous souhaitez obtenir plus d’informations en utilisant les identités managées d’un point de terminaison, voir Guide pratique pour accéder à des ressources à partir de points de terminaison avec des identités managées et l’exemple pour utiliser des identités managées pour interagir avec des services externes.

Attribution de rôle à l’identité de point de terminaison

Les rôles suivants sont exigés par les magasins de secrets :

  • Pour les secrets stockés dans des connexions d’espace de travail sous votre espace de travail : Workspace Connections fournit une Liste API Secrets (préversion) qui nécessite que l’identité appelant l’API ait un rôle Azure Machine Learning Workspace Connection Secrets Reader (ou équivalent) attribué dans l’identité.
  • Pour les secrets stockés dans un Microsoft Azure Key Vault externe : Key Vault fournit une API Obtenir des versions d’un secret qui nécessite que l’identité appelant l’API ait un rôle Key Vault Secrets User (ou équivalent) attribué dans l’identité.

Implémentation de l’injection de secrets

Une fois les secrets (tels que des clés API) récupérés des magasins de secrets, il existe deux façons de les injecter dans un conteneur utilisateur qui s’exécute au sein du déploiement en ligne :

  • Injectez vous-même des secrets en utilisant des identités managées.
  • Injectez des secrets en utilisant la fonctionnalité d’injection de secrets.

Ces deux approches impliquent deux étapes :

  1. Premièrement, récupérez des secrets à partir du magasin de secrets en tirant parti de l’identité de point de terminaison.
  2. Deuxièmement, injectez les secrets dans votre conteneur utilisateur.

Injection de secrets via l’utilisation d’identités managées

Dans votre définition de déploiement, vous devez utiliser l’identité de point de terminaison pour appeler les API à partir des magasins de secrets. Vous pouvez implémenter cette logique dans votre script de scoring ou dans des scripts d’interpréteur de commandes que vous exécutez dans votre conteneur BYOC. Si vous souhaitez implémenter l’injection de secrets via l’utilisation d’identités managées, consultez l’exemple de l’utilisation d’identités managées pour interagir avec des services externes.

Injection de secrets via la fonctionnalité d’injection de secrets

Pour utiliser la fonctionnalité d’injection de secrets, dans votre définition de déploiement, mappez les secrets (auxquels vous souhaitez faire référence) à partir des connexions d’espace de travail ou du coffre de clés sur les variables d’environnement. Cette approche n’exige pas que vous écriviez du code dans votre script de scoring ou des scripts d’interpréteur de commandes que vous exécutez dans votre conteneur BYOC. Pour mapper les secrets de connexions d’espace de travail ou du coffre de clés sur les variables d’environnement, les conditions suivantes doivent être remplies :

  • Pendant la création de points de terminaison, si un point de terminaison en ligne a été défini pour appliquer l’accès aux magasins de secrets par défaut (connexions d’espace de travail sous l’espace de travail actuel), votre identité utilisateur qui crée le déploiement sous le point de terminaison doit avoir les autorisations pour lire des secrets à partir des connexions d’espace de travail.
  • L’identité de point de terminaison utilisée par le déploiement doit avoir les autorisations pour lire des secrets à partir de connexions d’espace de travail ou du coffre de clés, comme indiqué dans la définition de déploiement.

Remarque

  • Si le point de terminaison a été correctement créé avec une identité attribuée par le système (SAI) et l’indicateur défini pour appliquer l’accès aux magasins de secrets par défaut, le point de terminaison dispose alors automatiquement de l’autorisation pour des connexions d’espace de travail.
  • Si un point de terminaison a utilisé une identité affectée par l’utilisateur ou si l’indicateur appliquant l’accès aux magasins de secrets par défaut n’a pas été défini, il est possible que l’identité de point de terminaison n’ait alors pas l’autorisation pour des connexions d’espace de travail. Dans une telle situation, vous devez attribuer manuellement le rôle pour les connexions d’espace de travail à l’identité de point de terminaison.
  • L’identité de point de terminaison ne reçoit pas automatiquement l’autorisation pour le coffre de clés externe. Si vous utilisez le coffre de clés comme magasin de secrets, vous devez automatiquement attribuer le rôle pour le coffre de clés à l’identité de point de terminaison.

Si vous souhaitez obtenir plus d’informations sur l’utilisation de l’injection de secrets, consultez Déployer des modèles Machine Learning sur des points de terminaison en ligne avec l’injection de secrets (préversion).