Inserción de secretos en puntos de conexión en línea (versión preliminar)
SE APLICA A:Extensión ML de la CLI de Azure v2 (actual)SDK de Python azure-ai-ml v2 (actual)
La inyección de secretos en el contexto de un punto de conexión en línea es un proceso de recolección de secretos (como claves de API) de almacenes de secretos e inyección de los mismos en el contenedor de usuario que se ejecuta dentro de una implementación en línea. Eventualmente, se accede a los secretos de forma segura a través de variables de entorno, que son usadas por el servidor de inferencia que ejecuta su script de puntuación o por la pila de inferencia que usted traiga con un enfoque de implementación BYOC (traiga su propio contenedor).
Importante
Esta característica actualmente está en su versión preliminar pública. Esta versión preliminar se ofrece sin un Acuerdo de Nivel de Servicio y no se recomienda para cargas de trabajo de producción. Es posible que algunas características no sean compatibles o que tengan sus funcionalidades limitadas.
Para más información, consulte Términos de uso complementarios de las Versiones Preliminares de Microsoft Azure.
Declaración del problema
Al crear una implementación en línea, es posible que quiera usar secretos desde dentro de la implementación para acceder a servicios externos. Algunos de estos servicios externos son Microsoft Azure OpenAI Service, Servicios de Azure AI y Seguridad del contenido de Azure AI.
Para usar los secretos, debe encontrar una manera de pasarlos de forma segura al contenedor de usuarios que se ejecuta dentro de la implementación. No se recomienda incluir secretos como parte de la definición de implementación, ya que esta práctica expondría los secretos en la definición de implementación.
Un enfoque mejor es almacenar los secretos en almacenes de secretos y después recuperarlos de forma segura desde dentro de la implementación. Sin embargo, este enfoque plantea su propio reto: cómo debe autenticarse la implementación ante los almacenes secretos para recuperar los secretos. Dado que la implementación en línea ejecuta su contenedor de usuario utilizando la identidad de punto de conexión, que es una identidad administrada, puede utilizar Azure RBAC para controlar los permisos de la identidad de punto de conexión y permitir que el punto de conexión recupere secretos de los almacenes de secretos. El uso de este método requiere que realice las siguientes tareas:
- Asigne los roles adecuados a la identidad del punto de conexión para que pueda leer secretos de los almacenes de secretos.
- Implemente la lógica de puntuación de la implementación para que use la identidad administrada del punto de conexión para recuperar los secretos de los almacenes de secretos.
Aunque este enfoque de usar una identidad administrada es una forma segura de recuperar e inyectar secretos, la inyección de secretos a través de la característica de inyección de secretos simplifica aún más el proceso de recuperar secretos para conexiones de áreas de trabajo y almacenes de claves.
Identidad administrada asociada al punto de conexión
Una implementación en línea ejecuta el contenedor de usuarios con la identidad administrada asociada al punto de conexión. Esta identidad administrada, denominada identidad de punto de conexión, es un Microsoft Entra ID compatible con Azure RBAC. Por lo tanto, puede asignar roles de Azure a la identidad para controlar los permisos necesarios para realizar operaciones. La identidad de punto de conexión puede ser una identidad asignada por el sistema (SAI) o una identidad asignada por el usuario (UAI). Puede decidir cuál de estos tipos de identidades usar al crear el punto de conexión.
- Para un identidad asignada por el sistema, la identidad se crea automáticamente al crear el punto de conexión y los roles con permisos fundamentales (como el permiso de extracción de Azure Container Registry y el lector de datos de blobs de almacenamiento) se asignan automáticamente.
- Para una identidad asignada por el usuario, primero debe crear la identidad y, a continuación, asociarla al punto de conexión al crear el punto de conexión. También es responsable de asignar los roles adecuados a la UAI según sea necesario.
Para más información sobre el uso de identidades administradas de un punto de conexión, ver Cómo acceder a recursos desde puntos de conexión con identidades administradas, y el ejemplo de Uso de identidades administradas para interactuar con servicios externos.
Asignación de roles a la identidad del punto de conexión
Los almacenes de secretos requieren los siguientes roles:
- Para secretos almacenados en conexiones de áreas de trabajo bajo su área de trabajo:
Workspace Connections
proporciona una API de lista de secretos (versión preliminar) que requiere que la identidad que llame a la API tenga el rolAzure Machine Learning Workspace Connection Secrets Reader
(o equivalente) asignado a la identidad. - Para secretos almacenados en una instancia de Microsoft Azure Key Vault externa: Key Vault proporciona una API de obtención de versiones de secretos que requiere que la identidad que llama a la API tenga un rol
Key Vault Secrets User
(o equivalente) asignado a la identidad.
Implementación de la inyección de secretos
Una vez que los secretos (como las claves de API) se recuperan de los almacenes de secretos, hay dos formas de inyectarlos en un contenedor de usuario que se ejecuta dentro de la implementación en línea:
- Inyecte usted mismo los secretos, usando identidades administradas.
- Inyecte secretos usando la característica de inyección de secretos.
Ambos enfoques implican dos pasos:
- Primero, recupere los secretos de los almacenes de secretos, usando la identidad de punto de conexión.
- En segundo lugar, inyecte los secretos en su contenedor de usuario.
Inyección de secretos mediante el uso de identidades administradas
En la definición de su implementación, deberá usar la identidad de punto de conexión para llamar a las API desde los almacenes de secretos. Puede implementar esta lógica en su script de puntuación o en scripts de shell que ejecute en su contenedor BYOC. Para implementar la inyección de secretos mediante el uso de identidades administradas, consulte el ejemplo de uso de identidades administradas para interactuar con servicios externos.
Inyección de secretos mediante la característica de inyección de secretos
Para usar la característica de inyección de secretos, en la definición de su implementación, asigne los secretos (a los que quiera hacer referencia) de las conexiones del área de trabajo o de Key Vault a las variables de entorno. Este enfoque no requiere que escriba ningún código en su script de puntuación ni en los scripts de shell que ejecute en su contenedor BYOC. Para asignar los secretos de las conexiones del área de trabajo o de Key Vault a las variables de entorno, deben cumplirse las siguientes condiciones:
- Durante la creación del punto de conexión, si se definió un punto de conexión en línea para imponer el acceso a los almacenes de secretos predeterminados (conexiones del área de trabajo bajo el área de trabajo actual), su identidad de usuario que crea la implementación bajo el punto de conexión debería tener los permisos para leer secretos de las conexiones del área de trabajo.
- La identidad de punto de conexión que usa la implementación debe tener permisos para leer secretos de las conexiones del área de trabajo o de Key Vault, como se indica en la definición de la implementación.
Nota:
- Si el punto de conexión se creó correctamente con un SAI y la marca establecida para aplicar el acceso a los almacenes de secretos predeterminados, entonces el punto de conexión tendría automáticamente el permiso para las conexiones del área de trabajo.
- En el caso de que el punto de conexión usara una UAI, o no se hubiera establecido la marca para aplicar el acceso a los almacenes de secretos predeterminados, la identidad de punto de conexión podría no tener el permiso para las conexiones de área de trabajo. En tal situación, debe asignar manualmente el rol para las conexiones del área de trabajo a la identidad del punto de conexión.
- La identidad del punto de conexión no recibirá automáticamente el permiso para la instancia de Key Vault externa. Si usa Key Vault como almacén de secretos, deberá asignar manualmente el rol de Key Vault a la identidad del punto de conexión.
Para más información sobre el uso de la inyección de secretos, consulte Implementación de modelos de Machine Learning en puntos de conexión en línea con inyección de secretos (versión preliminar).