Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
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. Vários métodos dão suporte à autenticação 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 identidade é 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 a armazenamentos de dados, que usa a identidade gerenciada do cluster de computação.
- 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 repositório de dados pode usar uma chave de conta, um token, uma entidade de segurança, uma identidade gerenciada ou uma identidade de 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
Um Workspace do Azure Machine Learning. Para obter instruções sobre como criar um workspace, consulte Criar o workspace.
A CLI do Azure e a extensão
mlou o SDK v2 do Python do Azure Machine Learning:Para instalar a CLI do Azure e a
mlextensã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 no Subsistema do Windows para Linux.
Para atribuir funções, a entrada para sua assinatura do Azure deve ter a função 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 do workspace
O workspace do Azure Machine Learning usa uma identidade gerenciada para se comunicar com outros serviços. O Azure Machine Learning dá suporte a vários tipos de identidade.
| Tipo de identidade gerenciada | Criação de atribuição de funções | Finalidade |
|---|---|---|
| Atribuído pelo sistema (SAI) | Gerenciada pela Microsoft | Ciclo de vida vinculado ao recurso; uso de recurso único; simples de começar |
| Atribuído pelo sistema + atribuído pelo usuário (SAI+UAI) | Gerenciado por você | Ciclo de vida independente para identidade atribuída pelo usuário; uso de múltiplos recursos; controla o acesso com privilégios mínimos; acesso a dados em tarefas de treinamento. |
Depois de criar um workspace com o tipo de identidade SAI, você pode atualizá-lo para SAI+UAI. Não é possível atualizar um workspace de SAI+UAI para SAI. Você pode atribuir várias identidades atribuídas pelo usuário ao mesmo workspace.
Identidade gerenciada atribuída pelo usuário
Espaço de trabalho
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:
- 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.
- 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 | Contribuidor (plano de controle) + Contribuidor 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) | Contribuidor + quaisquer permissões 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 em sua identidade gerenciada atribuída pelo usuário, você pode usar esse 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 do 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>
O exemplo a seguir 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 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 do 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>
O exemplo a seguir 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>
Dica
Para adicionar uma nova UAI, especifique a nova ID de UAI na user_assigned_identities seção juntamente com as UAIs existentes. Você deve passar todas as IDs de UAI existentes.
Para excluir um ou mais UAIs existentes, adicione as IDs UAI que você deseja manter na user_assigned_identities seção. As IDs UAI que você não inclui são excluídas.
Adicione 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, pode ser necessário usar uma identidade gerenciada atribuída pelo usuário, além da identidade de espaço de trabalho padrão atribuída pelo sistema. Para adicionar uma identidade gerenciada atribuída pelo usuário sem alterar a identidade do workspace existente, use as seguintes etapas:
Crie uma identidade gerenciada atribuída pelo usuário. Salve a ID da identidade gerenciada que você criar.
Para anexar a identidade gerenciada ao seu workspace, crie um arquivo YAML que especifique a identidade. O exemplo a seguir mostra o conteúdo do arquivo YAML. Substitua os marcadores
<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>': {}Use o comando
az ml workspace updateda CLI do Azure para atualizar seu workspace. Especifique o arquivo YAML da etapa anterior usando o--fileparâmetro. O exemplo a seguir mostra como esse comando se parece:az ml workspace update --resource-group <RESOURCE_GROUP> --name <WORKSPACE_NAME> --file <YAML_FILE_NAME>.yaml
Isolamento de dados para recursos compartilhados
Quando vários workspaces compartilham os mesmos recursos associados (conta de armazenamento, cofre de chaves ou registro de contêiner), habilite o isolamento de dados para evitar conflitos de nomenclatura e verifique se cada workspace só pode acessar seus próprios dados. O enableDataIsolation sinalizador configura como os artefatos do workspace são armazenados e acessados em recursos compartilhados.
Importante
Você pode definir a opção de isolamento de dados somente ao criar um workspace. Você não pode habilitá-lo ou desabilitá-lo depois que o workspace é criado.
Efeitos da habilitação do isolamento de dados
Quando você habilita o isolamento de dados, o workspace aplica as seguintes configurações:
| Recurso | Comportamento |
|---|---|
| Conta de armazenamento | Os nomes de contêiner são prefixados com o GUID do workspace (por exemplo, {workspaceGUID}-azureml-blobstore). A identidade gerenciada do workspace recebe uma atribuição de função de plano de dados com uma condição ABAC (controle de acesso baseado em atributo) do Azure que limita o acesso apenas a contêineres específicos do workspace. |
| Cofre de chaves | Os nomes secretos são prefixados com o GUID do espaço de trabalho para isolar segredos entre workspaces que compartilham o mesmo cofre de chaves. |
| Registro de contêiner | Os nomes das imagens Docker são prefixados com o GUID do workspace para isolar imagens entre workspaces que compartilham o mesmo registro. |
Comportamento padrão por tipo de workspace
O valor padrão para isolamento de dados depende do tipo de workspace:
| Tipo de workspace | Padrão de isolamento de dados |
|---|---|
hub |
Enabled |
project |
Habilitado (herdado do hub) |
default |
Disabled |
Quando habilitar o isolamento de dados
Habilite o isolamento de dados quando:
- Vários workspaces compartilham a mesma conta de armazenamento, cofre de chaves ou registro de contêiner
- Você precisa evitar conflitos de nomenclatura para artefatos (como imagens ou segredos do Docker) criados com o mesmo nome em workspaces
- Você precisa de um controle de acesso mais rigoroso para garantir que as identidades do workspace só possam acessar seus próprios dados
Para workspaces de hubs e projetos, o isolamento de dados está ativado por padrão para dar suporte ao modelo de recursos compartilhados. Para obter mais informações, consulte o que é um workspace do Hub do Azure Machine Learning?
Habilitar o isolamento de dados ao criar um workspace
APLICA-SE A:
extensão do ML da CLI do Azure v2 (atual)
az ml workspace create --name <WORKSPACE_NAME> \
--resource-group <RESOURCE_GROUP> \
--enable-data-isolation
Como alternativa, especifique o isolamento de dados em um arquivo 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>
Em seguida, crie a área de trabalho:
az ml workspace create --file workspace.yml --resource-group <RESOURCE_GROUP>
Cluster de cálculo
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 a execução de um programa, uma identidade tem dois aplicativos.
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 usa a identidade gerenciada por padrão.
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 do ML da CLI do Azure v2 (atual)
az ml compute create -f create-cluster.yml
O exemplo a seguir 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 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 computação existente, poderá alternar entre a identidade gerenciada pelo usuário e a 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 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
Computação de cluster do Kubernetes
Observação
Os clusters do Kubernetes do Azure Machine Learning dão suporte apenas a uma identidade atribuída pelo sistema ou a uma identidade atribuída pelo usuário, não simultaneamente.
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, uma identidade possui dois aplicativos:
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 usa a identidade gerenciada por padrão.
Você aplicará uma identidade para acessar os recursos de dentro do código para um trabalho enviado:
- No caso da computação de cluster do Kubernetes, o objeto ManagedIdentityCredential deve ser fornecido sem nenhuma 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 de cluster do Kubernetes, verifique se ele tem a extensão AML necessária implantada nele e siga a documentação sobre como anexar a computação de cluster do Kubernetes ao workspace do AML.
Importante
Para fins de treinamento (tarefas de aprendizado de máquina), use a identidade atribuída ao cluster de computação do Kubernetes. No entanto, para inferência (Pontos de extremidade Online Gerenciados), use a identidade atribuída ao ponto de extremidade. Para obter mais informações, confira Como acessar cessar recursos do Azure de um ponto de extremidade online.
Armazenamento de dados
Ao criar um armazenamento de dados que usa acesso a dados baseado em identidade, você usa sua conta do Azure (token do Microsoft Entra) para confirmar que tem permissão para acessar o serviço de armazenamento. No cenário de acesso a dados baseado em identidade , você não salva credenciais de autenticação. Você armazena apenas as informações da conta de armazenamento no datastore.
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 de workspace com permissões suficientes possam 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.
Você pode aplicar o acesso a dados com base em identidade no Azure Machine Learning em dois cenários. 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
Usando o acesso baseado em identidade, você pode usar 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.
Acessando serviços de armazenamento
Você pode se conectar aos serviços de armazenamento usando o acesso a dados baseados em identidade com 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 de armazenamento e mantém as credenciais confidenciais.
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 baseada em credenciais incluem IDs de assinatura, tokens de assinatura de acesso compartilhado (SAS), chave de acesso ao armazenamento e informações da entidade de serviço, como IDs de cliente e IDs de locatário.
Para se conectar com segurança ao 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 seu cenário exigir acesso entre locatários, entre em contato com a equipe amldatasupport@microsoft.com de Suporte a Dados do Azure Machine Learning 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 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 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 podem não ter acesso direto aos dados como usuários do Microsoft Entra. Nesse cenário, use a identidade gerenciada de uma computação para autenticação de acesso a dados. Você só pode acessar os dados de uma instância de computação ou de um cluster de computação de machine learning executando um trabalho de treinamento. Ao utilizar essa abordagem, o administrador concede à instância de computação ou à identidade gerenciada do cluster de computação permissões de Leitor de Dados de 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 você configurar a instância de computação para desligamento ocioso, a instância de computação não será desligada devido à inatividade, a menos que a identidade gerenciada tenha acesso de Colaborador ao workspace do Azure Machine Learning. Para obter mais informações sobre como atribuir 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 do sistema criada para instância de computação ou cluster está no formato /workspace-name/computes/compute-name no seu Microsoft Entra ID.
Ao habilitar a autenticação baseada em identidade, a identidade gerenciada do compute é usada por padrão ao acessar dados em seus trabalhos de treinamento. Opcionalmente, você pode autenticar usando a identidade do usuário seguindo as etapas descritas na próxima seção.
Para obter informações sobre como configurar o 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:
extensão do ML da CLI do Azure v2 (atual)
Ao treinar em clusters de computação do Azure Machine Learning, você pode se autenticar para o armazenamento usando o token Microsoft Entra do usuário.
Esse modo de autenticação permite que você:
- Configure permissões refinadas, em que diferentes usuários do workspace podem acessar 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:
- Os experimentos enviados por meio da CLI do Azure Machine Learning e do SDK do Python V2 dão suporte a esse recurso, mas o ML Studio não.
- Você não pode usar a identidade do usuário e a identidade gerenciada de computação para autenticação no mesmo trabalho.
- Para trabalhos em pipeline, defina a identidade do usuário no nível da etapa individual que é executada em um componente computacional, em vez de no nível raiz do pipeline. Embora a configuração de identidade seja compatível tanto no nível raiz do pipeline quanto no nível da etapa, a configuração no nível da etapa tem precedência se ambas estiverem definidas. No entanto, para pipelines que contêm componentes de pipeline, a identidade deve ser definida em cada etapa individual que for executada. A identidade definida no nível do pipeline raiz ou do componente do pipeline não funciona. Portanto, defina a identidade em passos individuais para simplificar.
Para configurar o acesso a dados usando a identidade do usuário para trabalhos de treinamento em clusters de computação da CLI, siga estas etapas:
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.
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.
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 você não especificar a propriedade de identidade e o armazenamento de dados não tiver credenciais armazenadas em cache, o sistema utilizará a identidade gerenciada de computação como um 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
Para configurar o acesso a dados usando a identidade do usuário para trabalhos de treinamento em clusters de computação do SDK do Python, siga estas etapas:
Conceda acesso a dados e crie um armazenamento de dados conforme descrito anteriormente para a CLI.
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
Ao submeter um trabalho com autenticação por meio da identidade do usuário, a validação de checksum protege os snapshots de código contra adulteração. Se você tiver componentes de pipeline existentes e pretende usá-los com autenticação usando a identidade do usuário, 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, essas configurações ditam qual tipo de identidade e acesso de permissões são necessários. 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 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, você poderá usar a identidade do usuário ou o MSI do workspace, 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 Workspace MSI é utilizado.
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
Crie um workspace do Azure Machine Learning.
Execute uma ação que exija o Registro de Contêiner do Azure. Por exemplo, consulte o Tutorial: Treinar seu primeiro modelo.
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 --name <my workspace name> \ --resource-group <my resource group> \ --subscription <my subscription id> \ --query container_registryEsse 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>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 a política de assinatura não permitir que o usuário administrador do ACR, primeiro crie o ACR sem um usuário administrador e, em seguida, associe-o ao workspace.
Crie o ACR da CLI do Azure sem definir o --admin-enabled argumento ou no portal do Azure sem habilitar o usuário administrador. Ao criar um espaço de trabalho do Azure Machine Learning, especifique a ID de recurso do Azure para o ACR. O seguinte exemplo demonstra como criar um workspace do Azure Machine Learning que usa um ACR existente:
APLICA-SE A:
extensão do ML da CLI do Azure 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>
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.
Além disso, se você já possui um ACR com o usuário administrador desativado, pode vinculá-lo ao workspace atualizando-o. O exemplo a seguir demonstra como atualizar um workspace do Azure Machine Learning para usar um ACR existente:
APLICA-SE A:
extensão do ML da CLI do Azure 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>
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 do portal do Azure ou do Studio ao criar computação ou da CLI do Azure usando o comando a seguir. Para obter mais informações, consulte usando a identidade gerenciada com clusters de computação.
APLICA-SE A:
extensão do 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 workspace para permitir o download de imagens Docker para treinamento.
Observação
Se você criar o ambiente de computação primeiro, antes que o ACR do workspace exista, será necessário 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ê poderá acessar imagens do Docker para inferência sem chaves de administrador do AKS (serviço de Kubernetes do Azure). Ao criar ou anexar o AKS ao workspace, a entidade de serviço do cluster obtém automaticamente acesso ACRPull ao ACR do workspace.
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 de um repositório público gerenciado pela Microsoft. Ele cria seu ambiente de treinamento ou inferência nessas imagens. Para obter mais informações, confira O que são ambientes de ML?
Para usar uma imagem base personalizada interna em sua empresa, use identidades gerenciadas para acessar seu ACR privado.
Crie um cluster de computação de machine learning com identidade gerenciada 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> -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:
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(para a função ACRPull do workspace ou da computação) 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>"Crie um ambiente e especifique o local da imagem base no arquivo YAML do ambiente. O arquivo YAML a seguir demonstra como definir um ambiente que faça referência ao ACR privado. Substitua o
<acr-url>pela URL do seu ACR privado, comomyregistry.azurecr.io. Substitua o<image-path>com o caminho para sua imagem no ACR privado, comopytorch/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.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 você pode usar o ambiente em um trabalho de treinamento.
Artigos relacionados
- Saiba mais sobre a segurança da empresa no Azure Machine Learning.
- Saiba mais sobre a administração de dados.
- Saiba mais sobre identidades gerenciadas em cluster de computação.