Usar identidades gerenciadas com a CLI do Azure Machine Learning v1
APLICA-SE A: Python SDK azureml v1
APLICA-SE A: Azure CLI ml extension v1
As identidades gerenciadas permitem que você configure seu espaço de trabalho com as permissões mínimas necessárias para acessar recursos.
Ao configurar o espaço de trabalho do Azure Machine Learning de maneira confiável, é importante garantir que os diferentes serviços associados ao espaço de trabalho tenham o nível correto de acesso. Por exemplo, durante o fluxo de trabalho de aprendizado de máquina, o espaço de trabalho precisa de acesso ao Azure Container Registry (ACR) para imagens do Docker e contas de armazenamento para dados de treinamento.
Além disso, as identidades gerenciadas permitem um controle refinado sobre permissões, por exemplo, você pode conceder ou revogar o acesso de recursos de computação específicos a um ACR específico.
Neste artigo, você aprenderá a usar identidades gerenciadas para:
- Configure e use o ACR para seu espaço de trabalho do Azure Machine Learning sem precisar habilitar o acesso do usuário administrador ao ACR.
- Aceda a um ACR privado externo ao seu espaço de trabalho, para extrair imagens base para treino ou inferência.
- Crie espaço de trabalho com identidade gerenciada atribuída pelo usuário para acessar recursos associados.
Pré-requisitos
Uma área de trabalho do Azure Machine Learning. Para obter mais informações, consulte Criar recursos de espaço de trabalho.
A extensão da CLI do Azure para o serviço de Aprendizado de Máquina
Importante
Alguns dos comandos da CLI do Azure neste artigo usam a extensão , ou v1, para o
azure-cli-ml
Azure Machine Learning. O suporte para a extensão v1 terminará em 30 de setembro de 2025. Você poderá instalar e usar a extensão v1 até essa data.Recomendamos que você faça a transição para a
ml
extensão , ou v2, antes de 30 de setembro de 2025. Para obter mais informações sobre a extensão v2, consulte Extensão CLI do Azure ML e Python SDK v2.O SDK Python do Azure Machine Learning.
Para atribuir funções, o logon da sua assinatura do Azure deve ter a função de Operador de Identidade Gerenciada ou outra função que conceda as ações necessárias (como Proprietário).
Você deve estar familiarizado com a criação e o trabalho com identidades gerenciadas.
Configurar identidades geridas
Em algumas situações, é necessário não permitir o acesso do usuário administrador ao Registro de Contêiner do Azure. Por exemplo, o ACR pode ser compartilhado e você precisa não permitir o acesso de administrador por outros usuários. Ou, a criação de ACR com o usuário administrador habilitado não é permitida por uma política de nível de assinatura.
Importante
Ao usar o Azure Machine Learning para inferência na Instância de Contêiner do Azure (ACI), o acesso de usuário administrador no ACR é necessário. Não o desative se planear implementar modelos do ACI para inferência.
Quando você cria o ACR sem habilitar o acesso do usuário administrador, as identidades gerenciadas são usadas para acessar o ACR para criar e extrair imagens do Docker.
Você pode trazer seu próprio ACR com o usuário administrador desativado ao criar o espaço de trabalho. Como alternativa, deixe o Azure Machine Learning criar ACR de espaço de trabalho e desabilitar o usuário administrador posteriormente.
Traga o seu próprio ACR
Se o usuário administrador do ACR não for permitido pela política de assinatura, você deverá primeiro criar o ACR sem usuário administrador e, em seguida, associá-lo ao espaço de trabalho. Além disso, se você tiver o ACR existente com o usuário admin desabilitado, poderá anexá-lo ao espaço de trabalho.
Crie o ACR a partir da CLI do Azure sem definir --admin-enabled
o argumento ou do portal do Azure sem habilitar o usuário administrador. Em seguida, ao criar o espaço de trabalho do Azure Machine Learning, especifique a ID do recurso do Azure do ACR. O exemplo a seguir demonstra a criação de um novo espaço de trabalho do Azure Machine Learning que usa um ACR existente:
Gorjeta
Para obter o valor para o --container-registry
parâmetro, use o comando az acr show para mostrar informações para o seu ACR. O id
campo contém o ID do recurso para o seu ACR.
az ml workspace create -w <workspace name> \
-g <workspace resource group> \
-l <region> \
--container-registry /subscriptions/<subscription id>/resourceGroups/<acr resource group>/providers/Microsoft.ContainerRegistry/registries/<acr name>
Permitir que o serviço Azure Machine Learning crie o ACR do espaço de trabalho
Se você não trouxer seu próprio ACR, o serviço Azure Machine Learning criará um para você quando você executar uma operação que precise de um. Por exemplo, envie uma execução de treinamento para o Machine Learning Compute, crie um ambiente ou implante um ponto de extremidade de serviço Web. O ACR criado pelo espaço de trabalho terá o usuário admin habilitado e você precisará desabilitar o usuário admin manualmente.
Criar uma nova área de trabalho
az ml workspace show -n <my workspace> -g <my resource group>
Execute uma ação que exija ACR. Por exemplo, o tutorial sobre o treinamento de um modelo.
Obtenha o nome ACR criado pelo cluster:
az ml workspace show -w <my workspace> \ -g <my resource group> --query containerRegistry
Este comando retorna um valor semelhante ao texto a seguir. Você deseja apenas a última parte do texto, que é o nome da instância ACR:
/subscriptions/<subscription id>/resourceGroups/<my resource group>/providers/MicrosoftContainerReggistry/registries/<ACR instance name>
Atualize o ACR para desativar o usuário administrador:
az acr update --name <ACR instance name> --admin-enabled false
Crie computação com identidade gerenciada para acessar imagens do Docker para treinamento
Para acessar o ACR do espaço de trabalho, crie um cluster de computação de aprendizado de máquina com a identidade gerenciada atribuída ao sistema habilitada. Você pode habilitar a identidade do portal do Azure ou do Studio ao criar computação ou da CLI do Azure usando o abaixo. Para obter mais informações, consulte Usando identidade gerenciada com clusters de computação.
Ao criar um cluster de computação com AmlComputeProvisioningConfiguration, use o identity_type
parâmetro para definir o tipo de identidade gerenciada.
Uma identidade gerenciada recebe automaticamente a função ACRPull no espaço de trabalho ACR para permitir a extração de imagens do Docker para treinamento.
Nota
Se você criar computação primeiro, antes que o ACR do espaço de trabalho tenha sido criado, você terá que atribuir a função ACRPull manualmente.
Aceda a imagens de base a partir de ACR privado
Por padrão, o Aprendizado de Máquina do Azure usa imagens de base do Docker provenientes de um repositório público gerenciado pela Microsoft. Em seguida, ele constrói seu ambiente de treinamento ou inferência nessas imagens. Para obter mais informações, consulte O que são ambientes de ML?.
Para usar uma imagem de base personalizada interna à sua empresa, você pode usar identidades gerenciadas para acessar seu ACR privado. Existem dois casos de uso:
- Use a imagem base para treinamento como está.
- Crie uma imagem gerenciada do Azure Machine Learning com uma imagem personalizada como base.
Puxe a imagem base do Docker para o cluster de computação de aprendizado de máquina para treinamento como está
Crie um cluster de computação de aprendizado de máquina com a identidade gerenciada atribuída ao sistema habilitada, conforme descrito anteriormente. Em seguida, determine a ID principal da identidade gerenciada.
APLICA-SE A: Azure CLI ml extension v1
az ml computetarget amlcompute identity show --name <cluster name> -w <workspace> -g <resource group>
Opcionalmente, você pode atualizar o cluster de computação para atribuir uma identidade gerenciada atribuída pelo usuário:
APLICA-SE A: Azure CLI ml extension v1
az ml computetarget amlcompute identity assign --name <cluster name> \
-w $mlws -g $mlrg --identities <my-identity-id>
Para permitir que o cluster de computação extraia as imagens base, conceda a função ACRPull de identidade de serviço gerenciado no ACR privado
az role assignment create --assignee <principal ID> \
--role acrpull \
--scope "/subscriptions/<subscription ID>/resourceGroups/<private ACR resource group>/providers/Microsoft.ContainerRegistry/registries/<private ACR name>"
Finalmente, ao enviar uma execução de treinamento, especifique o local da imagem base na definição do ambiente.
APLICA-SE A: Python SDK azureml v1
from azureml.core import Environment
env = Environment(name="private-acr")
env.docker.base_image = "<ACR name>.azurecr.io/<base image repository>/<base image version>"
env.python.user_managed_dependencies = True
Importante
Para garantir que a imagem base seja puxada diretamente para o recurso de computação, defina user_managed_dependencies = True
e não especifique um Dockerfile. Caso contrário, o serviço Azure Machine Learning tentará criar uma nova imagem do Docker e falhará, porque apenas o cluster de computação tem acesso para extrair a imagem base do ACR.
Crie o ambiente gerenciado do Azure Machine Learning na imagem base do ACR privado para treinamento ou inferência
APLICA-SE A: Azure CLI ml extension v1
Nesse cenário, o serviço Azure Machine Learning cria o ambiente de treinamento ou inferência sobre uma imagem base fornecida por um ACR privado. Como a tarefa de construção de imagem acontece no ACR do espaço de trabalho usando Tarefas ACR, você deve executar mais etapas para permitir o acesso.
Crie uma identidade gerenciada atribuída pelo usuário e conceda à identidade ACRPull acesso ao ACR privado.
Conceda à identidade gerenciada atribuída ao sistema de espaço de trabalho uma função de Operador de Identidade Gerenciada na identidade gerenciada atribuída pelo usuário da etapa anterior. Essa função permite que o espaço de trabalho atribua a identidade gerenciada atribuída pelo usuário à Tarefa ACR para criar o ambiente gerenciado.
Obtenha a ID principal da identidade gerenciada atribuída ao sistema de espaço de trabalho:
az ml workspace show -w <workspace name> -g <resource group> --query identityPrincipalId
Conceda a função de Operador de Identidade Gerenciada:
az role assignment create --assignee <principal ID> --role managedidentityoperator --scope <user-assigned managed identity resource ID>
A ID do recurso de identidade gerenciada atribuída pelo usuário é a ID de recurso do Azure da identidade atribuída ao usuário, no formato
/subscriptions/<subscription ID>/resourceGroups/<resource group>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<user-assigned managed identity name>
.
Especifique o ACR externo e o ID do cliente da identidade gerenciada atribuída pelo usuário em conexões de espaço de trabalho usando Workspace.set_connection método:
APLICA-SE A: Python SDK azureml v1
workspace.set_connection( name="privateAcr", category="ACR", target = "<acr url>", authType = "RegistryConnection", value={"ResourceId": "<user-assigned managed identity resource id>", "ClientId": "<user-assigned managed identity client ID>"})
Quando a configuração estiver concluída, você poderá usar as imagens base do ACR privado ao criar ambientes para treinamento ou inferência. O trecho de código a seguir demonstra como especificar o ACR da imagem base e o nome da imagem em uma definição de ambiente:
APLICA-SE A: Python SDK azureml v1
from azureml.core import Environment env = Environment(name="my-env") env.docker.base_image = "<acr url>/my-repo/my-image:latest"
Opcionalmente, você pode especificar a URL do recurso de identidade gerenciada e a ID do cliente na própria definição de ambiente usando RegistryIdentity. Se você usar a identidade do Registro explicitamente, ela substituirá todas as conexões de espaço de trabalho especificadas anteriormente:
APLICA-SE A: Python SDK azureml v1
from azureml.core.container_registry import RegistryIdentity identity = RegistryIdentity() identity.resource_id= "<user-assigned managed identity resource ID>" identity.client_id="<user-assigned managed identity client ID>" env.docker.base_image_registry.registry_identity=identity env.docker.base_image = "my-acr.azurecr.io/my-repo/my-image:latest"
Usar imagens do Docker para inferência
Depois de configurar o ACR sem usuário administrador, conforme descrito anteriormente, você pode acessar imagens do Docker para inferência sem chaves de administrador do seu serviço Kubernetes do Azure (AKS). Quando você cria ou anexa o AKS ao espaço de trabalho, a entidade de serviço do cluster recebe automaticamente acesso ACRPull ao espaço de trabalho ACR.
Nota
Se você trouxer seu próprio cluster AKS, o cluster deverá ter a entidade de serviço habilitada em vez da identidade gerenciada.
Criar espaço de trabalho com identidade gerenciada atribuída pelo usuário
Ao criar um espaço de trabalho, você pode trazer sua própria identidade gerenciada atribuída pelo usuário que será usada para acessar os recursos associados: ACR, KeyVault, Storage e App Insights.
Importante
Ao criar um espaço de trabalho com identidade gerenciada atribuída pelo usuário, você mesmo deve criar os recursos associados e conceder as funções de identidade gerenciadas nesses recursos. Use o modelo ARM de atribuição de função para fazer as atribuições.
Use a CLI do Azure ou o SDK do Python para criar o espaço de trabalho. Ao usar a CLI, especifique a ID usando o --primary-user-assigned-identity
parâmetro. Ao usar o SDK, use primary_user_assigned_identity
. A seguir estão exemplos de como usar a CLI do Azure e o Python para criar um novo espaço de trabalho usando esses parâmetros:
CLI do Azure
APLICA-SE A: Azure CLI ml extension v1
az ml workspace create -w <workspace name> -g <resource group> --primary-user-assigned-identity <managed identity ARM ID>
Python
APLICA-SE A: Python SDK azureml v1
from azureml.core import Workspace
ws = Workspace.create(name="workspace name",
subscription_id="subscription id",
resource_group="resource group name",
primary_user_assigned_identity="managed identity ARM ID")
Você também pode usar um modelo ARM para criar um espaço de trabalho com identidade gerenciada atribuída pelo usuário.
Para um espaço de trabalho com chaves gerenciadas pelo cliente para criptografia, você pode passar uma identidade gerenciada atribuída pelo usuário para autenticar do armazenamento para o Cofre de Chaves. Use o argumento user-assigned-identity-for-cmk-encryption (CLI) ou user_assigned_identity_for_cmk_encryption (SDK) para transmitir a identidade gerenciada. Essa identidade gerenciada pode ser igual ou diferente da identidade gerenciada atribuída ao usuário principal do espaço de trabalho.
Próximos passos
- Saiba mais sobre segurança empresarial no Azure Machine Learning
- Saiba mais sobre o acesso a dados baseado em identidade
- Saiba mais sobre identidades gerenciadas em cluster de computação.