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-mlAzure 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 mlextensã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.

  1. Criar uma nova área de trabalho

    az ml workspace show -n <my workspace> -g <my resource group>
    
  2. Execute uma ação que exija ACR. Por exemplo, o tutorial sobre o treinamento de um modelo.

  3. 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>
    
  4. 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.

  1. Crie uma identidade gerenciada atribuída pelo usuário e conceda à identidade ACRPull acesso ao ACR privado.

  2. 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.

    1. 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
      
    2. 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>.

  3. 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>"})
    
  4. 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