Configurar a autenticação para recursos e fluxos de trabalho do Azure Machine Learning
APLICA-SE A:Extensão de ML da CLI do Azure v2 (atual)SDK do Python azure-ai-ml v2 (atual)
Saiba como configurar a autenticação no workspace do Azure Machine Learning da CLI do Azure ou do SDK do Azure Machine Learning v2. 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 para autenticar um processo automatizado para 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 extensão da CLI do Azure para Machine Learning (a extensão
ml
ou a CLI v2) é uma ferramenta de linha de comando para trabalhar com o Azure Machine Learning. 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 v2 do Azure Machine Learning em uma instância de computação, ou em uma máquina virtual do Azurevocê 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 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
Criar um Workspace do Azure Machine Learning.
Configure seu ambiente de desenvolvimento ou use uma instância de computação do Azure Machine Learning e instale o SDK do Azure Machine Learning v2.
Instale a CLI do Azure.
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 Workspace do Azure Machine Learning para obter informações sobre como conceder a elas acesso ao workspace e a outras operações no Azure Machine Learning.
Usar autenticação interativa
APLICA-SE A: SDK do Python azure-ai-ml v2 (atual)
A autenticação interativa usa o pacote de Identidade do Azure para Python. A maioria dos exemplos usa DefaultAzureCredential
para acessar suas credenciais. Quando um token é necessário, ele solicita um usando várias identidades (EnvironmentCredential
, ManagedIdentityCredential
, SharedTokenCacheCredential
, VisualStudioCodeCredential
, AzureCliCredential
, AzurePowerShellCredential
) por sua vez, parando quando um fornece um token. Para obter mais informações, consulte a referência de classe DefaultAzureCredential.
O seguinte código é um exemplo do uso de DefaultAzureCredential
para autenticar. Se a autenticação usando DefaultAzureCredential
falhar, um fallback de autenticação por meio do navegador da Web será usado.
from azure.identity import DefaultAzureCredential, InteractiveBrowserCredential
try:
credential = DefaultAzureCredential()
# Check if given credential can get token successfully.
credential.get_token("https://management.azure.com/.default")
except Exception as ex:
# Fall back to InteractiveBrowserCredential in case DefaultAzureCredential not work
# This will open a browser page for
credential = InteractiveBrowserCredential()
Depois que o objeto de credencial for criado, a classe MLClient será usada para se conectar ao workspace. Por exemplo, o código a seguir usa o método from_config()
para carregar informações de conexão:
from azure.ai.ml import MLClient
try:
ml_client = MLClient.from_config(credential=credential)
except Exception as ex:
# NOTE: Update following workspace information to contain
# your subscription ID, resource group name, and workspace name
client_config = {
"subscription_id": "<SUBSCRIPTION_ID>",
"resource_group": "<RESOURCE_GROUP>",
"workspace_name": "<AZUREML_WORKSPACE_NAME>",
}
# write and reload from config file
import json, os
config_path = "../.azureml/config.json"
os.makedirs(os.path.dirname(config_path), exist_ok=True)
with open(config_path, "w") as fo:
fo.write(json.dumps(client_config))
ml_client = MLClient.from_config(credential=credential, path=config_path)
print(ml_client)
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.
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.
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 é semelhante ao documento JSON a seguir. Anote os campos
clientId
,clientSecret
etenantId
, 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" }
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" }
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
Só há suporte para identidade gerenciada quando o SDK do Azure Machine Learning é usado por meio de uma máquina virtual do Azure, um cluster de cálculo ou uma instância de computação do Azure Machine Learning.
Identidade gerenciada com uma VM
Habilite uma identidade gerenciada atribuída pelo sistema para recursos do Azure na VM.
No portal do Azure, selecione seu espaço de trabalho e selecione Controle de Acesso (IAM) .
Selecione Adicionar, Adicionar Atribuição de Função para abrir a página Adicionar atribuição de função.
Selecione a função que você deseja atribuir à identidade gerenciada. Por exemplo, Leitor. Para ver as etapas detalhadas, confira Atribuir funções do Azure usando o 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.
Identidade gerenciada com instância de computação
Para obter mais informações, confira Configurar a identidade gerenciada para o cluster de cálculo.
Usar a autenticação de entidade de serviço
APLICA-SE A: SDK do Python azure-ai-ml v2 (atual)
A autenticação com uma entidade de serviço usa o pacote de Identidade do Azure para Python. A classe DefaultAzureCredential
procura as seguintes variáveis de ambiente e usa os valores ao autenticar como entidade de serviço:
AZURE_CLIENT_ID
– A ID do cliente retornada quando você cria a entidade de serviço.AZURE_TENANT_ID
– A ID do locatário retornada quando você cria a entidade de serviço.AZURE_CLIENT_SECRET
– A senha/credencial gerada para a entidade de serviço.
Dica
Durante o desenvolvimento, considere usar o pacote python-dotenv para definir essas variáveis de ambiente. O python-dotenv carrega variáveis de ambiente de arquivos .env
. O arquivo padrão .gitignore
para Python exclui automaticamente os arquivos .env
e, portanto, eles não devem ser verificados em nenhum repositório GitHub durante o desenvolvimento.
O exemplo a seguir demonstra o uso do python-dotenv para carregar as variáveis de ambiente de um arquivo .env
e, em seguida, usar DefaultAzureCredential
para criar o objeto de credencial:
from dotenv import load_dotenv
if ( os.environ['ENVIRONMENT'] == 'development'):
print("Loading environment variables from .env file")
load_dotenv(".env")
from azure.identity import DefaultAzureCredential
credential = DefaultAzureCredential()
# Check if given credential can get token successfully.
credential.get_token("https://management.azure.com/.default")
Depois que o objeto de credencial for criado, a classe MLClient será usada para se conectar ao workspace. Por exemplo, o código a seguir usa o método from_config()
para carregar informações de conexão:
try:
ml_client = MLClient.from_config(credential=credential)
except Exception as ex:
# NOTE: Update following workspace information to contain
# your subscription ID, resource group name, and workspace name
client_config = {
"subscription_id": "<SUBSCRIPTION_ID>",
"resource_group": "<RESOURCE_GROUP>",
"workspace_name": "<AZUREML_WORKSPACE_NAME>",
}
# write and reload from config file
import json, os
config_path = "../.azureml/config.json"
os.makedirs(os.path.dirname(config_path), exist_ok=True)
with open(config_path, "w") as fo:
fo.write(json.dumps(client_config))
ml_client = MLClient.from_config(credential=credential, path=config_path)
print(ml_client)
A entidade de serviço também pode ser usada para autenticação na API REST do Azure Machine Learning (versão prévia). Você usa ofluxo de concessão de credenciais de cliente do Microsoft Entra ID, que permite chamadas de serviço para serviço para autenticação sem periféricos em fluxos de trabalho automatizados.
Importante
Se você estiver usando a ADAL (Biblioteca de Autenticação do Azure Active Directory) para obter credenciais, recomendamos que migre para a MSAL (Biblioteca de Autenticação da Microsoft). O suporte à ADAL terminou em 30 de junho de 2022.
Para obter informações e exemplos sobre como se autenticar com a MSAL, confira os seguintes artigos:
- JavaScript – Como migrar um aplicativo JavaScript de ADAL.js para a MSAL.js.
- Node.js – Como migrar um aplicativo Node.js da Biblioteca de Autenticação da Microsoft para a MSAL.
- Python – Guia de migração da Biblioteca de Autenticação da Microsoft para a MSAL para Python.
Use a autenticação de identidade gerenciada
APLICA-SE A: SDK do Python azure-ai-ml v2 (atual)
A autenticação com uma identidade gerenciada usa o pacote de Identidade do Azure para Python. Para autenticar no espaço de trabalho de uma VM ou cluster de cálculo configurado com uma identidade gerenciada, use a DefaultAzureCredential
classe. Essa classe detecta automaticamente se uma identidade gerenciada está sendo usada e usa a identidade gerenciada para se autenticar nos serviços do Azure.
O exemplo a seguir demonstra o uso da classe DefaultAzureCredential
para criar o objeto de credencial e, em seguida, o uso da classe MLClient
para se conectar ao workspace:
from azure.identity import DefaultAzureCredential
credential = DefaultAzureCredential()
# Check if given credential can get token successfully.
credential.get_token("https://management.azure.com/.default")
try:
ml_client = MLClient.from_config(credential=credential)
except Exception as ex:
# NOTE: Update following workspace information to contain
# your subscription ID, resource group name, and workspace name
client_config = {
"subscription_id": "<SUBSCRIPTION_ID>",
"resource_group": "<RESOURCE_GROUP>",
"workspace_name": "<AZUREML_WORKSPACE_NAME>",
}
# write and reload from config file
import json, os
config_path = "../.azureml/config.json"
os.makedirs(os.path.dirname(config_path), exist_ok=True)
with open(config_path, "w") as fo:
fo.write(json.dumps(client_config))
ml_client = MLClient.from_config(credential=credential, path=config_path)
print(ml_client)
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. Veja a seguir as IDs do aplicativo a serem usadas para acesso condicional:
Application ID | Nome | Observação |
---|---|---|
d7304df8-741f-47d3-9bc2-df0e24e2071f | Aplicativo Web do Azure Machine Learning Workbench | Azure Machine Learning Studio |
cb2ff863-7f30-4ced-ab89-a00194bcf6d9 | Aplicativo do Estúdio de IA do Azure | Estúdio de IA do Azure |
Verificar a entidade de serviço
Antes de adicionar a política de acesso condicional, verifique se a ID do aplicativo está listada na seção Aplicativos empresariais do portal do Azure:
Importante
Para executar as etapas nesta seção, você deve ter Microsoft Entra ID P2. Para obter informações, confira Licenciamento do Microsoft Entra.
Pesquise Aplicativos empresariais no campo de pesquisa na parte superior do portal e selecione a entrada do aplicativo empresarial.
Em Aplicativos empresariais, use o campo Pesquisar por nome do aplicativo ou ID do objeto para pesquisar a entrada que você deseja usar com acesso condicional. Se uma entrada for exibida, uma entidade de serviço já existe para a ID do aplicativo. Ignore o restante das etapas nesta seção e vá para a seção Adicionar acesso condicional.
Importante
O único filtro deve ser ID do aplicativo começa com. Remova qualquer outro filtro que possa estar aplicado.
Se nenhuma entrada for exibida, use o seguinte cmdlet do Azure PowerShell para criar uma entidade de serviço para a ID do aplicativo:
New-AzAdServicePrincipal -ApplicationId "application-ID"
Por exemplo,
New-AzADServicePrincipal -ApplicationId "d7304df8-741f-47d3-9bc2-df0e24e2071f"
.Depois de criar a entidade de serviço, retorne aos Aplicativos empresariais e verifique se agora você pode encontrar a ID do aplicativo. Você pode encontrar a lista de IDs na seção Usar Acesso Condicional.
Adicionar acesso condicional
Para usar o Acesso Condicional, atribua a política de Acesso Condicional à ID do aplicativo. Se o aplicativo não aparecer no Acesso Condicional, use as etapas na seção Verificar entidade de serviço.