Compartilhar via


Gerenciar o acesso aos espaços de trabalho do Azure Machine Learning

Este artigo explica como gerenciar o acesso (autorização) aos espaços de trabalho do Azure Machine Learning. Use o Azure RBAC (controle de acesso baseado em função do Azure) para gerenciar o acesso aos recursos do Azure, oferecendo aos usuários a habilidade de criar novos recursos ou usar os existentes. Os usuários em seu Microsoft Entra ID recebem funções específicas, que concedem acesso aos recursos. O Azure fornece funções internas e a capacidade de criar funções personalizadas.

Dica

Embora este artigo se concentre no Azure Machine Learning, os serviços individuais fornecem suas próprias configurações de RBAC. Por exemplo, usando as informações neste artigo, você pode configurar quem pode enviar solicitações de pontuação para um modelo implantado como um serviço Web no Serviço de Kubernetes do Azure. Mas o Serviço de Kubernetes do Azure fornece seu próprio conjunto de funções do Azure. Para informações de RBAC específicas de serviço que podem ser úteis com o Azure Machine Learning, consulte os links a seguir:

Aviso

A aplicação de algumas funções pode limitar a funcionalidade da IU no Estúdio do Azure Machine Learning para outros usuários. Por exemplo, se a função de um usuário não puder criar uma instância de computação, a opção de criar uma instância de computação não estará disponível no estúdio. Esse comportamento é esperado, e impede que o usuário tente operações que retornariam uma mensagem de erro de acesso negado.

Funções padrão

Os espaços de trabalho do Azure Machine Learning têm funções internas que estão disponíveis por padrão. Ao adicionar usuários a um workspace, eles podem receber uma das funções a seguir.

Função Nível de acesso
Cientista de Dados do AzureML Pode executar todas as ações em um espaço de trabalho do Azure Machine Learning, exceto criar ou excluir recursos de computação e modificar o próprio espaço de trabalho.
Operador de Serviços de Computação do AzureML É possível criar, gerenciar, excluir e acessar recursos de computação em um espaço de trabalho.
Leitor Ações de somente leitura no workspace. Os leitores podem listar e exibir ativos, incluindo credenciais de armazenamento de dados em um workspace. Os leitores não podem criar ou atualizar esses ativos.
Colaborador Exiba, crie, edite ou exclua (onde aplicável) ativos de um workspace. Por exemplo, os colaboradores podem criar um experimento, criar ou anexar um cluster de computação, enviar uma execução e implantar um serviço Web.
Proprietário Acesso completo ao workspace, incluindo a capacidade de exibir, criar, editar ou excluir (onde aplicável) ativos de um workspace. Além disso, você pode alterar as atribuições de função.

Além disso, os registros do Azure Machine Learning têm uma função de Usuário do registro do Azure Machine Learning que pode ser atribuída a um recurso de registro para conceder permissões de nível de usuário a cientistas de dados. Para permissões de nível de administrador a fim de criar ou excluir registros, use a função de Colaborador ou Proprietário.

Função Nível de acesso
Usuário do registro do AzureML Pode obter registros e fazer leitura, gravar e excluir ativos neles. Não pode criar recursos de registro nem excluí-los.

Você pode combinar as funções para conceder diferentes níveis de acesso. Por exemplo, você pode conceder a um usuário do workspace as funções Cientista de Dados do AzureML e Operador de Computação do AzureML para permitir que ele execute experimentos enquanto cria computações usando o autoatendimento.

Importante

O acesso à função pode ser definido para vários níveis no Azure. Por exemplo, alguém com acesso de proprietário a um workspace pode não ter acesso de proprietário ao grupo de recursos que contém o workspace. Para obter mais informações, confira Como o RBAC do Azure funciona.

Função Administrador de IA do Azure

Antes de 19/11/2024, a identidade gerenciada atribuída pelo sistema criada para o workspace recebia automaticamente a função de Colaborador do grupo de recursos que contém o workspace. Workspaces criados após esta data têm a identidade gerenciada atribuída pelo sistema com a função de Administrador de IA do Azure. Essa função tem escopo mais restrito às permissões mínimas necessárias para a identidade gerenciada executar suas tarefas.

A função Administrador de IA do Azure está em visualização pública.

Importante

Esse recurso está atualmente em visualização pública. Essa versão prévia é fornecida sem um contrato de nível de serviço e não é recomendada para cargas de trabalho de produção. Alguns recursos podem não ter suporte ou podem ter restrição de recursos.

Para obter mais informações, consulte Termos de Uso Complementares de Versões Prévias do Microsoft Azure.

A função Administrador de IA do Azure tem as seguintes permissões:

{
    "permissions": [
        {
            "actions": [
                "Microsoft.Authorization/*/read",
                "Microsoft.CognitiveServices/*",
                "Microsoft.ContainerRegistry/registries/*",
                "Microsoft.DocumentDb/databaseAccounts/*",
                "Microsoft.Features/features/read",
                "Microsoft.Features/providers/features/read",
                "Microsoft.Features/providers/features/register/action",
                "Microsoft.Insights/alertRules/*",
                "Microsoft.Insights/components/*",
                "Microsoft.Insights/diagnosticSettings/*",
                "Microsoft.Insights/generateLiveToken/read",
                "Microsoft.Insights/logDefinitions/read",
                "Microsoft.Insights/metricAlerts/*",
                "Microsoft.Insights/metricdefinitions/read",
                "Microsoft.Insights/metrics/read",
                "Microsoft.Insights/scheduledqueryrules/*",
                "Microsoft.Insights/topology/read",
                "Microsoft.Insights/transactions/read",
                "Microsoft.Insights/webtests/*",
                "Microsoft.KeyVault/*",
                "Microsoft.MachineLearningServices/workspaces/*",
                "Microsoft.Network/virtualNetworks/subnets/joinViaServiceEndpoint/action",
                "Microsoft.ResourceHealth/availabilityStatuses/read",
                "Microsoft.Resources/deployments/*",
                "Microsoft.Resources/deployments/operations/read",
                "Microsoft.Resources/subscriptions/operationresults/read",
                "Microsoft.Resources/subscriptions/read",
                "Microsoft.Resources/subscriptions/resourcegroups/deployments/*",
                "Microsoft.Resources/subscriptions/resourceGroups/read",
                "Microsoft.Resources/subscriptions/resourceGroups/write",
                "Microsoft.Storage/storageAccounts/*",
                "Microsoft.Support/*",
                "Microsoft.Search/searchServices/write",
                "Microsoft.Search/searchServices/read",
                "Microsoft.Search/searchServices/delete",
                "Microsoft.Search/searchServices/indexes/*",
                "Microsoft.DataFactory/factories/*"
            ],
            "notActions": [],
            "dataActions": [],
            "notDataActions": []
        }
    ]
}

Converter uma identidade gerenciada pelo sistema existente na função Administrador de IA do Azure

Dica

Recomendamos que você converta os workspaces criados antes de 19/11/2024 para usar a função Administrador de IA do Azure. A função Administrador de IA do Azure tem escopo mais restrito que a função Colaborador usada anteriormente e segue o princípio de privilégios mínimos.

Você pode converter workspaces criados antes de 19/11/2024 usando um dos seguintes métodos:

  • API REST do Azure: use uma solicitação PATCH para a API REST do Azure para o workspace. O corpo da solicitação deve definir {"properties":{"allowRoleAssignmeentOnRG":true}}. O exemplo a seguir mostra uma solicitação PATCH usando curl. Substitua <your-subscription>, <resource-group-name>, <workspace-name> e <YOUR-ACCESS-TOKEN> pelos valores para seu cenário. Para obter mais informações sobre o uso de APIs REST, visite a documentação da API REST do Azure.

    curl -X PATCH https://management.azure.com/subscriptions/<your-subscription>/resourcegroups/<resource-group-name>/providers/Microsoft.MachineLearningServices/workspaces/<workspace-name>?api-version=2024-04-01-preview -H "Authorization:Bearer <YOUR-ACCESS-TOKEN>"
    
  • CLI do Azure: use o comando az ml workspace update com o parâmetro --allow-roleassignment-on-rg true. O exemplo a seguir atualiza um workspace chamado myworkspace. Esse comando requer a extensão da CLI do Azure Machine Learning versão 2.27.0 ou posterior.

    az ml workspace update --name myworkspace --allow-roleassignment-on-rg true
    
  • SDK de Python do Azure: defina a propriedade allow_roleassignment_on_rg do objeto do workspace como True e, em seguida, execute uma operação de atualização. O exemplo a seguir atualiza um workspace chamado myworkspace. Esta operação requer o SDK do Azure Machine Learning versão 1.17.0 ou posterior.

    ws = ml_client.workspaces.get(name="myworkspace")
    ws.allow_roleassignment_on_rg = True
    ws = ml_client.workspaces.begin_update(workspace=ws).result()
    

Gerenciar o acesso ao workspace

Caso você seja proprietário de um workspace, poderá adicionar e remover funções do workspace. Você também pode atribuir funções a usuários. Use os seguintes links para descobrir como gerenciar o acesso:

Por exemplo, use a CLI do Azure para atribuir a função de Colaborador ao joe@contoso.com no grupo de recursos this-rg com o seguinte comando:

az role assignment create --role "Contributor" --assignee "joe@contoso.com" --resource-group this-rg

Use os grupos de segurança do Microsoft Entra para gerenciar o acesso ao workspace

Você pode usar os grupos de segurança do Microsoft Entra para gerenciar o acesso a workspaces. Essa abordagem tem os seguintes benefícios:

  • Líderes de equipe ou projeto podem gerenciar o acesso do usuário ao workspace como proprietários de grupos de segurança, sem precisar da função Proprietário diretamente no recurso do workspace.
  • Você pode organizar, gerenciar e revogar as permissões dos usuários no workspace e em outros recursos como um grupo, sem precisar gerenciar permissões para cada usuário.
  • Usar os grupos do Microsoft Entra ajuda você a evitar atingir o limite de assinatura nas atribuições de função.

Para usar grupos de segurança do Microsoft Entra:

  1. Crie um grupo de segurança.
  2. Adicione um proprietário do grupo. Esse usuário tem permissões para adicionar ou remover membros do grupo. O proprietário do grupo não precisa ser membro do grupo ou ter uma função de RBAC direta no espaço de trabalho.
  3. Atribua ao grupo uma função RBAC no workspace, como Cientista de Dados do AzureML, Leitor ou Colaborador.
  4. Adicione membros do grupo. Os membros obtêm acesso ao espaço de trabalho.

Criar função personalizada

Caso as funções internas sejam insuficientes, você poderá criar funções personalizadas. As funções personalizadas podem ter permissões de leitura, gravação, exclusão e recursos de computação neste espaço de trabalho. Você pode tornar a função disponível em níveis específicos do workspace, do grupo de recursos ou da assinatura.

Observação

Você deve ser um proprietário do recurso nesse nível para criar funções personalizadas dentro desse recurso.

Para criar uma função personalizada, primeiramente, construa um arquivo JSON de definição de função que especifique a permissão e o escopo da função. O exemplo a seguir define uma função personalizada de Cientista de Dados com escopo em um nível de espaço de trabalho específico:

data_scientist_custom_role.json :

{
    "Name": "Data Scientist Custom",
    "IsCustom": true,
    "Description": "Can run experiment but can't create or delete compute.",
    "Actions": ["*"],
    "NotActions": [
        "Microsoft.MachineLearningServices/workspaces/*/delete",
        "Microsoft.MachineLearningServices/workspaces/write",
        "Microsoft.MachineLearningServices/workspaces/computes/*/write",
        "Microsoft.MachineLearningServices/workspaces/computes/*/delete", 
        "Microsoft.Authorization/*/write"
    ],
    "AssignableScopes": [
        "/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.MachineLearningServices/workspaces/<workspaceName>"
    ]
}

Dica

Você pode alterar o campo AssignableScopes para definir o escopo dessa função personalizada no nível da assinatura, no nível do grupo de recursos ou em um nível de workspace específico. A função personalizada anterior é apenas um exemplo, consulte algumas funções personalizadas sugeridas para o serviço do Azure Machine Learning.

Essa função personalizada pode fazer tudo no workspace, exceto as seguintes ações:

  • Ela não pode excluir o workspace.
  • Ela não pode criar nem atualizar o workspace.
  • Ela não pode criar nem atualizar recursos de computação.
  • Ela não pode excluir recursos de computação.
  • Ela não pode adicionar, excluir ou alterar atribuições de função.

Para implantar essa função personalizada, use o seguinte comando da CLI do Azure:

az role definition create --role-definition data_scientist_custom_role.json

Após a implantação, essa função fica disponível no workspace especificado. Agora você pode adicionar e atribuir essa função no portal do Azure.

Para obter mais informações sobre as funções personalizadas, consulte Funções personalizadas do Azure.

Operações do Azure Machine Learning

Para obter mais informações sobre as operações (ações e não ações) utilizáveis com funções personalizadas, consulte Operações do provedor de recursos. Você também pode usar o seguinte comando da CLI do Azure para listar as operações:

az provider operation show –n Microsoft.MachineLearningServices

Listar funções personalizadas

Execute o seguinte comando na CLI do Azure:

az role definition list --subscription <subscriptionId> --custom-role-only true

Para ver a definição de uma função personalizada específica, use o comando a seguir da CLI do Azure. O <roleName> deve estar no mesmo formato retornado pelo comando anterior:

az role definition list -n <roleName> --subscription <subscriptionId>

Atualizar uma função personalizada

Execute o seguinte comando na CLI do Azure:

az role definition update --role-definition update_def.json --subscription <subscriptionId>

Você precisa ter permissões em todo o escopo da nova definição de função. Por exemplo, se essa nova função tiver um escopo entre três assinaturas, você precisará ter permissões em todas as três assinaturas.

Observação

As atualizações de função podem levar de 15 minutos a uma hora para serem aplicadas em todas as atribuições de função nesse escopo.

Use os modelos do Azure Resource Manager para repetibilidade

Se você prevê que precisará recriar atribuições de função complexas, um modelo do Azure Resource Manager poderá ajudar consideravelmente. O modelo machine-learning-dependencies-role-assignment mostra como as atribuições de função podem ser especificadas no código-fonte para reutilização.

Cenários comuns

A tabela a seguir é um resumo das atividades do Azure Machine Learning e as permissões necessárias para realizá-las no menor escopo. Por exemplo, se uma atividade puder ser executada com um escopo de espaço de trabalho (coluna 4), todo o escopo mais alto com essa permissão também funcionará automaticamente. Para determinadas atividades, as permissões diferem entre APIs V1 e V2.

Importante

Todos os caminhos nesta tabela que começam com / são caminhos relativos a Microsoft.MachineLearningServices/ :

Atividade Escopo de nível de assinatura Escopo de nível do grupo de recursos Escopo de nível do workspace
Criar espaço de trabalho 1 Não é necessária Proprietário ou colaborador N/A (torna-se Proprietário ou herda uma função de escopo maior após a criação)
Solicitar cota de Amlcompute de nível de assinatura ou definir cota de nível de workspace Proprietário, colaborador ou função personalizada
permitindo /locations/updateQuotas/action
no escopo da assinatura
Não autorizado Não autorizado
Criar um novo cluster de cálculo Não é necessária Não é necessária Proprietário, colaborador ou função personalizada, permitindo: /workspaces/computes/write
Criar uma nova instância de computação Não é necessária Não é necessária Proprietário, colaborador ou função personalizada, permitindo: /workspaces/computes/write
Enviar qualquer tipo de execução (V1) Não é necessária Não é necessária Proprietário, colaborador ou função personalizada, permitindo: /workspaces/*/read, /workspaces/environments/write, /workspaces/experiments/runs/write, /workspaces/metadata/artifacts/write, /workspaces/metadata/snapshots/write, /workspaces/environments/build/action, /workspaces/experiments/runs/submit/action, /workspaces/environments/readSecrets/action
Enviar qualquer tipo de execução (V2) Não é necessária Não é necessária Proprietário, colaborador ou função personalizada, permitindo: /workspaces/*/read, /workspaces/environments/write, /workspaces/jobs/*, /workspaces/metadata/artifacts/write, /workspaces/metadata/codes/*/write, /workspaces/environments/build/action, /workspaces/environments/readSecrets/action
Publicar pipelines e pontos de extremidade (V1) Não é necessária Não é necessária Proprietário, colaborador ou função personalizada, permitindo: /workspaces/endpoints/pipelines/*, /workspaces/pipelinedrafts/*, /workspaces/modules/*
Publicar pipelines e pontos de extremidade (V2) Não é necessária Não é necessária Proprietário, colaborador ou função personalizada, permitindo: /workspaces/endpoints/pipelines/*, /workspaces/pipelinedrafts/*, /workspaces/components/*
Anexar um recurso do AKS 2 Não é necessária Proprietário ou colaborador no grupo de recursos que contém o AKS
Implantar um modelo registrado em um recurso AKS/ACI Não é necessária Não é necessária Proprietário, colaborador ou função personalizada, permitindo: /workspaces/services/aks/write, /workspaces/services/aci/write
Pontuar em relação a um ponto de extremidade AKS implantado Não é necessária Não é necessária Proprietário, colaborador ou função personalizada, permitindo: /workspaces/services/aks/score/action, /workspaces/services/aks/listkeys/action (quando você não usa autenticação do Microsoft Entra) OU /workspaces/read (quando você usa autenticação de token)
Acessar o armazenamento usando notebooks interativos Não é necessária Não é necessária Proprietário, colaborador ou função personalizada, permitindo: /workspaces/computes/read, /workspaces/notebooks/samples/read, /workspaces/notebooks/storage/*, /workspaces/listStorageAccountKeys/action, /workspaces/listNotebookAccessToken/read
Criar nova função personalizada Proprietário, colaborador ou função personalizada, permitindo Microsoft.Authorization/roleDefinitions/write Não é necessária Proprietário, colaborador ou função personalizada, permitindo: /workspaces/computes/write
Criar/gerenciar pontos de extremidade e implantações online Não é necessária Para implantar no estúdio, Microsoft.Resources/deployments/write Proprietário, colaborador ou função personalizada, permitindo Microsoft.MachineLearningServices/workspaces/onlineEndpoints/*
Recuperar credenciais de autenticação para pontos de extremidade online Não é necessária Não é necessária Proprietário, colaborador ou função personalizada, permitindo Microsoft.MachineLearningServices/workspaces/onlineEndpoints/token/action e Microsoft.MachineLearningServices/workspaces/onlineEndpoints/listkeys/action
  1. Se você receber uma falha ao tentar criar um workspace pela primeira vez, certifique-se de que sua função permite Microsoft.MachineLearningServices/register/action. Essa ação permite que você registre o provedor de recursos do Azure Machine Learning com sua assinatura do Azure.

  2. Ao anexar um cluster do AKS, você também precisa ter a função de Administrador do Cluster do Serviço de Kubernetes do Azure no cluster.

Implantar em uma rede virtual ou sub-rede

  • Para implantar recursos em uma rede virtual ou sub-rede, sua conta de usuário deve ter permissões para as seguintes ações no RBAC do Azure (controle de acesso baseado em função do Azure):

    • "Microsoft.Network/*/read" no recurso de rede virtual. Essa permissão não é necessária para implantações do modelo do ARM (Azure Resource Manager).
    • "Microsoft.Network/virtualNetworks/join/action" no recurso de rede virtual.
    • "Microsoft.Network/virtualNetworks/subnets/join/action" no recurso de sub-rede.

    Para saber mais sobre o RBAC do Azure com rede, confira Funções internas da rede

Diferenças entre ações para APIs V1 e V2

Há certas diferenças entre ações para APIs V1 e APIs V2.

Ativo Caminho de ação para API V1 Caminho de ação para API V2
Dataset Microsoft.MachineLearningServices/workspaces/datasets Microsoft.MachineLearningServices/workspaces/datasets/versions
Execuções de experimentos e trabalhos Microsoft.MachineLearningServices/workspaces/experiments Microsoft.MachineLearningServices/workspaces/jobs
Modelos Microsoft.MachineLearningServices/workspaces/models Microsoft.MachineLearningServices/workspaces/models/versions
Instantâneos e código Microsoft.MachineLearningServices/workspaces/snapshots Microsoft.MachineLearningServices/workspaces/codes/versions
Módulos e componentes Microsoft.MachineLearningServices/workspaces/modules Microsoft.MachineLearningServices/workspaces/components

É possível tornar as funções personalizadas compatíveis com APIs V1 e V2 inclusive ambas as ações ou usando curingas que incluem ambas as ações, por exemplo Microsoft.MachineLearningServices/workspaces/datasets/*/read.

Criar um espaço de trabalho que usa uma chave gerenciada pelo cliente

Ao usar uma CMK (chave gerenciada pelo cliente), um Azure Key Vault é usado para armazenar a chave. O usuário ou a entidade de serviço usada para criar o espaço de trabalho deve ter acesso de proprietário ou colaborador ao cofre de chaves.

Se o seu espaço de trabalho estiver configurado com uma identidade gerida atribuída pelo utilizador, a identidade deverá receber as seguintes funções. Essas funções permitem que a identidade gerida crie os recursos Armazenamento do Microsoft Azure, Azure Cosmos DB e Azure Search utilizados ao utilizar uma chave gerida pelo cliente:

  • Microsoft.Storage/storageAccounts/write
  • Microsoft.Search/searchServices/write
  • Microsoft.DocumentDB/databaseAccounts/write

Dentro do cofre de chaves, o usuário ou a entidade de serviço precisa ter acesso de criação, obtenção, exclusão e limpeza à chave por meio de uma política de acesso do cofre de chaves. Para obter mais informações, confira Segurança do Azure Key Vault.

Identidade gerenciada atribuída pelo usuário com o cluster de cálculo do Azure Machine Learning

Para atribuir uma identidade atribuída pelo usuário a um cluster de cálculo do Azure Machine Learning, você precisa de permissões de gravação para criar o cálculo e a Função de Operador de Identidade Gerenciada. Para obter mais informações sobre o RBAC do Azure com Identidades Gerenciadas, leia Como gerenciar a identidade atribuída pelo usuário

Operações de MLflow

Para executar operações de MLflow com seu workspace do Azure Machine Learning, use os seguintes escopos da sua função personalizada:

Operação de MLflow Escopo
(V1) Listar, ler, criar, atualizar ou excluir experimentos Microsoft.MachineLearningServices/workspaces/experiments/*
(V2) Listar, ler, criar, atualizar ou excluir trabalhos Microsoft.MachineLearningServices/workspaces/jobs/*
Obter modelo registrado por nome, buscar uma lista de todos os modelos registrados no registro, procurar modelos registrados, modelos de versão mais recentes para cada estágio de solicitações, obter a versão de um modelo registrado, procurar versões de modelo, obter URI onde os artefatos da versão do modelo são armazenados, procurar execuções por IDs de experimento Microsoft.MachineLearningServices/workspaces/models/*/read
Criar um novo modelo registrado, atualizar o nome/descrição de um modelo registrado, renomear o modelo registrado existente, criar uma nova versão do modelo, atualizar a descrição de uma versão do modelo, fazer a transição de um modelo registrado para um dos estágios Microsoft.MachineLearningServices/workspaces/models/*/write
Excluir um modelo registrado junto com todas as suas versões, excluir versões específicas de um modelo registrado Microsoft.MachineLearningServices/workspaces/models/*/delete

Exemplo de funções personalizadas

Cientista de dados

Permite que um cientista de dados execute todas as operações dentro de um workspace, exceto:

  • Criação de computação
  • Implantação de modelos em um cluster AKS de produção
  • Implantação de um ponto de extremidade de pipeline em produção

data_scientist_custom_role.json :

{
    "Name": "Data Scientist Custom",
    "IsCustom": true,
    "Description": "Can run experiment but can't create or delete compute or deploy production endpoints.",
    "Actions": [
        "Microsoft.MachineLearningServices/workspaces/*/read",
        "Microsoft.MachineLearningServices/workspaces/*/action",
        "Microsoft.MachineLearningServices/workspaces/*/delete",
        "Microsoft.MachineLearningServices/workspaces/*/write"
    ],
    "NotActions": [
        "Microsoft.MachineLearningServices/workspaces/delete",
        "Microsoft.MachineLearningServices/workspaces/write",
        "Microsoft.MachineLearningServices/workspaces/computes/*/write",
        "Microsoft.MachineLearningServices/workspaces/computes/*/delete", 
        "Microsoft.Authorization/*",
        "Microsoft.MachineLearningServices/workspaces/computes/listKeys/action",
        "Microsoft.MachineLearningServices/workspaces/listKeys/action",
        "Microsoft.MachineLearningServices/workspaces/services/aks/write",
        "Microsoft.MachineLearningServices/workspaces/services/aks/delete",
        "Microsoft.MachineLearningServices/workspaces/endpoints/pipelines/write"
    ],
    "AssignableScopes": [
        "/subscriptions/<subscriptionId>"
    ]
}

Cientista de dados restrito

Uma definição de função mais restrita sem curingas nas ações permitidas. Ele pode executar todas as operações dentro de um workspace, exceto:

  • Criação de computação
  • Implantação de modelos em um cluster AKS de produção
  • Implantação de um ponto de extremidade de pipeline em produção

data_scientist_restricted_custom_role.json :

{
    "Name": "Data Scientist Restricted Custom",
    "IsCustom": true,
    "Description": "Can run experiment but can't create or delete compute or deploy production endpoints",
    "Actions": [
        "Microsoft.MachineLearningServices/workspaces/*/read",
        "Microsoft.MachineLearningServices/workspaces/computes/start/action",
        "Microsoft.MachineLearningServices/workspaces/computes/stop/action",
        "Microsoft.MachineLearningServices/workspaces/computes/restart/action",
        "Microsoft.MachineLearningServices/workspaces/computes/applicationaccess/action",
        "Microsoft.MachineLearningServices/workspaces/notebooks/storage/write",
        "Microsoft.MachineLearningServices/workspaces/notebooks/storage/delete",
        "Microsoft.MachineLearningServices/workspaces/experiments/runs/write",
        "Microsoft.MachineLearningServices/workspaces/experiments/write",
        "Microsoft.MachineLearningServices/workspaces/experiments/runs/submit/action",
        "Microsoft.MachineLearningServices/workspaces/pipelinedrafts/write",
        "Microsoft.MachineLearningServices/workspaces/metadata/snapshots/write",
        "Microsoft.MachineLearningServices/workspaces/metadata/artifacts/write",
        "Microsoft.MachineLearningServices/workspaces/environments/write",
        "Microsoft.MachineLearningServices/workspaces/models/*/write",
        "Microsoft.MachineLearningServices/workspaces/modules/write",
        "Microsoft.MachineLearningServices/workspaces/components/*/write",
        "Microsoft.MachineLearningServices/workspaces/datasets/*/write", 
        "Microsoft.MachineLearningServices/workspaces/datasets/*/delete",
        "Microsoft.MachineLearningServices/workspaces/computes/listNodes/action",
        "Microsoft.MachineLearningServices/workspaces/environments/build/action"
    ],
    "NotActions": [
        "Microsoft.MachineLearningServices/workspaces/computes/write",
        "Microsoft.MachineLearningServices/workspaces/write",
        "Microsoft.MachineLearningServices/workspaces/computes/delete",
        "Microsoft.MachineLearningServices/workspaces/delete",
        "Microsoft.MachineLearningServices/workspaces/computes/listKeys/action",
        "Microsoft.MachineLearningServices/workspaces/connections/listsecrets/action",
        "Microsoft.MachineLearningServices/workspaces/listKeys/action",
        "Microsoft.Authorization/*",
        "Microsoft.MachineLearningServices/workspaces/datasets/registered/profile/read",
        "Microsoft.MachineLearningServices/workspaces/datasets/registered/preview/read",
        "Microsoft.MachineLearningServices/workspaces/datasets/unregistered/profile/read",
        "Microsoft.MachineLearningServices/workspaces/datasets/unregistered/preview/read",
        "Microsoft.MachineLearningServices/workspaces/datasets/registered/schema/read",    
        "Microsoft.MachineLearningServices/workspaces/datasets/unregistered/schema/read",
        "Microsoft.MachineLearningServices/workspaces/datastores/write",
        "Microsoft.MachineLearningServices/workspaces/datastores/delete"
    ],
    "AssignableScopes": [
        "/subscriptions/<subscriptionId>"
    ]
}

Cientista de dados de MLflow

Permite que um cientista de dados execute todas as operações com suporte do MLflow no Azure Machine Learning, exceto:

  • Criação de computação
  • Implantação de modelos em um cluster AKS de produção
  • Implantação de um ponto de extremidade de pipeline em produção

mlflow_data_scientist_custom_role.json :

{
    "Name": "MLFlow Data Scientist Custom",
    "IsCustom": true,
    "Description": "Can perform azureml mlflow integrated functionalities that includes mlflow tracking, projects, model registry",
    "Actions": [
        "Microsoft.MachineLearningServices/workspaces/experiments/*",
        "Microsoft.MachineLearningServices/workspaces/jobs/*",
        "Microsoft.MachineLearningServices/workspaces/models/*"
    ],
    "NotActions": [
        "Microsoft.MachineLearningServices/workspaces/delete",
        "Microsoft.MachineLearningServices/workspaces/write",
        "Microsoft.MachineLearningServices/workspaces/computes/*/write",
        "Microsoft.MachineLearningServices/workspaces/computes/*/delete", 
        "Microsoft.Authorization/*",
        "Microsoft.MachineLearningServices/workspaces/computes/listKeys/action",
        "Microsoft.MachineLearningServices/workspaces/listKeys/action",
        "Microsoft.MachineLearningServices/workspaces/services/aks/write",
        "Microsoft.MachineLearningServices/workspaces/services/aks/delete",
        "Microsoft.MachineLearningServices/workspaces/endpoints/pipelines/write"
    ],
    "AssignableScopes": [
        "/subscriptions/<subscriptionId>"
    ]
}

MLOps

Permite atribuir uma função a uma entidade de serviço e usá-la para automatizar os pipelines do MLOps. Por exemplo, para enviar execuções em um pipeline já publicado:

mlops_custom_role.json :

{
    "Name": "MLOps Custom",
    "IsCustom": true,
    "Description": "Can run pipelines against a published pipeline endpoint",
    "Actions": [
        "Microsoft.MachineLearningServices/workspaces/read",
        "Microsoft.MachineLearningServices/workspaces/endpoints/pipelines/read",
        "Microsoft.MachineLearningServices/workspaces/metadata/artifacts/read",
        "Microsoft.MachineLearningServices/workspaces/metadata/snapshots/read",
        "Microsoft.MachineLearningServices/workspaces/environments/read",    
        "Microsoft.MachineLearningServices/workspaces/metadata/secrets/read",
        "Microsoft.MachineLearningServices/workspaces/modules/read",
        "Microsoft.MachineLearningServices/workspaces/components/read",       
        "Microsoft.MachineLearningServices/workspaces/datasets/*/read",
        "Microsoft.MachineLearningServices/workspaces/datastores/read",
        "Microsoft.MachineLearningServices/workspaces/environments/write",
        "Microsoft.MachineLearningServices/workspaces/experiments/runs/read",       
        "Microsoft.MachineLearningServices/workspaces/experiments/runs/write",
        "Microsoft.MachineLearningServices/workspaces/experiments/runs/submit/action",
        "Microsoft.MachineLearningServices/workspaces/experiments/jobs/read",       
        "Microsoft.MachineLearningServices/workspaces/experiments/jobs/write",
        "Microsoft.MachineLearningServices/workspaces/metadata/artifacts/write",
        "Microsoft.MachineLearningServices/workspaces/metadata/snapshots/write",
        "Microsoft.MachineLearningServices/workspaces/metadata/codes/*/write",       
        "Microsoft.MachineLearningServices/workspaces/environments/build/action",
    ],
    "NotActions": [
        "Microsoft.MachineLearningServices/workspaces/computes/write",
        "Microsoft.MachineLearningServices/workspaces/write",
        "Microsoft.MachineLearningServices/workspaces/computes/delete",
        "Microsoft.MachineLearningServices/workspaces/delete",
        "Microsoft.MachineLearningServices/workspaces/computes/listKeys/action",
        "Microsoft.MachineLearningServices/workspaces/listKeys/action",
        "Microsoft.Authorization/*"
    ],
    "AssignableScopes": [
        "/subscriptions/<subscriptionId>"
    ]
}

Administrador de workspaces

Permite que você execute todas as operações dentro do escopo de um workspace, exceto:

  • Criando um novo workspace
  • Atribuir cotas de nível de workspace ou assinatura

O administrador do workspace também não pode criar uma função. Ele só pode atribuir funções internas ou personalizadas existentes dentro do escopo do workspace:

workspace_admin_custom_role.json :

{
    "Name": "Workspace Admin Custom",
    "IsCustom": true,
    "Description": "Can perform all operations except quota management and upgrades",
    "Actions": [
        "Microsoft.MachineLearningServices/workspaces/*/read",
        "Microsoft.MachineLearningServices/workspaces/*/action",
        "Microsoft.MachineLearningServices/workspaces/*/write",
        "Microsoft.MachineLearningServices/workspaces/*/delete",
        "Microsoft.Authorization/roleAssignments/*"
    ],
    "NotActions": [
        "Microsoft.MachineLearningServices/workspaces/write"
    ],
    "AssignableScopes": [
        "/subscriptions/<subscriptionId>"
    ]
}

Rotulagem de dados

Há uma função interna para rotulagem de dados, com escopo apenas para rotular dados. As funções personalizadas a seguir fornecem outros níveis de acesso para um projeto de rotulagem de dados.

O líder da equipe de rotulagem permite que você examine e rejeite o conjunto de dados rotulado e exiba insights de rotulagem. Além disso, essa função também permite que você execute a função de um rotulador.

labeling_team_lead_custom_role.json :

{
    "Name": "Labeling Team Lead",
    "IsCustom": true,
    "Description": "Team lead for Labeling Projects",
    "Actions": [
        "Microsoft.MachineLearningServices/workspaces/read",
        "Microsoft.MachineLearningServices/workspaces/labeling/labels/read",
        "Microsoft.MachineLearningServices/workspaces/labeling/labels/write",
        "Microsoft.MachineLearningServices/workspaces/labeling/labels/reject/action",
        "Microsoft.MachineLearningServices/workspaces/labeling/labels/update/action",
        "Microsoft.MachineLearningServices/workspaces/labeling/projects/read",
        "Microsoft.MachineLearningServices/workspaces/labeling/projects/summary/read"
    ],
    "NotActions": [
        "Microsoft.MachineLearningServices/workspaces/labeling/projects/write",
        "Microsoft.MachineLearningServices/workspaces/labeling/projects/delete",
        "Microsoft.MachineLearningServices/workspaces/labeling/export/action"
    ],
    "AssignableScopes": [
        "/subscriptions/<subscriptionId>"
    ]
}

Solução de problemas

Aqui estão algumas coisas a serem observadas enquanto você usa o RBAC do Azure:

  • Quando você cria um recurso no Azure, como um workspace, você não é diretamente o proprietário do recurso. Sua função é herdada da função de escopo mais alta na qual você está autorizado nessa assinatura. Como exemplo, se você for um Administrador de Rede e tiver as permissões para criar um workspace do Machine Learning, a função de Administrador de Rede será atribuída a esse workspace. Selecione a função Proprietário.

  • Para executar operações de cota em um workspace, você precisa de permissões de nível de assinatura. Isso significa que a definição de cota de nível de assinatura ou cota de nível de workspace para seus recursos de computação gerenciados só poderá ocorrer se você tiver permissões de gravação no escopo da assinatura.

  • Para implantar no estúdio, você precisará de Microsoft.Resources/deployments/write E Microsoft.MachineLearningServices/workspaces/onlineEndpoints/deployments/write. Para implantações do SDK/CLI, você precisará de Microsoft.MachineLearningServices/workspaces/onlineEndpoints/deployments/write. Entre em contato com o proprietário do workspace/grupo de recursos para obter as permissões adicionais.

  • Quando há duas atribuições de função para o mesmo usuário do Microsoft Entra com seções conflitantes de Actions/NotActions, suas operações listadas em NotActions de uma função podem não entrar em vigor se também estiverem listadas como Actions em outra função. Para saber mais sobre como o Azure analisa as atribuições de função, leia Como o RBAC do Azure determina se um usuário tem acesso a um recurso

  • Às vezes, pode levar até uma hora para que as novas atribuições de função entrem em vigor em todas as permissões armazenadas em cache em toda a pilha.