Compartir a través de


Configuración de la autenticación para recursos y flujos de trabajo de Azure Machine Learning con el SDK v1

SE APLICA A:SDK de Azure Machine Learning v1 para Python

Importante

En este artículo se proporciona información sobre el uso del SDK de Azure Machine Learning v1. EL SDK v1 está en desuso a partir del 31 de marzo de 2025. El soporte técnico finalizará el 30 de junio de 2026. Puede instalar y usar SDK v1 hasta esa fecha.

Se recomienda realizar la transición al SDK v2 antes del 30 de junio de 2026. Para más información sobre SDK v2, consulte ¿Qué es la CLI de Azure Machine Learning y el SDK de Python v2? y la referencia del SDK v2.

Obtenga información sobre cómo configurar la autenticación en el área de trabajo de Azure Machine Learning. La autenticación en el área de trabajo de Azure Machine Learning se basa en Microsoft Entra ID en la mayoría de los casos. En general, hay cuatro flujos de trabajo de autenticación que se pueden usar al conectarse al área de trabajo:

  • Interactivo: usa su cuenta en Microsoft Entra ID para autenticarse directamente o para obtener un token que se usa para la autenticación. La autenticación interactiva se usa durante laexperimentación y el desarrollo iterativo. La autenticación interactiva permite controlar el acceso a los recursos (por ejemplo, un servicio web) por usuario.

  • Entidad de servicio: crea una cuenta de entidad de servicio en Microsoft Entra ID y la usa para autenticarse u obtener un token. Una entidad de servicio se usa cuando se necesita un proceso automatizado para autenticarse en el servicio sin necesidad de interacción del usuario. Por ejemplo, un script de implementación e integración continua que entrena y prueba un modelo cada vez que cambia el código de entrenamiento.

  • Sesión de la CLI de Azure: se usa una sesión activa de la CLI de Azure para autenticarse. La autenticación con la CLI de Azure se usa durante la experimentación y el desarrollo iterativo, o cuando se necesita un proceso automatizado para autenticarse en el servicio mediante una sesión autenticada previamente. Puede iniciar sesión en Azure mediante la CLI de Azure en la estación de trabajo local, sin almacenar las credenciales en el código de Python ni pedir al usuario que se autentique. Del mismo modo, puede reutilizar los mismos scripts como parte de las canalizaciones de integración e implementación continuas, al mismo tiempo que autentica la CLI de Azure con una identidad de entidad de servicio.

  • Identidad administrada: si utiliza el SDK de Azure Machine Learning en una máquina virtual de Azure, puede usar una identidad administrada para Azure. Este flujo de trabajo permite a la máquina virtual conectarse al área de trabajo mediante la identidad administrada, sin almacenar las credenciales en el código de Python ni pedir al usuario que se autentique. Los clústeres de proceso de Azure Machine Learning e instancias de proceso también se pueden configurar para usar una identidad administrada para acceder al área de trabajo cuando se entrenen modelos.

Independientemente del flujo de trabajo de autenticación que se use, el control de acceso basado en roles de Azure (Azure RBAC) se usa para limitar el nivel de acceso (autorización) permitido a los recursos. Por ejemplo, un proceso de administración o de automatización podría acceder para crear una instancia de proceso, pero no usarla, mientras que un científico de datos podría usarla, pero no eliminarla ni crearla. Para obtener más información, consulte Administración del acceso a un área de trabajo de Azure Machine Learning.

Se puede utilizar el acceso condicional de Microsoft Entra para controlar o restringir aún más el acceso al área de trabajo para cada flujo de trabajo de autenticación. Por ejemplo, un administrador solo puede permitir el acceso al área de trabajo desde dispositivos administrados.

Requisitos previos

Microsoft Entra ID

Todos los flujos de trabajo de autenticación del área de trabajo dependen de Microsoft Entra ID. Si desea que los usuarios se autentiquen mediante cuentas individuales, deben tener cuentas en su instancia de Microsoft Entra ID. Si desea usar entidades de servicio, deben existir en su instancia de Microsoft Entra ID. Las identidades administradas también son una característica de Microsoft Entra ID.

Para obtener más información sobre Microsoft Entra ID, consulte ¿Qué es la autenticación de Microsoft Entra?

Una vez que haya creado las cuentas de Microsoft Entra, consulte Administración del acceso a un área de trabajo de Azure Machine Learning para obtener información sobre cómo concederle acceso al área de trabajo y a otras operaciones en Azure Machine Learning.

Configuración de una entidad de servicio

Para usar una entidad de servicio (SP), primero debe crearla. A continuación, concédale acceso al área de trabajo. Como se mencionó anteriormente, se usa el control de acceso basado en roles de Azure (Azure RBAC) para controlar el acceso, por lo que también debe decidir qué acceso conceder a la entidad de servicio.

Importante

Al usar una entidad de servicio, concédale el acceso mínimo necesario para la tarea se usa para. Por ejemplo, no concedería acceso de colaborador o propietario de una entidad de servicio si todo lo que se usa para es leer el token de acceso para una implementación web.

La razón para conceder el acceso mínimo es que una entidad de servicio usa una contraseña para autenticarse y la contraseña se puede almacenar como parte de un script de automatización. Si se filtra la contraseña, tener el acceso mínimo necesario para una tarea específica minimiza el uso malintencionado del SP.

Debe rotar secretos como la contraseña de la entidad de servicio con regularidad.

La forma más fácil de crear una entidad de servicio y de conceder acceso al área de trabajo es mediante la CLI de Azure. Para crear una entidad de servicio y concederle acceso al área de trabajo, siga estos pasos:

Nota

Debe ser un administrador de la suscripción para realizar todos estos pasos.

  1. Autentíquese en la suscripción de Azure:

    az login
    

    Si la CLI puede abrir el explorador predeterminado, lo hará y cargará una página de inicio de sesión. De lo contrario, tendrá que abrir un explorador y seguir las instrucciones de la línea de comandos. Las instrucciones implican navegar a https://aka.ms/devicelogin y escribir un código de autorización.

    Si tiene varias suscripciones de Azure, puede usar el comando az account set -s <subscription name or ID> para establecer la suscripción. Para más información, consulte Uso de varias suscripciones de Azure.

    Para obtener otros métodos de autenticación, consulte Inicio de sesión con la CLI de Azure.

  2. Cree la entidad de servicio. En el ejemplo siguiente, se crea una entidad de servicio denominada ml-auth:

    az ad sp create-for-rbac --json-auth --name ml-auth --role Contributor --scopes /subscriptions/<subscription id>
    

    El parámetro --json-auth está disponible en las versiones de la CLI de Azure >= 2.51.0. Las versiones anteriores a esta usan --sdk-auth.

    La salida es un JSON similar al siguiente. Tome nota de los campos clientId, clientSecret y tenantId, ya que los necesitará para otros pasos de este artículo.

    {
        "clientId": "your-client-id",
        "clientSecret": "your-client-secret",
        "subscriptionId": "your-sub-id",
        "tenantId": "your-tenant-id",
        "activeDirectoryEndpointUrl": "https://login.microsoftonline.com",
        "resourceManagerEndpointUrl": "https://management.azure.com",
        "activeDirectoryGraphResourceId": "https://graph.windows.net",
        "sqlManagementEndpointUrl": "https://management.core.windows.net:5555",
        "galleryEndpointUrl": "https://gallery.azure.com/",
        "managementEndpointUrl": "https://management.core.windows.net"
    }
    
  3. Recupere los detalles de la entidad de servicio mediante el valor clientId devuelto en el paso anterior:

    az ad sp show --id your-client-id
    

    El siguiente JSON es un ejemplo simplificado de la salida del comando. Tome nota del campo objectId, ya que necesitará su valor para el paso siguiente.

    {
        "accountEnabled": "True",
        "addIns": [],
        "appDisplayName": "ml-auth",
        ...
        ...
        ...
        "objectId": "your-sp-object-id",
        "objectType": "ServicePrincipal"
    }
    
  4. Para conceder acceso al área de trabajo y a otros recursos usados por Azure Machine Learning, use la información de los artículos siguientes:

    Importante

    El acceso de propietario permite que la entidad de servicio realice prácticamente cualquier operación en el área de trabajo. Se utiliza en este documento para demostrar cómo conceder acceso; en un entorno de producción, Microsoft recomienda otorgar al principal de servicio el acceso mínimo necesario para cumplir con la función que se le asigna. Para obtener información sobre cómo crear un rol personalizado con el acceso necesario para su escenario, consulte Administración del acceso a un área de trabajo de Azure Machine Learning.

Configuración de una identidad administrada

Importante

La identidad administrada solo se admite cuando se usa el SDK de Azure Machine Learning desde una máquina virtual de Azure o con un clúster de proceso de Azure Machine Learning o instancia de proceso.

Identidad administrada con una máquina virtual

  1. Habilite una identidad administrada asignada por el sistema para los recursos de Azure en la máquina virtual.

  2. En Azure Portal, seleccione el área de trabajo y, después, seleccione Control de acceso (IAM).

  3. Seleccione Agregar, Agregar asignación de rol para abrir la página Agregar asignación de rol.

  4. Asigne el siguiente rol. Para acceder a los pasos detallados, consulte Asignación de roles de Azure mediante Azure Portal.

    Configuración Valor
    Rol El rol que quiere asignar.
    Asignar acceso a Identidad administrada
    Miembros La identidad administrada que creó anteriormente

    Página Agregar asignación de roles en Azure Portal.

Identidad administrada con un clúster de proceso

Para obtener más información, vea Configuración de identidades administradas para el clúster de proceso.

Uso de la autenticación interactiva

Importante

En la autenticación interactiva se usa el explorador y se necesitan cookies (por ejemplo, cookies de terceros). Si ha deshabilitado las cookies, es posible que reciba un error como "No hemos podido iniciar sesión". Este error también puede producirse si ha habilitado la autenticación multifactor de Microsoft Entra.

La mayoría de los ejemplos de la documentación usan la autenticación interactiva. Por ejemplo, al usar el SDK hay dos llamadas de función que le pedirán automáticamente un flujo de autenticación basado en la interfaz de usuario:

  • Al llamar a la from_config() función, se emite el símbolo del sistema.

    from azureml.core import Workspace
    ws = Workspace.from_config()
    

    La función from_config() busca un archivo JSON que contenga la información de conexión del área de trabajo.

  • El uso del constructor Workspace para proporcionar información de suscripción, grupo de recursos y área de trabajo, también solicita la autenticación interactiva.

    ws = Workspace(subscription_id="your-sub-id",
                  resource_group="your-resource-group-id",
                  workspace_name="your-workspace-name"
                  )
    

Sugerencia

Si tiene acceso a varios inquilinos, es posible que tenga que importar la clase y definir explícitamente qué inquilino tiene como destino. Al llamar al constructor para InteractiveLoginAuthentication, también se le pide que inicie sesión, como en los ejemplos anteriores.

from azureml.core.authentication import InteractiveLoginAuthentication
interactive_auth = InteractiveLoginAuthentication(tenant_id="your-tenant-id")

Al usar la CLI de Azure, se usa el comando az login para autenticar la sesión de la CLI. Para más información, consulte Introducción a la CLI de Azure.

Sugerencia

Si usa el SDK desde un entorno en el que se autentica de forma interactiva mediante la CLI de Azure, puede usar la AzureCliAuthentication clase para autenticarse en el área de trabajo mediante las credenciales almacenadas en caché por la CLI:

from azureml.core.authentication import AzureCliAuthentication
cli_auth = AzureCliAuthentication()
ws = Workspace(subscription_id="your-sub-id",
               resource_group="your-resource-group-id",
               workspace_name="your-workspace-name",
               auth=cli_auth
               )

Uso de la autenticación de entidad de servicio

Para autenticarse en el área de trabajo desde el SDK mediante la entidad de servicio, use el constructor de clase ServicePrincipalAuthentication. Utilice los valores que recibió al crear el proveedor de servicios como parámetros. El tenant_id parámetro se asigna a tenantId desde antes, service_principal_id se asigna a clientIdy service_principal_password se asigna a clientSecret.

from azureml.core.authentication import ServicePrincipalAuthentication

sp = ServicePrincipalAuthentication(tenant_id="your-tenant-id", # tenantID
                                    service_principal_id="your-client-id", # clientId
                                    service_principal_password="your-client-secret") # clientSecret

La variable sp ahora contiene un objeto de autenticación que se usa directamente en el SDK. En general, es recomendable almacenar los identificadores y secretos usados anteriormente en variables de entorno, como se muestra en el código siguiente. El almacenamiento en variables de entorno impide que la información se compruebe accidentalmente en un repositorio de GitHub.

import os

sp = ServicePrincipalAuthentication(tenant_id=os.environ['AML_TENANT_ID'],
                                    service_principal_id=os.environ['AML_PRINCIPAL_ID'],
                                    service_principal_password=os.environ['AML_PRINCIPAL_PASS'])

En el caso de los flujos de trabajo automatizados que se ejecutan en Python y usan el SDK principalmente, puede usar este objeto tal cual en la mayoría de los casos para la autenticación. El código siguiente se autentica en el área de trabajo mediante el objeto de autenticación que acaba de crear.

from azureml.core import Workspace

ws = Workspace.get(name="ml-example",
                   auth=sp,
                   subscription_id="your-sub-id",
                   resource_group="your-rg-name")
ws.get_details()

Uso de la autenticación de identidad administrada

Para autenticarse en el área de trabajo desde una máquina virtual, un clúster de proceso o una instancia de proceso que está configurado con una identidad administrada, utilice la clase MsiAuthentication. En el ejemplo siguiente se muestra cómo utilizar esta clase para autenticarse en un área de trabajo:

from azureml.core.authentication import MsiAuthentication

msi_auth = MsiAuthentication()

ws = Workspace(subscription_id="your-sub-id",
                resource_group="your-resource-group-id",
                workspace_name="your-workspace-name",
                auth=msi_auth
                )

Uso del Acceso condicional

Como administrador, puede aplicar directivas de Acceso condicional de Microsoft Entra para los usuarios que inician sesión en el área de trabajo. Por ejemplo, puede requerir la autenticación en dos fases o permitir el inicio de sesión solo desde dispositivos administrados. Para usar el acceso condicional para áreas de trabajo de Azure Machine Learning específicamente, asigne la directiva de Acceso condicional a la aplicación denominada Azure Machine Learning. El identificador de la aplicación es 0736f41a-0425-bdb5-1563eff02385.

Pasos siguientes