Compartilhar via


Configurar a autenticação para recursos e fluxos de trabalho usando no SDK do Azure Machine Learning v1

APLICA-SE A:SDK do Python do Azure MLv1

Saiba como configurar autenticação para seu espaço de trabalho do Azure Machine Learning. A autenticação no seu espaço de trabalho do Azure Machine Learning é baseada no Microsoft Entra ID para a maioria das coisas. Em geral, há quatro fluxos de trabalho de autenticação que podem ser usados ao se conectar ao espaço de trabalho:

  • Interativo: você usa sua conta no Microsoft Entra ID para autenticar diretamente ou para obter um token que é usado para autenticação. A autenticação interativa é usada durante a experimentação e o desenvolvimento iterativo. A autenticação interativa permite controlar o acesso a recursos (como um serviço Web) por usuário.

  • Entidade de serviço: você cria uma conta de entidade de serviço no Microsoft Entra ID e a usa para autenticar ou obter um token. Uma entidade de serviço é usada quando você precisa de um processo automatizado para autenticar o serviço sem a necessidade de interação do usuário. Por exemplo, um script de implantação e integração contínua que treina e testa um modelo toda vez que o código de treinamento é alterado.

  • Sessão da CLI do Azure: você usa uma sessão ativa da CLI do Azure para se autenticar. A autenticação da CLI do Azure é usada durante a experimentação e o desenvolvimento iterativo ou quando você precisa de um processo automatizado para se autenticar no serviço usando uma sessão pré-autenticada. Você pode entrar no Azure pela CLI do Azure em sua estação de trabalho local, sem armazenar credenciais no código Python ou solicitar que o usuário se autentique. Da mesma forma, você pode reutilizar os mesmos scripts como parte de pipelines de implantação e integração contínuas, autenticando a CLI do Azure com uma identidade de entidade de serviço.

  • Identidade gerenciada: Ao usar o SDK do Azure Machine Learning em uma máquina virtual do Azure, você pode usar uma identidade gerenciada para o Azure. Esse fluxo de trabalho permite que a VM se conecte ao espaço de trabalho usando a identidade gerenciada, sem armazenar credenciais no código Python ou solicitar que o usuário se autentique. Os cluster de cálculo e as instâncias de computação do Azure Machine Learning também podem ser configurados para usar uma identidade gerenciada para acessar o espaço de trabalho ao treinar modelos.

Independentemente do fluxo de trabalho de autenticação usado, o controle de acesso baseado em função do Azure (RBAC do Azure) é usado para delimitar o nível de acesso (autorização) permitido aos recursos. Por exemplo, um administrador ou processo de automação pode ter acesso para criar uma instância de computação, mas não usá-la, enquanto um cientista de dados pode usá-la, mas não excluí-la ou criá-la. Para obter mais informações, consulte Gerenciar acesso a um espaço de trabalho do Azure Machine Learning.

O Acesso Condicional do Microsoft Entra pode ser usado para controlar ou restringir ainda mais o acesso ao espaço de trabalho para cada fluxo de trabalho de autenticação. Por exemplo, um administrador pode permitir o acesso ao espaço de trabalho somente para dispositivos gerenciados.

Pré-requisitos

ID do Microsoft Entra

Todos os fluxos de trabalho de autenticação para seu espaço de trabalho dependem do Microsoft Entra ID. Se você quiser que os usuários se autentiquem usando contas individuais, eles devem ter contas no Microsoft Entra ID. Se você quiser usar entidades de serviço, elas devem existir em seu Microsoft Entra ID. As identidades gerenciadas também são um recurso do Microsoft Entra ID.

Para obter mais informações sobre o Microsoft Entra ID, confira O que é a autenticação do Microsoft Entra.

Depois de criar as contas do Microsoft Entra, confira Gerenciar o acesso ao espaço de trabalho do Azure Machine Learning para obter informações sobre como conceder a elas acesso ao espaço de trabalho e a outras operações no Azure Machine Learning.

Configurar uma entidade de serviço

Para usar uma entidade de serviço (SP), você deve primeiro criar a SP. Em seguida, conceda-lhe acesso ao seu workspace. Como mencionado anteriormente, o controle de acesso baseado em função do Azure (RBAC do Azure) é usado para controlar o acesso, portanto, você também deve decidir qual acesso conceder à SP.

Importante

Ao usar uma entidade de serviço, conceda a ela o acesso mínimo necessário para a tarefa para a qual ela é usada. Por exemplo, você não concederá acesso a um proprietário de entidade de serviço ou colaborar se o uso for leitura do token de acesso para uma implantação da Web.

O motivo para conceder o acesso mínimo é que uma entidade de serviço usa uma senha para autenticar e a senha pode ser armazenada como parte de um script de automação. Se a senha for vazada, o acesso mínimo necessário para uma tarefa específica minimizará o uso mal-intencionado da SP.

A maneira mais fácil de criar uma SP e conceder acesso ao seu espaço de trabalho é usando a CLI do Azure. Para criar uma entidade de serviço e conceder acesso ao seu espaço de trabalho, use as seguintes etapas:

Observação

Você precisa ser um administrador na assinatura para executar as etapas a seguir.

  1. Autentique-se na assinatura do Azure:

    az login
    

    Se a CLI pode abrir seu navegador padrão, ela irá fazê-lo e carregar uma página de entrada. Caso contrário, você precisará abrir um navegador e seguir as instruções na linha de comando. As instruções envolvem a navegação para https://aka.ms/devicelogin e a inserção de um código de autorização.

    Se tiver várias assinaturas do Azure, você deve usar a assinatura que contém o az account set -s <subscription name or ID> comando para definir a assinatura. Para saber mais, confira Use multiple Azure subscriptions (Usar várias assinaturas do Azure).

    Para outros métodos de autenticação, confira Entrar com a CLI do Azure.

  2. Crie a entidade de serviço. No exemplo a seguir, uma SP chamada ml-auth é criada:

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

    O parâmetro --json-auth está disponível nas versões da CLI do Azure >= 2.51.0. Versões anteriores a essa usam --sdk-auth.

    A saída será um JSON semelhante ao seguinte. Anote os campos clientId, clientSecret e tenantId, pois você precisará deles para outras etapas neste artigo.

    {
        "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 os detalhes da entidade de serviço usando o clientId valor retornado na etapa anterior:

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

    O JSON a seguir é uma simplificação da saída do comando. Anote o campo objectId, pois você precisará do valor dele para a próxima etapa.

    {
        "accountEnabled": "True",
        "addIns": [],
        "appDisplayName": "ml-auth",
        ...
        ...
        ...
        "objectId": "your-sp-object-id",
        "objectType": "ServicePrincipal"
    }
    
  4. Para conceder acesso ao espaço de trabalho e a outros recursos usados pelo Azure Machine Learning, use as informações nos seguintes artigos:

    Importante

    O acesso do proprietário permite que a entidade de serviço faça praticamente qualquer operação em seu espaço de trabalho. Ele é usado neste documento para demonstrar como conceder acesso; em um ambiente de produção, a Microsoft recomenda conceder à entidade de serviço o acesso mínimo necessário para executar a função pretendida. Para obter informações sobre como criar uma função personalizada com o acesso necessário para seu cenário, consulte Gerenciar o acesso ao espaço de trabalho do Azure Machine Learning.

Configurar uma identidade gerenciada

Importante

A identidade gerenciada só tem suporte ao usar o SDK do Azure Machine Learning de uma máquina virtual do Azure ou com um cluster de cálculo ou uma instância de computação do Azure Machine Learning.

Identidade gerenciada com uma VM

  1. Habilite uma identidade gerenciada atribuída pelo sistema para recursos do Azure na VM.

  2. No portal do Azure, selecione seu espaço de trabalho e selecione Controle de Acesso (IAM) .

  3. Selecione Adicionar, Adicionar Atribuição de Função para abrir a página Adicionar atribuição de função.

  4. Atribua a função a seguir. Para ver as etapas detalhadas, confira Atribuir funções do Azure usando o portal do Azure.

    Configuração Valor
    Função Selecione a função que você deseja atribuir.
    Atribuir acesso a Identidade Gerenciada
    Membros A identidade gerenciada que você criou anteriormente

    Página Adicionar atribuição de função no portal do Azure.

Identidade gerenciada com cluster de cálculo

Para obter mais informações, consulte Configurar a identidade gerenciada para cluster de cálculo.

Usar autenticação interativa

Importante

A autenticação interativa usa seu navegador e requer cookies (incluindo cookies de terceiros). Se você tiver desabilitado cookies, poderá receber um erro como "não foi possível conectá-lo". Esse erro também poderá ocorrer se você tiver habilitado a autenticação multifator do Microsoft Entra.

A maioria dos exemplos na documentação e nos exemplos usa a autenticação interativa. Por exemplo, ao usar o SDK, há duas chamadas de função que solicitarão automaticamente um fluxo de autenticação baseado na interface do usuário:

  • Chamar a função from_config() emitirá o prompt.

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

    A função from_config() procura um arquivo JSON com as informações de conexão de seu workspace.

  • O uso do Workspace construtor para fornecer assinatura, grupo de recursos e informações do espaço de trabalho também solicitará a autenticação interativa.

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

Dica

Se você tiver acesso a vários locatários, talvez seja necessário importar a classe e definir explicitamente qual é o locatário de destino. Chamar o construtor para InteractiveLoginAuthentication também solicitará que você faça logon de maneira semelhante às chamadas acima.

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

Ao usar o CLI do Azure, o az login comando é usado para autenticar a sessão da CLI. Para obter mais informações, consulte Introdução à CLI do Azure.

Dica

Se você estiver usando o SDK de um ambiente no qual você já autenticou interativamente usando a CLI do Azure, poderá usar a AzureCliAuthentication classe para se autenticar no espaço de trabalho usando as credenciais armazenadas em cache pela 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
               )

Usar a autenticação de entidade de serviço

Para se autenticar no seu espaço de trabalho do SDK, usando uma entidade de serviço, use o ServicePrincipalAuthentication Construtor de classe. Use os valores que você obteve ao criar o provedor de serviços como os parâmetros. O parâmetro tenant_id é mapeado para tenantId acima, service_principal_id é mapeado para clientId e service_principal_password é mapeado para 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

Agora, a variável sp contém um objeto de autenticação que você usa diretamente no SDK. Em geral, é uma boa ideia armazenar as IDs/segredos usados acima em variáveis de ambiente, conforme mostrado no código a seguir. O armazenamento em variáveis de ambiente impede que as informações sejam verificadas acidentalmente em um repositório 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'])

Para fluxos de trabalho automatizados que são executados no Python e usam principalmente o SDK, você pode usar esse objeto no estado em que se encontra na maioria dos casos para autenticação. O código a seguir é autenticado em seu espaço de trabalho usando o objeto de autenticação criado.

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()

Use a autenticação de identidade gerenciada

Para autenticar no espaço de trabalho de uma VM, cluster de cálculo ou instância de computação configurada com uma identidade gerenciada, use a MsiAuthentication classe. O exemplo a seguir demonstra como usar essa classe para autenticar em um espaço de trabalho:

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
                )

Usar o acesso condicional

Como administrador, você pode impor políticas de Acesso Condicional do Microsoft Entra para usuários que entram no espaço de trabalho. Por exemplo, é possível requerer a autenticação de dois fatores ou permitir a conexão somente de dispositivos gerenciados. Para usar o acesso condicional especificamente para espaços de trabalho do Azure Machine Learning, atribua a política de acesso condicional ao aplicativo chamado Azure Machine Learning. A ID do aplicativo é 0736f41a-0425-bdb5-1563eff02385.

Próximas etapas