Partilhar via


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

APLICA-SE A:Azure CLI ml extension v2 (current)Python SDK azure-ai-ml v2 (current)

O Azure Machine Learning é constituído por vários serviços do Azure. Há várias maneiras pelas quais a autenticação pode acontecer entre o Azure Machine Learning e os serviços nos quais ele depende.

  • O espaço de trabalho do Azure Machine Learning usa uma identidade gerenciada para se comunicar com outros serviços. Por padrão, essa é uma identidade gerenciada atribuída ao sistema. Você também pode usar uma identidade gerenciada atribuída pelo usuário.
  • O Azure Machine Learning usa o Azure Container Registry (ACR) para armazenar imagens do Docker usadas para treinar e implantar modelos. Se você permitir que o Aprendizado de Máquina do Azure crie automaticamente o ACR, ele habilitará a conta de administrador.
  • O cluster de computação do Aprendizado de Máquina do Azure usa uma identidade gerenciada para recuperar informações de conexão para armazenamentos de dados do Cofre de Chaves do Azure e para extrair imagens do Docker do ACR. Você também pode configurar o acesso baseado em identidade para armazenamentos de dados, que em vez disso usarão a identidade gerenciada do cluster de computação.
  • O acesso aos dados pode acontecer ao longo de vários caminhos, dependendo do serviço de armazenamento de dados e da sua 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 de usuário.
  • Os pontos de extremidade online gerenciados podem usar uma identidade gerenciada para acessar recursos do Azure ao executar inferência. Para obter mais informações, veja Aceder aos recursos do Azure a partir de um ponto final online.

Pré-requisitos

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

  • Uma área de trabalho do Azure Machine Learning. Se você não tiver um, use as etapas no artigo Guia de início rápido: criar recursos do espaço de trabalho para criar um.

  • A CLI do Azure e a ml extensão ou o SDK do Python do Azure Machine Learning v2:

    • Para instalar a CLI e a extensão do Azure, consulte Instalar, configurar e usar a CLI (v2).

      Importante

      Os exemplos de CLI neste artigo pressupõem que você esteja usando o shell Bash (ou compatível). Por exemplo, de um sistema Linux ou Subsistema Windows para Linux.

    • Para instalar o Python SDK v2, use o seguinte comando:

      pip install azure-ai-ml azure-identity
      

      Para atualizar uma instalação existente do SDK para a versão mais recente, use o seguinte comando:

      pip install --upgrade azure-ai-ml azure-identity
      

      Para obter mais informações, consulte Instalar o Python SDK v2 para 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.

Tipos de identidade de espaço de trabalho

O espaço de trabalho do Azure Machine Learning usa uma identidade gerenciada para se comunicar com outros serviços. Vários tipos de identidade são suportados para o Azure Machine Learning.

Tipo de identidade gerenciada Criação de atribuição de função Propósito
Atribuído pelo sistema (SAI) Gerido pela Microsoft Ciclo de vida ligado ao recurso; utilização de um único recurso; simples de começar
Sistema atribuído+atribuído pelo usuário (SAI+UAI) Gerido por si Ciclo de vida independente para identidade atribuída pelo usuário, uso de vários recursos, controla o acesso menos privilegiado. Aceda a dados em trabalhos de formação.

Depois que um espaço de trabalho é criado com o tipo de identidade SAI, ele pode ser atualizado para SAI+UAI, mas não de volta de SAI+UAI para SAI. Você pode atribuir várias identidades atribuídas pelo usuário ao mesmo espaço de trabalho.

Azure Container Registry e tipos de identidade

Esta tabela 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 desativado
Azure Container Registry
Acesso à rede pública habilitado
Utilizador administrador
Identidade gerenciada atribuída ao sistema de espaço de trabalho
Espaço de trabalho Identidade
gerenciada atribuída pelo usuário com a função ACRPull atribuída à identidade

Identidade gerida atribuída pelo utilizador

Área de trabalho

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

  1. Na página Noções básicas, selecione a Conta de Armazenamento do Azure, o Registro de Contêiner do Azure e o Cofre da Chave do Azure que você deseja usar com o espaço de trabalho.
  2. Na página Identidade, selecione Identidade atribuída pelo usuário e, em seguida, selecione a identidade gerenciada a ser usada.

As seguintes atribuições de função do RBAC do Azure são necessárias em sua identidade gerenciada atribuída pelo usuário para seu espaço de trabalho do Azure Machine Learning acessar dados nos recursos associados ao espaço de trabalho.

Recurso Permissão
Área de trabalho do Azure Machine Learning Contribuinte
Armazenamento do Azure Colaborador (plano de controlo) + Colaborador de Dados de Blob de Armazenamento (plano de dados, opcional, para ativar a pré-visualização de dados no estúdio do Azure Machine Learning)
Azure Key Vault (ao usar o modelo de permissão RBAC) Colaborador (plano de controlo) + Administrador do Cofre de Chaves (plano de dados)
Azure Key Vault (ao usar o modelo de permissão de políticas de acesso) Colaborador + quaisquer permissões de política de acesso além de operações de limpeza
Registo de Contentores do Azure Contribuinte
Azure Application Insights Contribuinte

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

Gorjeta

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 os user-assigned-identity-for-cmk-encryption parâmetros (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 principal do espaço de trabalho.

Para criar um espaço de trabalho com várias identidades atribuídas ao usuário, use um dos seguintes métodos:

APLICA-SE A: Azure CLI ml extension v2 (atual)

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

Quando 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 as identidades atribuídas pelo usuário para um espaço de trabalho, incluindo a adição de uma nova ou a exclusão das existentes, use um dos seguintes métodos:

APLICA-SE A: Azure CLI ml extension v2 (atual)

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

Em que o conteúdo do 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>

Gorjeta

Para adicionar uma nova UAI, você pode especificar a nova ID UAI na seção user_assigned_identities além das UAIs existentes, é necessário passar todas as IDs UAI existentes.
Para excluir um ou mais UAIs existentes, você pode colocar os IDs UAI que precisam ser preservados na seção user_assigned_identities, os IDs UAI restantes seriam excluídos.

Adicionar uma identidade gerenciada atribuída pelo usuário a um espaço de trabalho, além de uma identidade atribuída pelo sistema

Em alguns cenários, talvez seja necessário usar uma identidade gerenciada atribuída pelo usuário, além da identidade padrão do espaço de trabalho atribuído pelo sistema. Para adicionar uma identidade gerenciada atribuída pelo usuário, sem alterar a identidade do espaço de trabalho existente, use as seguintes etapas:

  1. Crie uma identidade gerenciada atribuída pelo usuário. Salve a ID da identidade gerenciada que você criar.

  2. Para anexar a identidade gerenciada ao seu espaço de trabalho, você precisa de um arquivo YAML que especifique a identidade. A seguir está um exemplo do conteúdo do arquivo YAML. Substitua o <TENANT_ID>, <RESOURCE_GROUP>e <USER_MANAGED_ID> pelos seus valores.

    identity:
        type: system_assigned,user_assigned
        tenant_id: <TENANT_ID>
        user_assigned_identities:
            '/subscriptions/<SUBSCRIPTION_ID/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<USER_MANAGED_ID>':
            {}
    
  3. Use o comando CLI az ml workspace update do Azure para atualizar seu espaço de trabalho. Especifique o arquivo YAML da etapa anterior usando o --file parâmetro. O exemplo a seguir mostra a aparência desse comando:

    az ml workspace update --resource-group <RESOURCE_GROUP> --name <WORKSPACE_NAME> --file <YAML_FILE_NAME>.yaml
    

Cluster de cálculo

Nota

Os clusters de computação do Azure Machine Learning suportam apenas uma identidade atribuída pelo sistema ou várias identidades atribuídas pelo utilizador, não ambas em simultâneo.

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

Durante uma execução, há dois aplicativos de uma identidade:

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

    • Nesse caso, o sistema usará a identidade gerenciada por padrão.
  2. Você aplica uma identidade para acessar 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 computação com identidade gerenciada, use um dos seguintes métodos:

APLICA-SE A: Azure CLI ml extension v2 (atual)

az ml compute create -f create-cluster.yml

Quando 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 ao 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 computação existente, poderá alterar entre identidade gerenciada pelo usuário e identidade gerenciada 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 ao 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 acesso a dados baseado em identidade, sua conta do Azure (token 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, os armazenamentos de dados que usam informações de conexão de cache de autenticação baseada em credenciais, como a chave da conta de armazenamento ou o token SAS, no cofre de chaves associado ao espaço de trabalho. Essa abordagem tem a limitação de que outros usuários do espaço de trabalho com permissões suficientes possam recuperar essas credenciais, o que pode ser uma preocupação de segurança para alguma organização.

Para obter mais informações sobre como o acesso a dados é autenticado, consulte o artigo Administração de dados. Para obter informações sobre como configurar o acesso baseado em identidade aos dados, consulte Criar datastores.

Há dois cenários nos quais você pode aplicar o acesso a dados baseado em identidade no Aprendizado de Máquina do Azure. Esses cenários são uma boa opção para acesso baseado em identidade quando você está trabalhando com dados confidenciais e precisa de um gerenciamento de acesso a dados mais granular:

  • Acesso a serviços de armazenamento
  • Treinar modelos de aprendizagem automática

O acesso baseado em identidade permite que você use controles de acesso baseados em função (RBAC) para restringir quais identidades, como usuários ou recursos de computação, têm acesso aos dados.

Acesso a serviços de armazenamento

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

Quando você usa o acesso a dados baseado em identidade, o Aprendizado de Máquina do Azure solicita seu token Microsoft Entra para autenticação de acesso a dados em vez de manter suas credenciais no armazenamento de dados. Essa abordagem permite o gerenciamento de acesso a dados no nível de armazenamento e mantém as credenciais confidenciais.

O mesmo comportamento se aplica quando você trabalha com dados interativamente por meio de um Jupyter Notebook em seu computador local ou instância de computação.

Nota

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

Para ajudar a garantir que você se conecte com segurança ao seu serviço de armazenamento no Azure, o Aprendizado de Máquina do Azure 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 personalizado.

O acesso a dados baseado em identidade suporta conexões apenas com os seguintes serviços de armazenamento.

  • Armazenamento de Blobs do Azure
  • Armazenamento do Azure Data Lake Ger1
  • Armazenamento do Azure Data Lake Ger2

Para acessar esses serviços de armazenamento, você deve ter pelo menos acesso ao Storage Blob Data Reader à conta de armazenamento. Apenas os proprietários de contas de armazenamento podem alterar o seu nível de acesso através do portal do Azure.

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

Certos cenários de aprendizado de máquina envolvem o trabalho com dados privados. Nesses casos, os cientistas de dados podem não ter acesso direto aos dados como usuários do Microsoft Entra. Nesse cenário, a identidade gerenciada de uma computação pode ser usada para autenticação de acesso a dados. Nesse cenário, os dados só podem ser acessados de uma instância de computação ou de um cluster de computação de aprendizado de máquina executando um trabalho de treinamento. Com essa abordagem, o administrador concede à instância de computação ou à identidade gerenciada do cluster de computação permissões do Storage Blob Data Reader no armazenamento. Os cientistas de dados individuais não precisam ter acesso.

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

  • Crie computação com identidade gerenciada habilitada. Consulte a seção cluster de computação ou, por exemplo, a seção Atribuir identidade gerenciada.

    Importante

    Se a instância de computação também estiver configurada para desligamento ocioso, a instância de computação não será encerrada 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 como atribuir permissões, veja Gerir o acesso às áreas de trabalho do Azure Machine Learning.

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

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

Nota

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

Depois que a autenticação baseada em identidade estiver habilitada, a identidade gerenciada por computação será usada por padrão ao acessar dados em seus trabalhos de treinamento. Opcionalmente, você pode 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 do RBAC do Azure para o armazenamento, consulte controles de acesso baseados em função.

Acessar dados para trabalhos de treinamento em clusters de computação usando a identidade do usuário

APLICA-SE A: Azure CLI ml extension v2 (atual)

Ao treinar em clusters de computação do Azure Machine Learning, você pode autenticar no armazenamento com seu token Microsoft Entra do usuário.

Este modo de autenticação permite-lhe:

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

Importante

Esta funcionalidade tem as seguintes limitações

  • O recurso é suportado para experimentos enviados por meio da CLI do Azure Machine Learning e do Python SDK V2, mas não por meio do ML Studio.
  • A identidade do usuário e a identidade gerenciada por computação não podem ser usadas para autenticação dentro do mesmo trabalho.
  • Para trabalhos de pipeline, recomendamos definir a identidade do usuário no nível de etapa individual que será executado em uma computação, em vez de no nível de pipeline raiz. ( Embora a configuração de identidade seja suportada nos níveis de pipeline raiz e de etapa, a configuração de nível de etapa terá precedência se ambos estiverem definidos. No entanto, para pipelines que contêm componentes de pipeline, a identidade deve ser definida em etapas individuais que serão executadas. O conjunto de identidades no nível do pipeline raiz ou do componente do pipeline não funcionará. Portanto, sugerimos definir a identidade no nível de 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 à identidade do usuário acesso aos recursos de armazenamento. Por exemplo, conceda acesso StorageBlobReader à conta de armazenamento específica que você deseja usar ou conceda 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 do Azure Machine Learning sem credenciais armazenadas em cache para a conta de armazenamento. Se um armazenamento de dados tiver credenciais armazenadas em cache, como chave de conta de armazenamento, essas credenciais serão usadas em vez da identidade do usuário.

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

    Nota

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

    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 do Python SDK.

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

  2. Envie um trabalho de treinamento com o parâmetro identity 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 pela validação da soma de verificação. Se você tiver componentes de pipeline existentes e pretender 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 pode falhar durante a validação da soma de verificação.

Trabalhar com redes virtuais

Por padrão, o Aprendizado de Máquina do Azure não pode se comunicar com uma conta de armazenamento que esteja atrás de um firewall ou em uma rede virtual.

Você pode configurar contas de armazenamento para permitir o acesso somente de dentro 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 baseado em credenciais. Para obter mais informações, consulte Como evitar a exfiltração de dados.

Se sua conta de armazenamento tiver configurações de rede virtual, isso ditará 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 é usado para autenticar o acesso aos dados.

  • Em cenários em que apenas determinados IPs e sub-redes têm permissão para acessar o armazenamento, o Aprendizado de Máquina do Azure usa o MSI do espaço de trabalho 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 espaço de trabalho, dependendo das configurações do 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 esta conta de armazenamento", o MSI do Espaço de Trabalho será usado.

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

Quando você desabilita o usuário administrador para o ACR, o Aprendizado de Máquina do Azure usa uma identidade gerenciada para criar e extrair imagens do Docker. Há dois fluxos de trabalho ao configurar o Aprendizado de Máquina do Azure para usar um ACR com o usuário administrador desabilitado:

  • Permita que o Aprendizado de Máquina do Azure crie a instância ACR e desabilite o usuário administrador posteriormente.
  • Traga um ACR existente com o usuário administrador já desativado.

Azure Machine Learning com instância ACR criada automaticamente

  1. Crie um novo espaço de trabalho do Azure Machine Learning.

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

  3. Obtenha o nome do ACR criado pelo cluster.

    APLICA-SE A: Azure CLI ml extension v2 (atual)

    az ml workspace show --name <my workspace name> \
    --resource-group <my resource group> \
    --subscription <my subscription id> \
    --query container_registry
    

    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
    

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

APLICA-SE A: Azure CLI ml extension v2 (atual)

az ml workspace create -n <workspace name> \
-g <workspace resource group> \
-l <region> \
--container-registry /subscriptions/<subscription id>/resourceGroups/<acr resource group>/providers/Microsoft.ContainerRegistry/registries/<acr name>

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.

Além disso, se você já tiver um ACR existente com o usuário admin desativado, poderá anexá-lo ao espaço de trabalho atualizando-o. O exemplo a seguir demonstra a atualização de um espaço de trabalho do Azure Machine Learning para usar um ACR existente:

APLICA-SE A: Azure CLI ml extension v2 (atual)

az ml workspace update --update-dependent-resources \
--name <workspace name> \
--resource-group <workspace resource group> \
--container-registry /subscriptions/<subscription id>/resourceGroups/<acr resource group>/providers/Microsoft.ContainerRegistry/registries/<acr name>

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.

APLICA-SE A: Azure CLI ml extension 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 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.

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.

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

az ml compute show --name <cluster name> -n <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 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 ACRPull de identidade de serviço gerenciado no ACR privado

APLICA-SE A: Azure CLI ml extension 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>"

Finalmente, crie um ambiente e especifique o local da imagem base no arquivo YAML do ambiente.

APLICA-SE A: Azure CLI ml extension 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 o ambiente gerenciado do Azure Machine Learning na imagem base do ACR privado para treinamento ou inferência

Nota

Atualmente, não há suporte para a conexão a um ACR privado usando a identidade gerenciada atribuída pelo usuário. A chave Admin é o único tipo de autenticação suportado para ACR privado.

Próximos passos