Funções e permissões do Registro de Contêiner do Azure

O serviço de Registro de Contêiner do Azure dá suporte a um conjunto de funções internas do Azure que fornecem níveis diferentes de permissões para um registro de contêiner do Azure. Use o RBAC do Azure (controle de acesso baseado em função do Azure) para atribuir permissões específicas a usuários, entidades de serviço ou outras identidades que precisam interagir com um registro, por exemplo, para efetuar pull ou enviar por push imagens de contêiner. Você também pode definir funções personalizadas com permissões refinadas para um registro para operações diferentes.

Função/permissão Acessar o Resource Manager Criar/excluir registro Enviar uma imagem por push Pull de imagem Excluir dados de imagem Alterar políticas Imagens de entrada
Proprietário X X X X X X
Colaborador X X X X X X
Leitor X X
AcrPush X X
AcrPull X
AcrDelete X
AcrImageSigner X

Atribuir funções

Confira Etapas para adicionar uma atribuição de função para etapas de alto nível para adicionar uma atribuição de função a um usuário, grupo, entidade de serviço ou identidade gerenciada. Você pode usar o portal do Azure, a CLI do Azure, Azure PowerShell ou outras ferramentas do Azure.

Ao criar uma entidade de serviço, você também configura seu acesso e as permissões para recursos do Azure, como um registro de contêiner. Para obter um exemplo de script usando a CLI do Azure, confira Autenticação do Registro de Contêiner do Azure com entidades de serviço.

Diferenciar usuários e serviços

Qualquer permissão de tempo é aplicada, uma prática recomendada é fornecer o conjunto mais limitado de permissões para uma pessoa ou serviço realizar uma tarefa. Os conjuntos de permissões a seguir representam um conjunto de recursos que podem ser usados por seres humanos e serviços sem periféricos.

Soluções CI/CD

Ao automatizar docker build comandos de soluções CI/CD, você precisa de docker push recursos. Para esses cenários de serviço sem periféricos, recomendamos atribuir a função AcrPush. Essa função, ao contrário da função mais ampla Colaborador, impede que a conta execute utras operações de registro ou acesse o Azure Resource Manager.

Nós de host do contêiner

Da mesma forma, nós que executam seus contêineres precisam da função AcrPull, mas não devem exibir os recursos de Leitor.

Extensão do Visual Studio Code Docker

Para ferramentas como o Visual Studio Code extensão Docker, é necessário acesso de provedor de recursos adicionais para listar os registros de contêiner do Azure disponíveis. Nesse caso, forneça aos usuários acesso para a função de Leitor ou Colaborador. Essas funções permitem docker pull, docker push, az acr list, az acr builde outros recursos.

Acessar o Resource Manager

O Acesso ao Azure Resource Manager é necessário para o portal do Azure e o gerenciamento de registro com o CLI do Azure. Por exemplo, para obter uma lista de registros usando o az acr list comando, você precisa dessa permissão definida.

Criar e excluir registros

A capacidade de criar e excluir registros de contêiner do Azure.

Enviar uma imagem por push

A capacidade de docker push uma imagem, ou enviar por push outro artefato com suporte para um registro, como um gráfico do Helm. Requer autenticação com o registro usando a identidade autorizada.

Pull de imagem

A capacidade de docker pull uma imagem de não quarentena, ou de enviar por push outro artefato com suporte de um registro, como um gráfico do Helm. Requer autenticação com o registro usando a identidade autorizada.

Excluir dados de imagem

A capacidade de excluir imagens de contêiner ou excluir outros artefatos com suporte, como gráficos do Helm, de um registro.

Alterar políticas

A capacidade de configurar políticas em um registro. Políticas incluem a limpeza de imagem, habilitando a quarentena e assinatura de imagem.

Imagens de entrada

A capacidade de imagens de entrada normalmente é atribuída a um processo automatizado, que usaria uma entidade de serviço. Normalmente, essa permissão é combinada com imagem por push para permitir o envio de uma imagem confiável para um registro. Para obter detalhes, consulte Confiança de conteúdo no Registro de Contêiner do Azure.

Funções personalizadas

Assim como acontece com outros recursos do Azure, você pode criar funções personalizadas com permissões refinadas para o Registro de Contêiner do Azure. Em seguida, atribua as funções personalizadas a usuários, entidades de serviço ou outras identidades que precisam interagir com um registro.

Para determinar quais permissões aplicar a uma função personalizada, confira a lista de ações do Microsoft.ContainerRegistry, examine as ações permitidas das funções de ACR internas ou execute o seguinte comando:

az provider operation show --namespace Microsoft.ContainerRegistry

Para definir uma função personalizada, confira Etapas para criar uma função personalizada.

Observação

Em locatários configurados com o link privado do Azure Resource Manager, o Registro de Contêiner do Azure dá suporte a ações curinga, como Microsoft.ContainerRegistry/*/read ou Microsoft.ContainerRegistry/registries/*/write, em funções personalizadas a fim de conceder acesso a todas as ações correspondentes. Em um locatário sem um link privado do ARM, especifique todas as ações de registro necessárias individualmente em uma função personalizada.

Exemplo: função personalizada para importar imagens

Por exemplo, o JSON a seguir define as ações mínimas para uma função personalizada que permite a importação de imagens para um Registro.

{
   "assignableScopes": [
     "/subscriptions/<optional, but you can limit the visibility to one or more subscriptions>"
   ],
   "description": "Can import images to registry",
   "Name": "AcrImport",
   "permissions": [
     {
       "actions": [
         "Microsoft.ContainerRegistry/registries/push/write",
         "Microsoft.ContainerRegistry/registries/pull/read",
         "Microsoft.ContainerRegistry/registries/read",
         "Microsoft.ContainerRegistry/registries/importImage/action"
       ],
       "dataActions": [],
       "notActions": [],
       "notDataActions": []
     }
   ],
   "roleType": "CustomRole"
 }

Para criar ou atualizar uma função personalizada usando a descrição JSON, use a CLI do Azure, o modelo do Azure Resource Manager, o Azure PowerShell ou outras ferramentas do Azure. Adicione ou remova atribuições de função para uma função personalizada da mesma forma como você gerencia atribuições de função para funções internas do Azure.

Próximas etapas