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. Múltiplos métodos suportam autenticação entre o Azure Machine Learning e os serviços em que depende.

  • O espaço de trabalho do Azure Machine Learning usa uma identidade gerenciada para se comunicar com outros serviços. Por predefinição, esta identidade é uma identidade gerida de sistema atribuída automaticamente. 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. Também pode configurar o acesso baseado em identidade aos datastores, que utiliza a identidade gerida 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 datastore pode usar uma chave de conta, token, principal de segurança, identidade gerida ou identidade de utilizador.
  • Os pontos de extremidade online geridos podem usar uma identidade gerida para aceder a recursos do Azure durante a execução de inferências. Para obter mais informações, veja Aceder aos recursos do Azure a partir de um ponto final online.

Pré-requisitos

  • Uma área de trabalho do Azure Machine Learning. Para obter instruções sobre como criar um espaço de trabalho, consulte Criar o espaço de trabalho.

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

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

    Os exemplos neste artigo pressupõem que você use um shell Bash ou um shell compatível. Por exemplo, você pode usar um shell em um sistema Linux ou Subsistema Windows para Linux.

  • Para atribuir funções, o login da sua subscrição Azure deve ter o papel de Operador de Identidade Gerida , ou outro papel 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. O Azure Machine Learning suporta múltiplos tipos de identidade.

Tipo de identidade gerida 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
Atribuído pelo sistema + atribuído pelo usuário (SAI + UAI) Gerido por si Ciclo de vida independente para identidade atribuída pelo utilizador; uso multiplataforma; controla o acesso com privilégios mínimos; aceda a dados em tarefas de treino.

Depois de criares um espaço de trabalho com o tipo de identidade SAI, podes atualizá-lo para SAI+UAI. Não podes atualizar um espaço de trabalho de SAI+UAI para SAI. Pode atribuir múltiplas identidades atribuídas pelo utilizador ao mesmo espaço de trabalho.

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 na identidade gerida atribuída ao utilizador para que o seu espaço de trabalho de Machine Learning do Azure possa aceder aos dados nos recursos associados ao espaço de trabalho.

Recurso Permissão
Área de trabalho do Azure Machine Learning Colaborador
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, exceto operações de purga
Azure Container Registry Colaborador
Azure Application Insights Colaborador

Para a criação automática de atribuições de funções na sua identidade gerida atribuída pelo utilizador, pode usar este modelo ARM.

Gorjeta

Para um espaço de trabalho com chaves geridas pelo cliente para criptografia, pode utilizar uma identidade gerida atribuída pelo utilizador para autenticar entre o armazenamento e o Key Vault. 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>

O exemplo seguinte mostra o conteúdo de workspace_creation_with_multiple_UAIs.yml:

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 pelos utilizadores para um espaço de trabalho, incluindo adicionar uma nova ou eliminar as existentes, utilize 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>

O exemplo seguinte mostra o conteúdo de workspace_update_with_multiple_UAIs.yml:

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 um novo UAI, especifique o novo UAI ID na user_assigned_identities secção juntamente com os UAIs existentes. Deve transmitir todos os IDs UAI existentes.
Para eliminar um ou mais UAIs existentes, adicione os IDs UAI que pretende manter na user_assigned_identities secção. Os IDs UAI que não inclui são apagados.

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 gerida atribuída pelo utilizador sem alterar a identidade existente do espaço de trabalho, utilize os seguintes passos:

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

  2. Para anexar a identidade gerida ao seu espaço de trabalho, crie um ficheiro YAML que especifique a identidade. O exemplo seguinte mostra o conteúdo do ficheiro YAML. Substitua os <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 ficheiro YAML do passo 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
    

Isolamento de dados para recursos partilhados

Quando múltiplos espaços de trabalho partilham os mesmos recursos associados (conta de armazenamento, cofre de chaves ou registo de contentores), ative o isolamento de dados para evitar conflitos de nomes e garantir que cada espaço de trabalho só pode aceder aos seus próprios dados. O enableDataIsolation flag configura como os artefactos do espaço de trabalho são armazenados e acedidos em recursos partilhados.

Importante

Só podes definir a opção de isolamento de dados ao criar um espaço de trabalho. Não podes ativar ou desativar depois de criar o espaço de trabalho.

Efeitos de permitir o isolamento de dados

Quando ativa o isolamento de dados, o espaço de trabalho aplica as seguintes configurações:

Recurso Comportamento
Conta de armazenamento Os nomes dos contentores são prefixados com o GUID do espaço de trabalho (por exemplo, {workspaceGUID}-azureml-blobstore). A identidade gerida do espaço de trabalho recebe uma atribuição de função no plano de dados com uma condição de controlo de acesso baseado em atributos Azure (ABAC) que limita o acesso apenas aos contentores específicos do espaço de trabalho.
Cofre de chaves Os nomes dos segredos são prefixados com o GUID do espaço de trabalho para isolar segredos entre espaços de trabalho que partilham o mesmo repositório de chaves.
Registo de contentores Os nomes das imagens do Docker são prefixados com o GUID do espaço de trabalho para isolar imagens entre espaços de trabalho que partilham o mesmo registo.

Comportamento padrão por tipo de espaço de trabalho

O valor padrão para isolamento de dados depende do tipo de espaço de trabalho:

Tipo de espaço de trabalho Isolamento de dados por predefinição
hub Ativado(a)
project Ativado (herdado do hub)
default Disabled

Quando ativar o isolamento de dados

Ativar o isolamento de dados quando:

  • Múltiplos espaços de trabalho partilham a mesma conta de armazenamento, cofre de chaves ou registo de contentores
  • Precisas de evitar conflitos de nomes para artefactos (como imagens Docker ou segredos) criados com o mesmo nome entre espaços de trabalho
  • É necessário um controlo de acesso mais rigoroso para garantir que as identidades dos espaços de trabalho só possam aceder aos seus próprios dados

Para hubs e espaços de trabalho, o isolamento de dados está ativado por defeito para suportar o modelo de recursos partilhados. Para mais informações, consulte O que é um espaço de trabalho hub de Azure Machine Learning?

Ative o isolamento de dados ao criar um espaço de trabalho

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

az ml workspace create --name <WORKSPACE_NAME> \
    --resource-group <RESOURCE_GROUP> \
    --enable-data-isolation

Alternativamente, especifique isolamento de dados num ficheiro de configuração YAML:

$schema: https://azuremlschemas.azureedge.net/latest/workspace.schema.json
name: my-workspace
location: eastus
enable_data_isolation: true
storage_account: /subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.Storage/storageAccounts/<STORAGE_ACCOUNT>
key_vault: /subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.KeyVault/vaults/<KEY_VAULT>
container_registry: /subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.ContainerRegistry/registries/<CONTAINER_REGISTRY>

Depois cria o espaço de trabalho:

az ml workspace create --file workspace.yml --resource-group <RESOURCE_GROUP>

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, uma identidade tem duas aplicações:

  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 usa a identidade gerenciada por padrão.
  2. Você aplica uma identidade para acessar recursos dentro do código para uma tarefa submetida.

    • 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 ao utilizador 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

O exemplo seguinte mostra o conteúdo de create-cluster.yml:

$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 tiver um cluster de computação existente, pode alternar entre identidade gerida pelo utilizador e identidade gerida 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

Computação em cluster Kubernetes

Nota

Os clusters Azure Machine Learning Kubernetes suportam apenas uma identidade atribuída pelo sistema ou uma identidade atribuída 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, uma identidade tem duas aplicações:

  • 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 usa a identidade gerenciada por padrão.
  • Você aplica uma identidade para acessar recursos dentro do código para uma tarefa submetida.

    • No caso da computação em cluster Kubernetes, o objeto ManagedIdentityCredential deve ser fornecido sem qualquer client_id.

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

    credential = ManagedIdentityCredential()
    token = credential.get_token('https://storage.azure.com/')
    

Para configurar uma computação em cluster Kubernetes, certifique-se de que tem a extensão AML necessária implementada e siga a documentação sobre como ligar a computação do cluster Kubernetes ao seu espaço de trabalho AML.

Importante

Para fins de treino (Trabalhos de Aprendizagem Automática), utilize a identidade atribuída à computação do cluster Kubernetes. No entanto, para inferência (Endpoints Online Geridos), utilize-se a identidade atribuída ao endpoint. Para obter mais informações, consulte Como aceder a recursos do Azure a partir de um ponto de extremidade online.

Armazenamento de dados

Quando cria um datastore que utiliza acesso a dados baseado em identidade, utiliza a sua conta Azure (token Microsoft Entra) para confirmar que tem permissão para aceder ao serviço de armazenamento. No cenário de acesso a dados baseado em identidade , não se guardam quaisquer credenciais de autenticação. Só guarda a informação da conta de armazenamento no datastore.

Por outro lado, os armazenamentos de dados que utilizam autenticação baseada em credenciais armazenam em cache informações de conexão, como a chave da conta de armazenamento ou o token SAS, no cofre de chaves associado ao espaço de trabalho. Esta abordagem tem a limitação de que outros utilizadores de espaços de trabalho 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, consulte o artigo Administração de dados. Para obter informações sobre como configurar o acesso baseado em identidade aos dados, consulte Criar datastores.

Você pode aplicar o acesso a dados baseado em identidade no Aprendizado de Máquina do Azure em dois cenários. 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

Ao usar acesso baseado em identidade, pode usar controlos de acesso baseados em funções (RBAC) para restringir que identidades, como utilizadores ou recursos computacionais, têm acesso aos dados.

Acesso a serviços de armazenamento

Pode ligar-se a serviços de armazenamento usando acesso a dados baseado em identidade com os datastores 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. Esta abordagem permite a gestão de acesso a dados ao 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 através da autenticação baseada em credenciais incluem IDs de subscrição, tokens de assinatura de acesso partilhada (SAS), chave de acesso ao armazenamento e informações do principal do serviço, como IDs de clientes e IDs de inquilino.

Para se ligar de forma segura ao seu serviço de armazenamento no Azure, o Azure Machine Learning requer que tenha permissão para aceder ao armazenamento de dados correspondente.

Aviso

O acesso entre inquilinos a contas de armazenamento não é suportado. Se o seu cenário exigir acesso entre entidades, contacte a equipa de Suporte de Dados de Aprendizagem Automática do Azure em amldatasupport@microsoft.com para obter ajuda 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
  • Azure Data Lake Storage Gen1
  • Azure Data Lake Storage Gen2

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 utilizadores do Microsoft Entra. Neste cenário, utilize-se a identidade gerida de um computo para autenticação de acesso a dados. Só pode aceder aos dados de uma instância de computação ou de um cluster de computação de aprendizagem automática a executar um trabalho de treino. Ao utilizar esta abordagem, o administrador concede à instância de computação ou ao cluster de computação, com identidade gerida, permissões de leitura de dados Storage Blob no armazenamento. Não é necessário conceder acesso aos cientistas de dados individuais.

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

  • Ative recursos de computação com identidade gerenciada habilitada. Consulte a seção cluster de computação ou, para instâncias de computação, a seção Atribuir identidade gerenciada.

    Importante

    Se configurares a instância de computação para desligamento inativo, a instância de computação não se desliga por inatividade, a menos que a identidade gerida tenha acesso como contribuidor 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 gerida do sistema para a instância de computação ou cluster criado está no formato /workspace-name/computes/compute-name no seu ID Microsoft Entra.

Depois de ativar a autenticação baseada em identidade, a identidade gerida por computação é usada por defeito ao aceder a dados dentro dos seus trabalhos de treino. Opcionalmente, pode autenticar-se usando a identidade do utilizador, seguindo os passos descritos na secção seguinte.

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

Aceder a dados para treinar trabalhos em clusters de computação utilizando a identidade do utilizador

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

Quando treina em clusters de computação Azure Machine Learning, pode autenticar-se no armazenamento usando o token Microsoft Entra do seu utilizador.

Este modo de autenticação permite-lhe:

  • Configure permissões detalhadas, onde diferentes utilizadores do espaço de trabalho possam aceder a diferentes contas de armazenamento ou pastas dentro das 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:

  • Os experimentos submetidos através do Azure Machine Learning CLI e do Python SDK V2 suportam esta funcionalidade, mas o ML Studio não.
  • Não podes usar a identidade do utilizador e a identidade gerida de computação para autenticação na mesma tarefa.
  • Para trabalhos de pipeline, defina a identidade do utilizador ao nível individual do passo que corre numa computação, em vez de ao nível raiz do pipeline. Embora a definição de identidade seja suportada tanto ao nível do pipeline raiz como ao nível dos passos, a definição ao nível dos passos tem prioridade se ambos estiverem definidos. No entanto, para pipelines que contêm componentes de pipeline, a identidade deve ser definida em passos individuais que são executados. Identidade definida ao nível do pipeline raiz ou componente do pipeline não funciona. Portanto, definir a identidade ao nível de etapa individual para simplificar.

Para configurar o acesso a dados usando a identidade do utilizador para treinar trabalhos em clusters de computação a partir da CLI, siga estes passos:

  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 propriedade identity definida para 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 não especificares a propriedade de identidade e o datastore não tiver credenciais em cache, o sistema usa compute managed identity como plano B.

    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
    

Para configurar o acesso a dados usando a identidade do utilizador para tarefas de treino em clusters de computação a partir do SDK Python, siga estes passos:

  1. Conceda acesso aos dados e crie um armazenamento de dados conforme descrito anteriormente 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

Quando submete um trabalho com autenticação utilizando a identidade do utilizador, a validação de checksum protege os snapshots de código contra alterações. Se já tem componentes de pipeline e pretende usá-los com autenticação usando a identidade do utilizador, pode ser necessário voltar a carregá-los. 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, essas configurações ditarão 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 Azure Machine Learning 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, pode utilizar a identidade de utilizador ou o MSI do espaço de trabalho, dependendo das configurações do datastore definidas durante a criação.

  • Se a definição de rede virtual for Permitir que os serviços Azure na lista de serviços de confiança acedam a esta conta de armazenamento, utiliza-se o Workspace MSI.

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, veja o Tutorial: Treine o 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 a política de subscrição não permitir utilizadores administradores ACR, crie primeiro ACR sem utilizador administrador e depois associe-o ao espaço de trabalho. Crie ACR a partir da CLI do Azure sem definir o argumento --admin-enabled , ou do portal do Azure sem ativar o utilizador administrador. Ao criar um espaço de trabalho Azure Machine Learning, especifique o ID de recurso 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. Pode ativar a identidade a partir do portal Azure ou Studio ao criar computação, ou a partir do Azure CLI usando o seguinte comando. 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 gerida recebe automaticamente o papel ACRPull no ACR do workspace para permitir a extração de imagens Docker para treino.

Nota

Se criares o compute primeiro, antes de existir o ACR do workspace, deves atribuir manualmente a função ACRPull.

Usar imagens do Docker para inferência

Depois de configurar o ACR sem utilizador administrador, como descrito anteriormente, pode aceder a imagens Docker para inferência sem chaves de administrador a partir do seu serviço Azure Kubernetes (AKS). Quando cria ou associa o AKS ao espaço de trabalho, o principal de serviço do cluster recebe automaticamente o acesso ACRPull ao ACR do espaço de trabalho.

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 Azure Machine Learning utiliza imagens base Docker de um repositório público que é gerido pela Microsoft. Constrói o teu ambiente de treino ou inferência com base nessas imagens. Para mais informações, veja O que são ambientes de ML?

Para usar uma imagem base personalizada interna à sua empresa, utilize identidades geridas para aceder ao seu ACR privado.

  1. 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>
    
  2. Para permitir que o cluster de computação extraia as imagens base, atribua à identidade de serviço gerido (para o espaço de trabalho ou para a computação) a função ACRPull 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>"
    
  3. Crie um ambiente e especifique o local da imagem base no arquivo YAML do ambiente. O seguinte arquivo YAML demonstra como definir um ambiente que faz referência ao ACR privado. Substitua o <acr-url> pelo URL do seu ACR privado, como myregistry.azurecr.io. Substitua o <image-path> pelo caminho para sua imagem no ACR privado, como pytorch/pytorch:latest:

    $schema: https://azuremlschemas.azureedge.net/latest/environment.schema.json
    name: docker-image-example
    image: <acr-url>/<image-path>:latest
    description: Environment created from a Docker image.
    
  4. O comando a seguir demonstra como criar o ambiente a partir do arquivo YAML. Substitua <yaml file> pelo caminho para o arquivo YAML:

    az ml environment create --file <yaml file>
    

    Agora, pode usar o ambiente num trabalho de formação.