Partilhar via


Controle de acesso baseado em atributos (ABAC) do Microsoft Entra para permissões de repositório (Visualização)

O Azure Container Registry (ACR) dá suporte ao controle de acesso baseado em atributos (ABAC) do Microsoft Entra para gerenciar permissões de repositório. Esse recurso aumenta a segurança, permitindo o gerenciamento de permissões mais granular para repositórios de registro de contêiner. O ABAC baseia-se no RBAC (controle de acesso baseado em função) do Microsoft Entra introduzindo condições específicas do repositório em atribuições de função.

O ABAC foi projetado para gerenciar permissões de repositório com RBAC (controle de acesso baseado em função) do Microsoft Entra, atribuições de função do Microsoft Entra e identidades do Microsoft Entra. Para gerir permissões de repositório sem o Microsoft Entra, use permissões de repositório baseadas em tokens fora do Microsoft Entra.

Configurar o modo de permissões de atribuição de função do Registro

Para usar o Microsoft Entra ABAC para gerenciar permissões de repositório, verifique se o modo de permissões de atribuição de função do Registro está definido como "RBAC Registry + ABAC Repository Permissions". Esse modo permite que você use atribuições de função RBAC (usando funções internas do ACR) com condições ABAC opcionais para definir o escopo de atribuições de função para repositórios específicos.

Você pode configurar o modo de permissões de atribuição de função de um Registro durante a criação do Registro ou atualizando um Registro existente. Essa atribuição de função pode ser feita por meio do portal do Azure ou da CLI do Azure. Você pode habilitar o ABAC para qualquer registro, independentemente de sua SKU.

Observação

Certifique-se de ter a versão mais recente da CLI do Azure instalada executando o comando az upgradeAzure CLI . Além disso, se tiver participado anteriormente na pré-visualização privada desta funcionalidade, poderá ter instalado uma extensão de pré-visualização privada personalizada para gerir o ACR ABAC. Essa extensão personalizada não é mais necessária e deve ser desinstalada (para evitar conflitos) executando o comando az extension remove --name acrabacda CLI do Azure.

Efeito nas atribuições de funções existentes

Importante

Se você configurar um registro para usar "RBAC Registry + ABAC Repository Permissions", algumas atribuições de função existentes não serão honradas ou terão efeitos diferentes, porque um conjunto diferente de funções internas do ACR se aplica aos registros habilitados para ABAC.

Por exemplo, as funções AcrPull, AcrPush e AcrDelete não são honradas num registo habilitado para ABAC. Em vez disso, em registos habilitados para ABAC, use as funções Container Registry Repository Reader, Container Registry Repository Writer e Container Registry Repository Contributor para conceder permissões de imagem em todo o registo ou específicas do repositório.

Além disso, funções privilegiadas como Owner, Contributore Reader terão efeitos diferentes em um registro habilitado para ABAC. Eles só concederão permissões de plano de gestão para criar, atualizar e excluir o próprio registo. Essas funções privilegiadas não concederão permissões de plano de dados aos repositórios e imagens no Registro.

Para obter mais informações sobre a função com base no seu cenário e no modo de permissões de atribuição de função do Registro, consulte Cenários para funções internas do ACR. Como alternativa, consulte a referência de funções internas do ACR para obter uma descrição detalhada de cada função.

Efeito em tarefas ACR, tarefas rápidas, compilações rápidas e execuções rápidas

Importante

Se você configurar um registro para usar "RBAC Registry + ABAC Repository Permissions", tarefas ACR novas e existentes, bem como tarefas rápidas, compilações rápidas e execuções rápidas, serão afetadas. Deixarão de ter acesso predefinido ao plano de dados a um registo de origem habilitado para ABAC e ao seu conteúdo.

Para entender os efeitos dessa alteração — e como conceder acesso ao plano de dados para tarefas ACR, tarefas rápidas, compilações rápidas e execuções rápidas em registros de origem habilitados para ABAC — consulte Apêndice: Efeitos da habilitação do ABAC em tarefas ACR, tarefas rápidas, compilações rápidas e execuções rápidas.

Criar um registo com o ABAC ativado

Ao criar um novo registo através do portal do Azure, selecione a opção "RBAC Registry + ABAC Repository Permissions" no menu suspenso "Modo de permissões de atribuição de função".

Captura de tela da criação de um novo registro de contêiner com o ABAC habilitado.

Continue a preencher o resto do formulário de criação do registo e, em seguida, clique em "Criar" para criar o registo. Para obter mais informações sobre como criar um registro, consulte Criar um Registro de Contêiner do Azure usando o portal do Azure.

Atualizar um registro existente para habilitar o ABAC

Para exibir o modo de permissões de atribuição de função existente de um registro, navegue até a folha "Propriedades" do registro. O modo de permissões de atribuição de função atual é exibido no campo "Modo de permissões de atribuição de função".

Para atualizar o "Modo de permissões de atribuição de função" de um registro existente, selecione "RBAC Registry + ABAC Repository Permissions" e clique em "Salvar" para atualizar o registro.

Captura de tela da atualização de um registro de contêiner existente para habilitar o ABAC.

Atribuindo permissões de repositório do Microsoft Entra ABAC

Você pode usar o portal do Azure ou a CLI do Azure para atribuir condições do Microsoft Entra ABAC para definir o escopo de atribuições de função para repositórios específicos. Esta seção apresenta exemplos de formas de adicionar condições ABAC para um repositório específico, um prefixo de repositório (caracter universal) ou vários prefixos de repositório (vários caracteres universais).

Funções integradas habilitadas para ABAC

As seguintes funções internas do ACR são funções habilitadas para ABAC. Você pode especificar condições ABAC opcionais para as seguintes funções para, opcionalmente, definir o escopo de atribuições de função para repositórios específicos.

  • Container Registry Repository Reader - Função habilitada para ABAC que concede permissões para ler imagens, tags e metadados dentro de repositórios em um registro.
  • Container Registry Repository Writer - Função habilitada para ABAC que concede permissões para ler, gravar e atualizar imagens, tags e metadados dentro de repositórios em um registro.
  • Container Registry Repository Contributor - Função habilitada para ABAC que concede permissões para ler, gravar, atualizar e excluir imagens, tags e metadados dentro de repositórios em um registro.

Observe que essas funções não oferecem suporte a permissões de listagem de catálogo para listar repositórios em um registro. Para listar todos os repositórios em um registro (sem conceder permissões para ler o conteúdo do repositório), você deve atribuir adicionalmente a Container Registry Repository Catalog Lister função. Essa função separada não oferece suporte a condições ABAC e sempre terá permissões para listar todos os repositórios em um registro.

Importante

Se você atribuir uma função habilitada para ABAC sem condições ABAC, a atribuição de função não terá escopo para repositórios. Isso significa que uma atribuição de função sem condições ABAC será tratada como uma atribuição de função em todo o Registro, concedendo permissões a todos os repositórios no Registro. Para definir o escopo de uma atribuição de função a repositórios específicos, você deve incluir condições ABAC ao atribuir uma função habilitada para ABAC.

Para obter mais informações sobre a função com base no seu cenário e no modo de permissões de atribuição de função do Registro, consulte Cenários para funções internas do ACR. Como alternativa, consulte a referência de funções internas do ACR para obter uma descrição detalhada de cada função.

Atribuição de função de escopo a um repositório específico

Neste exemplo, atribuímos a Container Registry Repository Reader função para conceder permissões pull a um único repositório. Ao adicionar condições ABAC, essa atribuição de função permite que a identidade extraia imagens, visualize etiquetas e leia metadados somente do repositório especificado, impedindo o acesso a outros repositórios no registo.

Navegue até ao painel "Controle de acesso (IAM)" do registo. Clique em "Adicionar" e selecione "Adicionar atribuição de função".

Captura de ecrã a mostrar a adição de uma atribuição de função.

Selecione Container Registry Repository Reader como a função.

Captura de ecrã a mostrar a seleção de uma função a atribuir.

Continue selecionando a identidade à qual atribuir a função.

Depois, continue para a guia "Condições". Selecione o botão "Adicionar condição" para adicionar uma nova condição ABAC para restringir o escopo da atribuição de função.

Captura de tela mostrando a adição de condições para atribuição de função.

Selecione a opção de editor "Visual" no construtor de condições ABAC.

Captura de tela da seleção da opção Editor visual.

Selecione as ações (permissões) a serem concedidas nesta atribuição de função com escopo de repositório. Para a maioria dos casos de uso, selecione todas as ações (permissões) pertencentes à função selecionada anteriormente, garantindo que as identidades só possam executar essas ações dentro do escopo do repositório.

Captura de ecrã a mostrar a seleção de ações e permissões a conceder.

Adicione uma expressão para a condição ABAC para restringir a atribuição de função a um repositório específico.

Captura de tela da adição de expressão para a condição ABAC.

Configure as seguintes opções para que a expressão defina o escopo da condição ABAC para um repositório específico:

  • Origem do atributo: Request
  • Atributo: Repository name
  • Operador: StringEqualsIgnoreCase
  • Valor: <repository-name> - o nome completo do repositório.
    • Por exemplo, se o nome completo do repositório for nginx, digite nginx.
    • Se o nome completo do repositório for backend/nginx, digite backend/nginx.

Captura de tela da configuração da expressão para definir o escopo da condição ABAC para um repositório específico.

Clique em "Guardar" para guardar a condição ABAC.

Analise a condição ABAC de atribuição de função. A página de revisão inclui uma expressão de código da condição ABAC, que pode ser usada para executar a mesma atribuição de função com a mesma condição ABAC usando a CLI do Azure.

Captura de tela da revisão da condição ABAC para o escopo de um repositório específico.

Realize a atribuição de função clicando em "Rever e atribuir".

Depois que a atribuição de função for criada, você poderá exibir, editar ou excluir a atribuição de função. Navegue até "Controle de acesso (IAM)" do Registro e selecione a guia "Atribuições de função" para exibir a lista de atribuições de função existentes que se aplicam ao Registro.

Atribuição de função de escopo a vários repositórios usando prefixo de repositório (curinga)

Neste exemplo, atribuímos a função Container Registry Repository Reader para permitir permissões de pull para vários repositórios com um prefixo comum (wildcard). Ao adicionar condições ABAC, essa atribuição de função permite que a identidade extraia imagens, exiba tags e leia metadados somente dos repositórios com um prefixo comum, impedindo o acesso a outros repositórios no Registro.

Se você seguiu o exemplo anterior para atribuir a Container Registry Repository Reader função a um repositório específico, deverá excluir essa atribuição de função (navegando até a folha "Controle de acesso (IAM)" e selecionando a guia "Atribuições de função"), antes de criar uma nova com uma condição ABAC com escopo para um prefixo de repositório.

Siga as mesmas etapas do exemplo anterior para executar uma atribuição de função com condições ABAC.

Na etapa para adicionar uma expressão para a condição ABAC, configure uma expressão para uma condição ABAC para definir o escopo da atribuição de função a vários repositórios com um prefixo comum (curinga). Configure as opções que se seguem:

  • Origem do atributo: Request
  • Atributo: Repository name
  • Operador: StringStartsWithIgnoreCase
  • Valor: <repository-prefix> - o prefixo dos repositórios, incluindo a barra final /.
    • Por exemplo, para conceder permissões a todos os repositórios com o prefixo backend/, como backend/nginx e backend/redis, digite backend/.
    • Para conceder permissões a todos os repositórios com o prefixo frontend/js/, como frontend/js/react e frontend/js/vue, digite frontend/js/.

Importante

A barra / à direita é necessária no campo Value para a expressão da condição ABAC. Se você não incluir a barra /à direita, poderá conceder permissões involuntariamente a outros repositórios que não correspondam ao prefixo. Por exemplo, se você entrar backend sem a barra /à direita, a atribuição de função concederá permissões a todos os repositórios com o prefixo backend, como backend/nginx, backend/redis, backend-infra/k8s, backend-backup/store, backende backendsvc/containers.

Captura de tela da configuração da expressão para definir o escopo da condição ABAC para um prefixo de repositório.

Clique em "Guardar" para guardar a condição ABAC.

Analise a condição ABAC de atribuição de função. A página de revisão inclui uma expressão de código da condição ABAC, que pode ser usada para executar a mesma atribuição de função com a mesma condição ABAC usando a CLI do Azure.

Captura de tela da revisão da condição da ABAC para definir o escopo de um prefixo de repositório.

Realize a atribuição de função clicando em "Rever e atribuir".

Depois que a atribuição de função for criada, você poderá exibir, editar ou excluir a atribuição de função. Navegue até "Controle de acesso (IAM)" do Registro e selecione a guia "Atribuições de função" para exibir a lista de atribuições de função existentes que se aplicam ao Registro.

Atribuir funções de escopo a múltiplos repositórios usando vários prefixos de repositório (diferentes curingas)

Neste exemplo, atribuímos a Container Registry Repository Reader função para conceder permissões pull a vários repositórios sob dois prefixos diferentes (vários curingas). Ao adicionar condições ABAC, essa atribuição de função permite que a identidade extraia imagens, visualize etiquetas e leia metadados somente do repositório especificado, impedindo o acesso a outros repositórios no registo.

Se você seguiu o exemplo anterior para atribuir a Container Registry Repository Reader função a um repositório específico, deverá excluir essa atribuição de função (navegando até a folha "Controle de acesso (IAM)" e selecionando a guia "Atribuições de função"), antes de criar uma nova com uma condição ABAC com escopo para um prefixo de repositório.

Siga as mesmas etapas do exemplo anterior para executar uma atribuição de função com condições ABAC.

Na fase de adicionar uma expressão para a condição ABAC, configure duas expressões para delimitar a atribuição de funções a vários repositórios usando dois prefixos: backend/ e frontend/js/ (com múltiplos curingas).

Para a primeira expressão, configure as seguintes opções:

  • Origem do atributo: Request
  • Atributo: Repository name
  • Operador: StringStartsWithIgnoreCase
  • Valor: <repository-prefix> - o prefixo dos repositórios, incluindo a barra final /.
    • Por exemplo, para conceder permissões a todos os repositórios com o prefixo backend/, como backend/nginx e backend/redis, digite backend/.
    • Para conceder permissões a todos os repositórios com o prefixo frontend/js/, como frontend/js/react e frontend/js/vue, digite frontend/js/.

Clique em "Adicionar expressão". Verifique se o operador booleano está definido como "Ou". Opcionalmente, você pode selecionar "Agrupar" para agrupar expressões e controlar a ordem da avaliação. O editor visual também suporta vários operadores booleanos, incluindo "E", "Ou", agrupamento hierárquico e negação.

Para a segunda expressão, configure as seguintes opções:

  • Origem do atributo: Request
  • Atributo: Repository name
  • Operador: StringStartsWithIgnoreCase
  • Valor: <repository-prefix> - o prefixo dos repositórios, incluindo a barra final /.
    • Por exemplo, para conceder permissões a todos os repositórios com o prefixo backend/, como backend/nginx e backend/redis, digite backend/.
    • Para conceder permissões a todos os repositórios com o prefixo frontend/js/, como frontend/js/react e frontend/js/vue, digite frontend/js/.

Importante

A barra / à direita é necessária no campo Value para a expressão da condição ABAC. Se você não incluir a barra /à direita, poderá conceder permissões involuntariamente a outros repositórios que não correspondam ao prefixo. Por exemplo, se você entrar backend sem a barra /à direita, a atribuição de função concederá permissões a todos os repositórios com o prefixo backend, como backend/nginx, backend/redis, backend-infra/k8s, backend-backup/store, backende backendsvc/containers.

Captura de tela da configuração da expressão para definir o escopo da condição ABAC para vários prefixos de repositório.

Clique em "Guardar" para guardar a condição ABAC.

Analise a condição ABAC de atribuição de função. A página de revisão inclui uma expressão de código da condição ABAC, que pode ser usada para executar a mesma atribuição de função com a mesma condição ABAC usando a CLI do Azure.

Captura de ecrã da condição ABAC em revisão para abranger vários prefixos de repositório.

Realize a atribuição de função clicando em "Rever e atribuir".

Depois que a atribuição de função for criada, você poderá exibir, editar ou excluir a atribuição de função. Navegue até "Controle de acesso (IAM)" do Registro e selecione a guia "Atribuições de função" para exibir a lista de atribuições de função existentes que se aplicam ao Registro.

Número máximo de condições ABAC

O portal do Azure dá suporte a um número limitado de condições ABAC por atribuição de função.

Adicionar mais condições ABAC do que o limite do portal do Azure pode ser feito usando a CLI do Azure para criar a atribuição de função com mais condições ABAC.

Apêndice: Efeitos da habilitação do ABAC em tarefas ACR, tarefas rápidas, compilações rápidas e execuções rápidas

Efeito nas tarefas ACR

Importante

Quando um registro é configurado com "RBAC Registry + ABAC Repository Permissions", as tarefas ACR novas e existentes não têm mais acesso padrão ao plano de dados do registro de origem, incluindo suas imagens e artefatos dentro dos repositórios. Você deve anexar e definir explicitamente uma identidade que será usada por tarefas ACR existentes e novas para autenticar num registo de origem com suporte para ABAC. Depois, conceda à identidade anexada a função interna ACR apropriada para habilitar a autenticação e o acesso aos repositórios do Registro.

Anexando uma identidade a uma nova tarefa ACR para acesso ao Registro de origem

Para registros de origem habilitados para ABAC, use az acr task create com a --source-acr-auth-id flag para especificar a identidade que a tarefa usará para autenticar no registro de origem.

  • --source-acr-auth-id [system] – Anexa uma identidade gerenciada atribuída ao sistema.
  • --source-acr-auth-id $resourceId – Anexa uma identidade gerenciada atribuída pelo usuário usando seu ID de recurso.

Depois que a identidade estiver anexada, atribua-lhe uma função interna ACR (opcionalmente com condições ABAC) para conceder as permissões apropriadas.

Atualizando uma tarefa ACR existente para usar uma identidade para acesso ao Registro de origem

Para registros de origem habilitados para ABAC, use az acr task update com as mesmas --source-acr-auth-id opções para atribuir ou alterar a identidade usada pela Tarefa para autenticar no registro de origem. Tal como acontece com as novas Tarefas, faça o acompanhamento com a atribuição de função apropriada.

Removendo o acesso ao Registro de origem de uma tarefa ACR

Para impedir explicitamente que uma Tarefa ACR seja autenticada com um registro de origem habilitado para ABAC e bloquear as permissões da Tarefa para o Registro de origem, defina --source-acr-auth-id none. Isso desativa a capacidade da tarefa de executar quaisquer operações no registro de origem e no conteúdo dentro dele.

Observação

Nota: O --auth-mode marcador foi preterido para registos com ABAC ativado e deixou de ser suportado para o controlo de acesso a tarefas do ACR.

Efeito em tarefas rápidas, compilações rápidas e execuções rápidas

Importante

Quando um registro é configurado com "RBAC Registry + ABAC Repository Permissions", novas Tarefas Rápidas, como Compilações Rápidas e Execuções Rápidas , não terão mais acesso padrão ao plano de dados do Registro de origem, incluindo suas imagens e artefatos dentro de repositórios. Para Tarefas Rápidas, você deve usar a identidade do chamador para autenticar a Tarefa Rápida no registro de origem. A identidade do chamador deve ter a função interna ACR apropriada para habilitar a autenticação e o acesso aos repositórios do Registro.

Executando uma tarefa rápida com a identidade do chamador para acesso ao Registro de origem

Para registros de origem habilitados para ABAC, use az acr build ou az acr run com a --source-acr-auth-id [caller] opção de especificar a identidade do chamador como a identidade que a Tarefa Rápida usará para autenticar no registro de origem. Antes de executar a Tarefa Rápida, verifique se a identidade do chamador tem a função interna ACR apropriada para habilitar a autenticação e o acesso ao Registro de origem e seus repositórios.

Executando uma tarefa rápida sem acesso ao registro de origem

Para executar uma Tarefa Rápida sem qualquer acesso ao Registro de origem, use az acr build ou az acr run com a --source-acr-auth-id none opção. Isso desativa a capacidade da Tarefa Rápida de executar quaisquer operações no registro de origem e no conteúdo dentro dele.

Próximos passos