Uso de secretos de credenciales de autenticación en trabajos de Azure Machine Learning

SE APLICA A: SDK de Python azure-ai-ml v2 (actual)

Los datos de autenticación (por ejemplo, el nombre de usuario y la contraseña) son secretos. Por ejemplo, si se conecta a una base de datos externa para consultar datos de entrenamiento, deberá pasar el nombre de usuario y la contraseña al contexto de trabajo remoto. La codificación de estos valores en scripts de entrenamiento en texto no cifrado no es segura, ya que podría exponer el secreto.

Azure Key Vault permite almacenar y recuperar secretos de forma segura. En este artículo, aprenderá a recuperar secretos almacenados en un almacén de claves de un trabajo de entrenamiento que se ejecuta en un clúster de proceso.

Importante

El SDK de Python de Azure Machine Learning v2 y la extensión de la CLI de Azure v2 para el aprendizaje automático no proporcionan la funcionalidad de establecer u obtener secretos. En su lugar, la información de este artículo usa la biblioteca cliente de secretos de Azure Key Vault para Python.

Requisitos previos

Antes de seguir los pasos de este artículo, asegúrese de que tiene los siguientes requisitos previos:

Sugerencia

Muchos de los requisitos previos de esta sección requieren acceso de colaborador, propietario o equivalente a la suscripción de Azure o al grupo de recursos de Azure que contiene los recursos. Es posible que tenga que ponerse en contacto con el administrador de Azure para realizar estas acciones.

  • Suscripción a Azure. Si no tiene una suscripción de Azure, cree una cuenta gratuita antes de empezar. Pruebe la versión gratuita o de pago de Azure Machine Learning.

  • Un área de trabajo de Azure Machine Learning. Si no tienes uno, sigue los pasos del artículo Crear recursos para comenzar para crear uno.

  • Una instancia de Azure Key Vault. Si usaste el artículo Crear recursos para comenzar para crear tu área de trabajo, se creó un almacén de claves para ti. También puede crear una instancia independiente del almacén de claves con la información del artículo Inicio rápido: Creación de un almacén de claves.

    Sugerencia

    No es necesario usar el mismo almacén de claves que el área de trabajo.

  • Un clúster de proceso de Azure Machine Learning configurado para usar una identidad administrada. El clúster se puede configurar para una identidad administrada asignada por el sistema o por el usuario.

  • Conceda a la identidad administrada del clúster de proceso acceso a los secretos almacenados en el almacén de claves. El método que se usa para conceder acceso depende de la configuración del almacén de claves:

  • Valor de secreto almacenado en el almacén de claves. A continuación, este valor se puede recuperar mediante una clave. Para más información, consulte Inicio rápido: Establecimiento y recuperación de un secreto desde Azure Key Vault.

    Sugerencia

    El vínculo del inicio rápido proporciona acceso a los pasos para usar el SDK de Python de Azure Key Vault. En la tabla de contenido del área de navegación de la izquierda se proporcionan vínculos a otros métodos para establecer una clave.

Obtención de secretos

  1. Agregue los paquetes azure-keyvault-secrets y azure-identity al entorno de Azure Machine Learning que se usa al entrenar el modelo. Por ejemplo, agregándolos al archivo conda que se usa para crear el entorno.

    El entorno se usa para crear la imagen de Docker en la que se ejecuta el trabajo de entrenamiento en el clúster de proceso.

  2. En el código de entrenamiento, use el SDK de identidad de Azure y la biblioteca cliente de Key Vault para obtener las credenciales de identidad administrada y para autenticarse en el almacén de claves:

    from azure.identity import DefaultAzureCredential
    from azure.keyvault.secrets import SecretClient
    
    credential = DefaultAzureCredential()
    
    secret_client = SecretClient(vault_url="https://my-key-vault.vault.azure.net/", credential=credential)
    
  3. Después de la autenticación, use la biblioteca cliente de Key Vault para recuperar un secreto proporcionando la clave asociada:

    secret = secret_client.get_secret("secret-name")
    print(secret.value)
    

Pasos siguientes

Para obtener un ejemplo de envío de un trabajo de entrenamiento mediante el SDK de Python v2 de Azure Machine Learning, consulte Entrenamiento de modelos con el SDK de Python v2.