Compartilhar via


Usar identidades gerenciadas com a CLI do Azure Machine Learning v1

APLICA-SE A: SDK do Python do AzureML v1

APLICA-SE A: Extensão ml da CLI do Azure v1

Identidades gerenciadas permitem que você configure seu espaço de trabalho com as permissões mínimas necessárias para acessar recursos.

Ao configurar Azure Machine Learning espaço de trabalho de maneira confiável, é importante garantir que 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ços de trabalho precisa de acesso ao registro de contêiner do Azure (ACR) para imagens do Docker e contas de armazenamento para dados de treinamento.

Além disso, as identidades gerenciadas permitem um controle refinado sobre as 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 Azure Machine Learning sem precisar habilitar o acesso de usuário administrador ao ACR.
  • Acesse um ACR privado externo ao seu espaço de trabalho para efetuar pull de imagens base para treinamento ou inferência.
  • Crie um espaço de trabalho com identidade gerenciada atribuída pelo usuário para acessar os recursos associados.

Pré-requisitos

Configurar identidades gerenciadas

Em algumas situações, é necessário impedir que o usuário administrador acesse o Registro de Contêiner do Azure. Por exemplo, o ACR pode ser compartilhado e você precisa desautorizar o acesso de administrador por outros usuários. Ou, criar ACR com o usuário administrador habilitado não é permitido por uma política de nível de assinatura.

Importante

Ao usar Azure Machine Learning para inferência na ACI (instância de contêiner do Azure), o acesso de usuário de administrador no ACR é necessário. Não o desabilite se você planeja implantar modelos em ACI para inferência.

Quando você cria ACR sem habilitar o acesso de usuário administrador, as identidades gerenciadas são usadas para acessar o ACR para criar e extrair imagens do Docker.

Você pode colocar seu próprio ACR com o usuário administrador desabilitado ao criar o espaço de trabalho. Como alternativa, permita Azure Machine Learning criar ACR de espaço de trabalho e desabilitar o usuário administrador posteriormente.

Traga sua própria ACR

Se o usuário administrador do ACR não for permitido pela política de assinatura, primeiro crie ACR sem usuário administrador e, em seguida, associe-o ao espaço de trabalho. Além disso, se você tiver um ACR existente com o usuário administrador desabilitado, você poderá anexá-lo ao espaço de trabalho.

Crie um ACR de CLI do Azure sem definir o --admin-enabled argumento ou de portal do Azure sem habilitar o usuário administrador. Em seguida, ao criar Azure Machine Learning espaço de trabalho, especifique a ID de recurso do Azure do ACR. O seguinte exemplo demonstra como criar um workspace do Azure Machine Learning que usa um ACR existente:

Dica

Para obter o valor do --container-registry parâmetro, use o comando AZ ACR show para mostrar informações de seu ACR. O id campo contém a ID de recurso para o 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>

Deixe que o serviço do Machine Learning do Azure crie um espaço de trabalho ACR

Se você não trazer seu próprio ACR, Serviço do Azure Machine Learning criará um para você quando você executar uma operação que precisa de um. Por exemplo, envie uma execução de treinamento para Computação do Machine Learning, 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 administrador habilitado e você precisará desabilitar o usuário administrador manualmente.

  1. Criar um novo workspace

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

  3. Obtenha o nome do ACR criado pelo cluster:

    az ml workspace show -w <my workspace> \
    -g <my resource group>
    --query containerRegistry
    

    Esse comando retorna um valor semelhante ao texto a seguir. Você quer apenas a última parte do texto, que é o nome da instância do ACR:

    /subscriptions/<subscription id>/resourceGroups/<my resource group>/providers/MicrosoftContainerReggistry/registries/<ACR instance name>
    
  4. Atualize o ACR para desabilitar o usuário administrador:

    az acr update --name <ACR instance name> --admin-enabled false
    

Criar computação com identidade gerenciada para acessar imagens do Docker para treinamento

Para acessar o ACR do espaço de trabalho, crie o cluster de computação do Machine Learning com a identidade gerenciada atribuída pelo sistema habilitada. Você pode habilitar a identidade de portal do Azure ou Studio ao criar a computação ou de CLI do Azure usando o abaixo. Para obter mais informações, consulte usando a identidade gerenciada com clusters de computação.

Ao criar um cluster de computação com o AmlComputeProvisioningConfiguration, use o identity_type parâmetro para definir o tipo de identidade gerenciada.

Uma identidade gerenciada recebe automaticamente a função ACRPull no ACR do espaço de trabalho para habilitar a extração de imagens do Docker para treinamento.

Observação

Se você criar a computação primeiro, antes de o ACR do espaço de trabalho ter sido criado, você precisará atribuir a função ACRPull manualmente.

Acessar imagens base do ACR privado

Por padrão, o Azure Machine Learning usa imagens base do Docker que vêm de um repositório público gerenciado pela Microsoft. Em seguida, ele cria seu ambiente de treinamento ou inferência nessas imagens. Para saber mais, confira O que são Ambientes ML.

Para usar uma imagem de base personalizada interna à sua empresa, você pode usar identidades gerenciadas para acessar seu ACR privado. Há dois casos de uso:

  • Use a imagem base para treinamento como está.
  • Crie Azure Machine Learning imagem gerenciada com imagem personalizada como base.

Extrair a imagem base do Docker para o cluster de computação do Machine Learning para treinamento como está

Crie o cluster de computação do Machine Learning com a identidade gerenciada atribuída pelo sistema habilitada conforme descrito anteriormente. Em seguida, determine a ID de entidade de segurança da identidade gerenciada.

APLICA-SE A: Extensão ML da CLI do Azure 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: Extensão ML da CLI do Azure 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 de ACRPull de identidade de serviço gerenciada 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>"

Por fim, ao enviar uma execução de treinamento, especifique o local da imagem base na definição do ambiente.

APLICA-SE A: SDK azureml para Pythonv1

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, Serviço do Azure Machine Learning tentará criar uma nova imagem do Docker e falhar, porque apenas o cluster de computação tem acesso para efetuar pull da imagem base do ACR.

Crie Azure Machine Learning ambiente gerenciado na imagem base do ACR privado para treinamento ou inferência

APLICA-SE A: Extensão ML da CLI do Azure v1

Nesse cenário, Serviço do Azure Machine Learning cria o ambiente de treinamento ou inferência sobre uma imagem base que você fornece de um ACR privado. Como a tarefa de criação de imagem ocorre 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 a identidade ACRPull acesso ao ACR privado.

  2. Conceda à identidade gerenciada atribuída pelo sistema do 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 da entidade de segurança da identidade gerenciada atribuída pelo sistema do 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 da identidade gerenciada atribuída pelo usuário é a ID do recurso do Azure da identidade atribuída pelo 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 a ID do cliente da identidade gerenciada atribuída pelo usuário em conexões de espaço de trabalho usando o método espaços de trabalho.set_connection:

    APLICA-SE A: SDK do Python 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 for 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: SDK do Python 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 explicitamente a identidade do registro, ela substituirá todas as conexões de espaço de trabalho especificadas anteriormente:

    APLICA-SE A: SDK do Python 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 o usuário administrador, conforme descrito anteriormente, você pode acessar as imagens do Docker para inferência sem chaves de administração do seu AKS (serviço kubernetes do Azure). Quando você cria ou anexa AKS ao espaço de trabalho, a entidade de serviço do cluster recebe automaticamente o acesso de ACRPull ao ACR do espaço de trabalho.

Observação

Se você colocar 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 workspace, você pode trazer sua própria identidade gerenciada atribuída pelo usuário que será usada para acessar os recursos associados: ACR, KeyVault, Armazenamento e App Insights.

Importante

Ao criar um workspace com identidade gerenciada atribuída pelo usuário, você deve criar os recursos associados por conta própria e conceder as funções de identidade gerenciada nesses recursos. Use o modelo de 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 workspace. Ao usar a CLI, especifique a ID usando o --primary-user-assigned-identity parâmetro. Ao usar o SDK, use primary_user_assigned_identity. Veja a seguir exemplos de como usar o CLI do Azure e o Python para criar um novo espaço de trabalho usando estes parâmetros:

CLI do Azure

APLICA-SE A: Extensão ML da CLI do Azure v1

az ml workspace create -w <workspace name> -g <resource group> --primary-user-assigned-identity <managed identity ARM ID>

Python

APLICA-SE A: SDK do Python 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 Key Vault. Use o argumento atribuído pelo usuário-identidade-para-CMK-Encryption (CLI) ou user_assigned_identity_for_cmk_encryption (SDK) para passar a identidade gerenciada. Essa identidade gerenciada pode ser igual ou diferente da identidade gerenciada atribuída ao usuário primário do espaço de trabalho.

Próximas etapas