Share via


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

SE APLICA A:Azure ML del SDK de Python v1

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 la experimentació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 concederles 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 rol (RBAC) de Azure para controlar el acceso, por lo que también debe decidir qué acceso conceder a la entidad de servicio.

Importante

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

La razón para conceder el menor acceso 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 pierde la contraseña, tener el acceso mínimo necesario para una tarea específica minimiza el uso malintencionado de la entidad de servicio.

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 Use multiple Azure subscriptions (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 será un código 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 usa en este documento para demostrar cómo conceder acceso. En un entorno de producción, Microsoft recomienda conceder a la entidad de servicio el acceso mínimo necesario para realizar el rol para el que se pretende usar. 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 asignar roles, consulte Asignación de roles de Azure mediante Azure Portal.

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

    Add role assignment page in 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 del tipo "no se pudo 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 muestran automáticamente un flujo de autenticación basada en la interfaz de usuario:

  • La llamada a la función from_config() emitirá el mensaje.

    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.

  • Con el constructor Workspace para proporcionar información sobre la suscripción, el grupo de recursos y el área de trabajo, también se solicitará 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 el inquilino que tiene como destino. La llamada al constructor de InteractiveLoginAuthentication también le pedirá que inicie sesión de forma similar a las llamadas 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 ya se ha autenticado de forma interactiva mediante la CLI de Azure, puede usar la clase AzureCliAuthentication 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 parámetro tenant_id se asigna al campo tenantId anterior, 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, se recomienda almacenar los identificadores y secretos usados anteriormente en las variables de entorno, tal 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