Configurar a autenticação entre o Azure Machine Learning e outros serviços

APLICA-SE A:Extensão de ML da CLI do Azure v2 (atual)SDK do Python azure-ai-ml v2 (atual)

O Azure Machine Learning consiste em vários serviços do Azure. Há várias maneiras pelas quais a autenticação pode ocorrer entre o Azure Machine Learning e os serviços dos quais ele depende.

  • O workspace do Azure Machine Learning usa uma identidade gerenciada para se comunicar com outros serviços. Por padrão, essa é uma identidade gerenciada atribuída pelo sistema. Em vez disso, você também pode usar uma identidade gerenciada atribuída pelo usuário.
  • O Azure Machine Learning usa o ACR (Registro de Contêiner do Azure) para armazenar as imagens do Docker usadas para treinar e implantar modelos. Se você permitir que o Azure Machine Learning crie automaticamente o ACR, ele habilitará a conta de administrador.
  • O cluster de cálculo do Azure Machine Learning usa uma identidade gerenciada para recuperar as informações de conexão dos armazenamentos de dados do Azure Key Vault e para efetuar pull de imagens do Docker do ACR. Você também pode configurar o acesso baseado em identidade para os armazenamentos de dados, que usarão a identidade gerenciada do cluster de cálculo.
  • O acesso a dados pode ocorrer em vários caminhos, dependendo do serviço de armazenamento de dados e da configuração. Por exemplo, a autenticação no armazenamento de dados pode usar uma chave de conta, token, entidade de segurança, identidade gerenciada ou identidade do usuário.
  • Os pontos de extremidade online gerenciados podem usar uma identidade gerenciada para acessar os recursos do Azure ao executar a inferência. Para obter mais informações, confira Acessar recursos do Azure de um ponto de extremidade online.

Pré-requisitos

Antes de seguir as etapas neste artigo, verifique se você tem os seguintes pré-requisitos:

  • 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 o proprietário).

  • Você deve estar familiarizado com a criação e o trabalho com identidades gerenciadas.

Tipos de identidade e Registro de Contêiner do Azure

A tabela a seguir lista a matriz de suporte ao autenticar no Registro de Contêiner do Azure, dependendo do método de autenticação e da configuração de acesso à rede pública do Registro de Contêiner do Azure.

Método de autenticação Acesso àrede pública
desabilitado
Acesso à rede pública do
Registro de Contêiner do Azure habilitado
Usuário administrador
Identidade gerenciada atribuída pelo sistema do workspace
Identidade gerenciada atribuída pelo usuário do workspace
com a função ACRPull atribuída à identidade

Identidade gerenciada atribuída pelo usuário

Workspace

Você pode adicionar uma identidade gerenciada atribuída pelo usuário ao criar um workspace do Azure Machine Learning no portal do Azure. Use as seguintes etapas ao criar o workspace:

  1. Na página Básico, selecione a Conta de Armazenamento do Azure, o Registro de Contêiner do Azure e o Azure Key Vault que você deseja usar com o workspace.
  2. Na página Identidade, selecione Identidade atribuída pelo usuário e selecione a identidade gerenciada a ser usada.

As atribuições de função RBAC do Azure a seguir são necessárias na sua identidade gerenciada atribuída pelo usuário para que o workspace do Azure Machine Learning acesse os dados nos recursos associados ao workspace.

Recurso Permissão
Workspace do Azure Machine Learning Colaborador
Armazenamento do Azure Colaborador (painel de controle) + Colaborador de Dados do Blob de Armazenamento (plano de dados, opcional, para habilitar a visualização de dados no estúdio do Azure Machine Learning)
Azure Key Vault (quando o modelo de permissão RBAC é usado) Colaborador (painel de controle) + Administrador do Cofre de chaves (plano de dados)
Azure Key Vault (quando o modelo de permissão de políticas de acesso é usado) Colaborador + qualquer permissão de política de acesso além de operações de limpeza
Registro de Contêiner do Azure Colaborador
Azure Application Insights Colaborador

Para a criação automatizada de atribuições de função na sua identidade gerenciada atribuída pelo usuário, você poderá usar este modelo do ARM.

Dica

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 os parâmetros user-assigned-identity-for-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.

Para criar um espaço de trabalho com identidade atribuída pelo usuário, use um dos seguintes métodos:

APLICA-SE A:Extensão de ML da CLI do Azure v2 (atual)

az ml workspace create -f workspace_creation_with_multiple_UAIs.yml --subscription <subscription ID> --resource-group <resource group name> --name <workspace name>

Onde o conteúdo de workspace_creation_with_multiple_UAIs.yml é o seguinte:

location: <region name>
identity:
   type: user_assigned
   user_assigned_identities:
    '<UAI resource ID 1>': {}
    '<UAI resource ID 2>': {}
storage_account: <storage acccount resource ID>
key_vault: <key vault resource ID>
image_build_compute: <compute(virtual machine) resource ID>
primary_user_assigned_identity: <one of the UAI resource IDs in the above list>

Para atualizar identidades atribuídas pelo usuário para um workspace, incluindo adicionar uma nova ou excluir as existentes, use um dos seguintes métodos:

APLICA-SE A:Extensão de ML da CLI do Azure v2 (atual)

az ml workspace update -f workspace_update_with_multiple_UAIs.yml --subscription <subscription ID> --resource-group <resource group name> --name <workspace name>

Onde o conteúdo de workspace_update_with_multiple_UAIs.yml é o seguinte:

identity:
   type: user_assigned
   user_assigned_identities:
    '<UAI resource ID 1>': {}
    '<UAI resource ID 2>': {}
primary_user_assigned_identity: <one of the UAI resource IDs in the above list>

Dica

Para adicionar um novo UAI, você pode especificar a nova ID de UAI na seção user_assigned_identities além dos UAIs existentes. É necessário passar todas as IDs de UAI existentes.
Para excluir uma ou mais UAIs existentes, você pode colocar as IDs de UAI que precisam ser preservadas na seção user_assigned_identities, as IDs restantes da UAI seriam excluídas.
Para atualizar o tipo de identidade do SAI para o UAI| SAI, você pode alterar o tipo de "user_assigned" para "system_assigned, user_assigned".

Cluster de computação

Observação

Os clusters de computação do Azure Machine Learning oferecem suporte a apenas uma identidade atribuída pelo sistema ou a várias identidades atribuídas pelo usuário, não a ambas ao mesmo tempo.

A identidade gerenciada padrão é a identidade gerenciada atribuída pelo sistema ou a primeira identidade gerenciada atribuída pelo usuário.

Durante uma execução, existem duas aplicações de uma identidade:

  1. O sistema usa uma identidade para configurar as montagens de armazenamento do usuário, o registro do contêiner e os armazenamentos de dados.

    • Nesse caso, o sistema usará a identidade gerenciada por padrão.
  2. Você aplicará uma identidade para acessar os recursos de dentro do código para um trabalho enviado:

    • Nesse caso, forneça o client_id correspondente à identidade gerenciada que você deseja usar para recuperar uma credencial.
    • Como alternativa, obtenha o ID do cliente da identidade atribuída pelo usuário por meio da variável de ambiente DEFAULT_IDENTITY_CLIENT_ID.

    Por exemplo, para recuperar um token para um armazenamento de dados com a identidade gerenciada por padrão:

    client_id = os.environ.get('DEFAULT_IDENTITY_CLIENT_ID')
    credential = ManagedIdentityCredential(client_id=client_id)
    token = credential.get_token('https://storage.azure.com/')
    

Para configurar um cluster de cálculo com identidade gerenciada, use um dos seguintes métodos:

APLICA-SE A:Extensão de ML da CLI do Azure v2 (atual)

az ml compute create -f create-cluster.yml

Em que o conteúdo de create-cluster.yml é o seguinte:

$schema: https://azuremlschemas.azureedge.net/latest/amlCompute.schema.json 
name: basic-example
type: amlcompute
size: STANDARD_DS3_v2
min_instances: 0
max_instances: 2
idle_time_before_scale_down: 120
identity:
  type: user_assigned
  user_assigned_identities: 
    - resource_id: "identity_resource_id"

Para comparação, o exemplo a seguir é de um arquivo YAML que cria um cluster que usa uma identidade gerenciada atribuída pelo sistema:

$schema: https://azuremlschemas.azureedge.net/latest/amlCompute.schema.json 
name: basic-example
type: amlcompute
size: STANDARD_DS3_v2
min_instances: 0
max_instances: 2
idle_time_before_scale_down: 120
identity:
  type: system_assigned

Se você tiver um cluster de cálculo existente, poderá alternar entre identidade gerenciada pelo usuário e pelo sistema. Os exemplos a seguir demonstram como alterar a configuração:

Identidade gerenciada atribuída pelo usuário

export MSI_NAME=my-cluster-identity
export COMPUTE_NAME=mycluster-msi

does_compute_exist()
{
  if [ -z $(az ml compute show -n $COMPUTE_NAME --query name) ]; then
    echo false
  else
    echo true
  fi
}

echo "Creating MSI $MSI_NAME"
# Get the resource id of the identity
IDENTITY_ID=$(az identity show --name "$MSI_NAME" --query id -o tsv | tail -n1 | tr -d "[:cntrl:]" || true)
if [[ -z $IDENTITY_ID ]]; then
    IDENTITY_ID=$(az identity create -n "$MSI_NAME" --query id -o tsv | tail -n1 | tr -d "[:cntrl:]")
fi
echo "MSI created: $MSI_NAME"
sleep 15 # Let the previous command finish: https://github.com/Azure/azure-cli/issues/8530


echo "Checking if compute $COMPUTE_NAME already exists"
if [ "$(does_compute_exist)" == "true" ]; then
  echo "Skipping, compute: $COMPUTE_NAME exists"
else
  echo "Provisioning compute: $COMPUTE_NAME"
  az ml compute create --name "$COMPUTE_NAME" --type amlcompute --identity-type user_assigned --user-assigned-identities "$IDENTITY_ID"
fi
az ml compute update --name "$COMPUTE_NAME" --identity-type user_assigned --user-assigned-identities "$IDENTITY_ID"

Identidade gerenciada atribuída pelo sistema

export COMPUTE_NAME=mycluster-sa

does_compute_exist()
{
  if [ -z $(az ml compute show -n $COMPUTE_NAME --query name) ]; then
    echo false
  else
    echo true
  fi
}

echo "Checking if compute $COMPUTE_NAME already exists"
if [ "$(does_compute_exist)" == "true" ]; then
  echo "Skipping, compute: $COMPUTE_NAME exists"
else
  echo "Provisioning compute: $COMPUTE_NAME"
  az ml compute create --name "$COMPUTE_NAME" --type amlcompute
fi

az ml compute update --name "$COMPUTE_NAME" --identity-type system_assigned

Armazenamento de dados

Quando você cria um armazenamento de dados que usa o acesso aos dados baseado em identidade, sua conta do Azure (token do Microsoft Entra) é usada para confirmar que você tem permissão para acessar o serviço de armazenamento. No cenário de acesso a dados baseado em identidade, nenhuma credencial de autenticação é salva. Somente as informações da conta de armazenamento são armazenadas no armazenamento de dados.

Por outro lado, armazenamentos de dados que usam informações de conexão de cache de autenticação baseada em credenciais, como a chave de conta de armazenamento ou o token SAS, no cofre de chaves associado ao workspace. Essa abordagem tem a limitação de que outros usuários do workspace com permissões suficientes podem recuperar essas credenciais, o que pode ser uma preocupação de segurança para algumas organizações.

Para obter mais informações sobre como o acesso a dados é autenticado, confira o artigo Administração de dados. Para obter informações sobre como configurar o acesso baseado em identidade para os dados, confira Criar armazenamentos de dados.

Existem dois cenários no Azure Machine Learning nos quais você pode aplicar o acesso a dados com base em identidade. Esses cenários são ideais para o acesso com base em identidade quando você está trabalhando com dados confidenciais e precisa de um gerenciamento de acesso a dados mais granular:

  • Acessando serviços de armazenamento
  • Modelos de treinamento de machine learning

O acesso baseado em identidade permite usar o RBAC (controle de acesso baseado em função) para restringir quais identidades, como usuários ou recursos de computação, terão acesso aos dados.

Acessando serviços de armazenamento

Você pode se conectar aos serviços de armazenamento por meio do acesso a dados baseado em identidade com os armazenamentos de dados do Azure Machine Learning.

Quando você usa o acesso aos dados baseado em identidade, o Azure Machine Learning solicita o token do Microsoft Entra para autenticar o acesso aos dados, em vez de manter suas credenciais no armazenamento de dados. Essa abordagem permite o gerenciamento de acesso a dados no nível do armazenamento e mantém a confidencialidade das credenciais.

O mesmo comportamento será aplicado ao trabalhar com dados de maneira interativa por meio de um Jupyter Notebook no computador local ou na instância de computação.

Observação

As credenciais armazenadas por meio da autenticação com base em credencial incluem IDs da assinatura, tokens de assinatura de acesso compartilhado (SAS), chave de acesso de armazenamento e informações da entidade de serviço, como IDs do cliente e IDs do locatário.

Para ajudar a garantir que você se conecte com segurança ao seu serviço de armazenamento no Azure, o Azure Machine Learning exige que você tenha permissão para acessar o armazenamento de dados correspondente.

Aviso

Não há suporte para acesso entre locatários a contas de armazenamento. Se o acesso entre locatários for necessário para o seu cenário, entre em contato com o alias da equipe de Suporte de Dados do Azure Machine Learning em amldatasupport@microsoft.com para obter assistência com uma solução de código personalizada.

O acesso a dados com base em identidade dá suporte a conexões apenas com os seguintes serviços de armazenamento.

  • Armazenamento do Blobs do Azure
  • Azure Data Lake Storage Gen1
  • Azure Data Lake Storage Gen2

Para acessar esses serviços de armazenamento, você deve ter pelo menos acesso ao Leitor de Dados do Storage Blob da conta de armazenamento. Somente os proprietários da conta de armazenamento podem alterar seu nível de acesso por meio do portal do Azure.

Acessar dados para trabalhos de treinamento na computação usando a identidade gerenciada

Alguns cenários de aprendizado de máquina envolvem trabalhar com dados privados. Nesses casos, os cientistas de dados poderão não ter acesso direto aos dados como usuários do Microsoft Entra. Nesse cenário, a identidade gerenciada de um computador poderá ser usada para a autenticação de acesso a dados. Nesse cenário, os dados somente poderão ser acessados de uma instância de computação ou um cluster de computação de aprendizado de máquina executando um trabalho de treinamento. Com essa abordagem, o administrador concederá à instância de computação ou à identidade gerenciada do cluster de cálculo permissões de Leitor de Dados Blob de Armazenamento no armazenamento. Os cientistas de dados individuais não precisam receber acesso.

Para habilitar a autenticação com a identidade gerenciada de computação:

  • Crie a computação com a identidade gerenciada habilitada. Consulte a seção Cluster de computação ou, para instância de computação, a seção Atribuir identidade gerenciada.

    Importante

    Se a instância de computação também estiver configurada para desligamento ocioso, ela não será desligada devido à inatividade, a menos que a identidade gerenciada tenha acesso de colaborador ao espaço de trabalho do Azure Machine Learning. Para obter mais informações sobre a atribuição de permissões, consulte Gerenciar o acesso aos espaços de trabalho do Azure Machine Learning.

  • Conceda à identidade gerenciada de computação, pelo menos, a função Leitor de Dados do Blob de Armazenamento na conta de armazenamento.

  • Crie armazenamentos de dados com a autenticação baseada em identidade habilitada. Confira Criar armazenamentos de dados.

Observação

O nome da identidade gerenciada pelo sistema criada para a instância de computação ou cluster de cálculo estará no formato /workspace-name/computes/compute-name em seu Microsoft Entra ID.

Depois que a autenticação baseada em identidade estiver habilitada, a identidade gerenciada de computação será usada por padrão ao acessar dados nos seus trabalhos de treinamento. Opcionalmente, você pode se autenticar com a identidade do usuário usando as etapas descritas na próxima seção.

Para obter informações sobre como usar a configuração de RBAC do Azure para o armazenamento, consulte controles de acesso baseados em função.

Acessar dados para trabalhos de treinamento em clusters de cálculo usando a identidade do usuário

APLICA-SE A:Extensão de ML da CLI do Azure v2 (atual)

Ao treinar com clusters de cálculo do Azure Machine Learning, será possível autenticar no armazenamento com o token de usuário do Microsoft Entra.

Esse modo de autenticação permite:

  • Configure permissões refinadas, em que diferentes usuários de workspace podem ter acesso a diferentes contas de armazenamento ou pastas dentro de contas de armazenamento.
  • Permite que os cientistas de dados reutilizem as permissões existentes nos sistemas de armazenamento.
  • Audite o acesso ao armazenamento porque os logs de armazenamento mostram quais identidades foram usadas para acessar dados.

Importante

Essa funcionalidade tem as seguintes limitações

  • O recurso tem suporte para experimentos enviados por meio da CLI do Azure Machine Learning e do SDK do Python V2, mas não por meio do ML Studio.
  • A identidade do usuário e a identidade gerenciada de computação não podem ser usadas para autenticação no mesmo trabalho.
  • Para trabalhos de pipeline, recomendamos definir a identidade do usuário no nível da etapa individual que será executada em uma computação, em vez de no nível do pipeline raiz. ( Embora a configuração de identidade tenha suporte nos níveis de pipeline raiz e de etapa, a configuração de nível de etapa terá precedência se ambas estiverem definidas. No entanto, para pipelines que contêm componentes de pipeline, a identidade deve ser definida nas etapas individuais que serão executadas. A identidade definida no nível do pipeline raiz ou do componente do pipeline não funcionará. Portanto, sugerimos definir a identidade no nível da etapa individual para simplificar.)

As etapas a seguir descrevem como configurar o acesso a dados com identidade de usuário para trabalhos de treinamento em clusters de computação da CLI.

  1. Conceda acesso à identidade do usuário aos recursos de armazenamento. Por exemplo, conceda ao StorageBlobReader acesso à conta de armazenamento específica que você deseja usar ou conceder permissão baseada em ACL para pastas ou arquivos específicos no armazenamento do Azure Data Lake Gen 2.

  2. Crie um armazenamento de dados Azure Machine Learning sem credenciais armazenadas em cache para a conta de armazenamento. Se um armazenamento de dados tiver credenciais armazenadas em cache, como a chave da conta de armazenamento, essas credenciais serão usadas em vez da identidade do usuário.

  3. Envie um trabalho de treinamento com identidade de propriedade definida para digitar: user_identity, conforme mostrado na seguinte especificação de trabalho. Durante o trabalho de treinamento, a autenticação no armazenamento ocorre por meio da identidade do usuário que envia o trabalho.

    Observação

    Se a propriedade de identidade não for especificada e o armazenamento de dados não tiver credenciais armazenadas em cache, a identidade gerenciada de computação se tornará a opção de reserva.

    command: |
    echo "--census-csv: ${{inputs.census_csv}}"
    python hello-census.py --census-csv ${{inputs.census_csv}}
    code: src
    inputs:
    census_csv:
        type: uri_file 
        path: azureml://datastores/mydata/paths/census.csv
    environment: azureml:AzureML-sklearn-1.0-ubuntu20.04-py38-cpu@latest
    compute: azureml:cpu-cluster
    identity:
    type: user_identity
    

As etapas a seguir descrevem como configurar o acesso a dados com identidade de usuário para trabalhos de treinamento em clusters de computação de SDK Python.

  1. Conceda acesso a dados e crie o armazenamento de dados conforme descrito acima para a CLI.

  2. Envie um trabalho de treinamento com o parâmetro de identidade definido como azure.ai.ml.UserIdentityConfiguration. Essa configuração de parâmetro permite que o trabalho acesse dados em nome do usuário que envia o trabalho.

    from azure.ai.ml import command
    from azure.ai.ml.entities import Data, UriReference
    from azure.ai.ml import Input
    from azure.ai.ml.constants import AssetTypes
    from azure.ai.ml import UserIdentityConfiguration
    
    # Specify the data location
    my_job_inputs = {
        "input_data": Input(type=AssetTypes.URI_FILE, path="<path-to-my-data>")
    }
    
    # Define the job
    job = command(
        code="<my-local-code-location>", 
        command="python <my-script>.py --input_data ${{inputs.input_data}}",
        inputs=my_job_inputs,
        environment="AzureML-sklearn-0.24-ubuntu18.04-py37-cpu:9",
        compute="<my-compute-cluster-name>",
        identity= UserIdentityConfiguration() 
    )
    # submit the command
    returned_job = ml_client.jobs.create_or_update(job)
    

Importante

Durante o envio do trabalho com a autenticação com a identidade do usuário habilitada, os instantâneos de código são protegidos contra adulteração por validação de soma de verificação. Se você tiver componentes de pipeline existentes e pretende usá-los com a autenticação com a identidade do usuário habilitada, talvez seja necessário carregá-los novamente. Caso contrário, o trabalho poderá falhar durante a validação da soma de verificação.

Trabalhar com redes virtuais

Por padrão, o Azure Machine Learning não pode se comunicar com uma conta de armazenamento que está por trás de um firewall ou em uma rede virtual.

Você pode configurar as contas de armazenamento para permitir o acesso somente a partir de redes virtuais específicas. Essa configuração requer etapas extras para garantir que os dados não sejam vazados para fora da rede. Esse comportamento é o mesmo para acesso a dados com base em credenciais. Para obter mais informações, confira Como evitar a exfiltração de dados.

Se sua conta de armazenamento tiver configurações de rede virtual, isso determina qual tipo de identidade e acesso de permissões é necessário. Por exemplo, para visualização de dados e perfil de dados, as configurações de rede virtual determinam que tipo de identidade é usada para autenticar o acesso a dados.

  • Em cenários em que apenas determinados IPs e sub-redes têm permissão para acessar o armazenamento, o Azure Machine Learning usa a MSI do workspace para realizar visualizações de dados e perfis.

  • Se o seu armazenamento for ADLS Gen 2 ou Blob e tiver configurações de rede virtual, os clientes poderão usar a identidade do usuário ou o MSI do workspace, dependendo das configurações de armazenamento de dados definidas durante a criação.

  • Se a configuração de rede virtual for "Permitir que os serviços do Azure na lista de serviços confiáveis acessem essa conta de armazenamento", o MSI do workspace será usado.

Cenário: Registro de Contêiner do Azure sem usuário administrador

Quando você desabilita o usuário administrador do ACR, o Azure Machine Learning usa uma identidade gerenciada para compilar e efetuar pull de imagens do Docker. Há dois fluxos de trabalho quando o Azure Machine Learning é configurado para usar um ACR com o usuário administrador desabilitado:

  • Permita que o Azure Machine Learning crie a instância do ACR e desabilite o usuário administrador posteriormente.
  • Traga um ACR existente com o usuário administrador já desabilitado.

Azure Machine Learning com a instância do ACR criada automaticamente

  1. Crie um workspace do Azure Machine Learning.

  2. Execute uma ação que exija o Registro de Contêiner do Azure. Por exemplo, o Tutorial: treinar o primeiro modelo.

  3. Obtenha o nome do ACR criado pelo cluster.

    APLICA-SE A:Extensão do ML da CLI do Azure v2 (atual)

    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
    

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.

APLICA-SE A:Extensão do ML da CLI do Azure v2 (atual)

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>

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.

APLICA-SE A:Extensão de ML da CLI do Azure v2 (atual)

az ml compute create --name cpu-cluster --type <cluster name>  --identity-type systemassigned

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.

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.

Cenário: usar um Registro de Contêiner do Azure 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 do ML da CLI do Azure v2 (atual)

az ml compute 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 do ML da CLI do Azure v2 (atual)

az ml compute update --name <cluster name> --user-assigned-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

APLICA-SE A:Extensão do ML da CLI do Azure v2 (atual)

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, crie um ambiente e especifique o local da imagem base no arquivo YAML do ambiente.

APLICA-SE A:Extensão do ML da CLI do Azure v2 (atual)

$schema: https://azuremlschemas.azureedge.net/latest/environment.schema.json
name: docker-image-example
image: pytorch/pytorch:latest
description: Environment created from a Docker image.
az ml environment create --file <yaml file>

Agora você pode usar o ambiente em um trabalho de treinamento.

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

APLICA-SE A:Extensão do ML da CLI do Azure v2 (atual)

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 do workspace uma função 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:

      APLICA-SE A:Extensão do ML da CLI do Azure v2 (atual)

      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 workspace usando o comando az ml connection. Esse comando aceita um arquivo YAML que fornece informações sobre a conexão. O exemplo a seguir demonstra o formato para especificar uma identidade gerenciada. Substitua os valores client_id e resource_id pelos valores da identidade gerenciada:

    APLICA-SE A:Extensão do ML da CLI do Azure v2 (atual)

    name: test_ws_conn_cr_managed
    type: container_registry
    target: https://test-feed.com
    credentials:
      type: managed_identity
      client_id: client_id
      resource_id: resource_id
    

    O comando a seguir demonstra como usar o arquivo YAML para criar uma conexão com o workspace. Substitua <yaml file>, <workspace name> e <resource group> pelos valores da sua configuração:

    az ml connection create --file <yml file> --resource-group <resource group> --workspace-name <workspace>
    
  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 azure-ai-ml v2 (atual)

    $schema: https://azuremlschemas.azureedge.net/latest/environment.schema.json
    name: private-acr-example
    image: <acr url>/pytorch/pytorch:latest
    description: Environment created from private ACR.
    

Próximas etapas