Azure Container Registry funções e permissões

O serviço Azure Container Registry suporta um conjunto de funções incorporadas do Azure que fornecem diferentes níveis de permissões para um registo de contentor do Azure. Utilize o controlo de acesso baseado em funções do Azure (RBAC do Azure) para atribuir permissões específicas a utilizadores, principais de serviço ou outras identidades que precisem de interagir com um registo, por exemplo, para extrair ou emitir imagens de contentor. Também pode definir funções personalizadas com permissões detalhadas para um registo para diferentes operações.

Função/Permissão Access Resource Manager Criar/eliminar registo Enviar imagem Imagem pull Eliminar dados de imagem Alterar políticas Assinar imagens
Proprietário X X X X X X
Contribuinte X X X X X X
Leitor X X
AcrPush X X
AcrPull X
AcrDelete X
AcrImageSigner X

Atribuir funções

Veja Passos para adicionar uma atribuição de função para passos de alto nível para adicionar uma atribuição de função a um utilizador, grupo, principal de serviço ou identidade gerida existente. Pode utilizar a portal do Azure, a CLI do Azure, Azure PowerShell ou outras ferramentas do Azure.

Ao criar um principal de serviço, também configura o respetivo acesso e permissões para recursos do Azure, como um registo de contentor. Para obter um script de exemplo com a CLI do Azure, veja Azure Container Registry autenticação com principais de serviço.

Diferenciar utilizadores e serviços

Sempre que forem aplicadas permissões, a melhor prática é fornecer o conjunto de permissões mais limitado para uma pessoa, ou serviço, para realizar uma tarefa. Os seguintes conjuntos de permissões representam um conjunto de capacidades que podem ser utilizadas por humanos e serviços sem cabeça.

Soluções CI/CD

Ao automatizar docker build comandos de soluções CI/CD, precisa de docker push capacidades. Para estes cenários de serviço sem cabeça, recomendamos que atribua a função AcrPush . Esta função, ao contrário da função contribuidor mais ampla, impede que a conta realize outras operações de registo ou aceda ao Azure Resource Manager.

Nós de anfitrião de contentores

Da mesma forma, os nós que executam os contentores precisam da função AcrPull , mas não devem exigir capacidades de Leitor .

Extensão do Docker do Visual Studio Code

Para ferramentas como a extensão do Docker do Visual Studio Code, é necessário acesso adicional ao fornecedor de recursos para listar os registos de contentores do Azure disponíveis. Neste caso, forneça aos seus utilizadores acesso à função Leitor ou Contribuidor . Estas funções permitem docker pull, docker push, az acr list, az acr builde outras capacidades.

Access Resource Manager

O acesso Resource Manager do Azure é necessário para a gestão de registos e portal do Azure com a CLI do Azure. Por exemplo, para obter uma lista de registos com o az acr list comando, precisa deste conjunto de permissões.

Criar e eliminar o registo

A capacidade de criar e eliminar registos de contentores do Azure.

Enviar imagem

A capacidade de docker push uma imagem ou enviar outro artefacto suportado , como um gráfico Helm, para um registo. Requer autenticação com o registo com a identidade autorizada.

Imagem pull

A capacidade de docker pull uma imagem não colocada em quarentena ou de extrair outro artefacto suportado , como um gráfico Helm, de um registo. Requer autenticação com o registo com a identidade autorizada.

Eliminar dados de imagem

A capacidade de eliminar imagens de contentor ou eliminar outros artefactos suportados, como gráficos Helm, de um registo.

Alterar políticas

A capacidade de configurar políticas num registo. As políticas incluem a remoção de imagens, a ativação da quarentena e a assinatura de imagens.

Assinar imagens

A capacidade de assinar imagens, normalmente atribuídas a um processo automatizado, que utilizaria um principal de serviço. Normalmente, esta permissão é combinada com a imagem push para permitir enviar uma imagem fidedigna para um registo. Para obter detalhes, veja Confiança do conteúdo no Azure Container Registry.

Funções personalizadas

Tal como acontece com outros recursos do Azure, pode criar funções personalizadas com permissões detalhadas para Azure Container Registry. Em seguida, atribua as funções personalizadas a utilizadores, principais de serviço ou outras identidades que precisem de interagir com um registo.

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

az provider operation show --namespace Microsoft.ContainerRegistry

Para definir uma função personalizada, veja Passos para criar uma função personalizada.

Nota

Nos inquilinos configurados com o Azure Resource Manager ligação privada, Azure Container Registry suporta ações universais, como Microsoft.ContainerRegistry/*/read ou Microsoft.ContainerRegistry/registries/*/write em funções personalizadas, concedendo acesso a todas as ações correspondentes. Num inquilino sem uma ligação privada arm, especifique todas as ações de registo necessárias individualmente numa função personalizada.

Exemplo: Função personalizada para importar imagens

Por exemplo, o JSON seguinte define as ações mínimas para uma função personalizada que permite importar imagens para um registo.

{
   "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 com a descrição JSON, utilize a CLI do Azure, o modelo de Resource Manager do Azure, Azure PowerShell ou outras ferramentas do Azure. Adicione ou remova atribuições de funções para uma função personalizada da mesma forma que gere atribuições de funções para funções incorporadas do Azure.

Passos seguintes