探讨 Azure 容器注册表角色和权限
Azure 基于角色的访问控制 (Azure RBAC) 是用于管理 Azure 资源访问权限的授权系统。
Azure 容器注册表服务支持一组内置 Azure 角色,这些角色提供访问 Azure 容器注册表所需的不同级别的权限。 Azure 基于角色的访问控制用于将特定权限分配给需要与注册表交互的用户、服务主体或其他标识。 例如,您可以分配一个用于推送或拉取容器镜像的用户角色。

角色分配过程
若要授予访问权限,请将角色分配给特定范围内的用户、组、服务主体或托管标识。 此过程有五个步骤:
确定谁需要访问权限
首先需要确定哪个用户需要访问权限。 可以将角色分配到用户、组、服务主体或托管标识。
选择适当的角色
权限被分组到一个定义角色的集合中,通常称为角色。 可以从多个内置角色的列表中选择。 如果内置角色不能满足组织的特定需求,则可自行创建自定义角色。
确定所需的范围
范围是访问权限适用于的资源集。 在 Azure 中,可在四个级别指定范围:管理组、订阅、资源组和资源。 范围采用父子关系结构。 层次结构的每个级别都会使范围更具针对性。 可以在其中任何一个范围级别分配角色。 你选择的级别将决定该角色的应用范围。 较低级别从较高级别继承角色权限。
检查你的先决条件
若要分配角色,必须使用有权写入角色分配的用户帐户登录。 例如,所有者或用户访问管理员等角色有权写入角色分配。 同样,若要删除角色分配,必须具有角色分配删除权限。
分配角色
了解安全主体、角色和范围后,便可以分配角色了。 可使用 Azure 门户、Azure PowerShell、Azure CLI、Azure SDK 或 REST API 分配角色。
区分用户和服务
每当应用权限时,最佳做法都是为需要完成某项任务的用户或服务提供一组最受限的权限。
CI/CD 解决方案
通过 CI/CD 解决方案自动执行 docker build 命令时,需要 docker push 功能。 对于这些无外设服务方案,建议分配 AcrPush 角色。 该角色与权限范围更大的“参与者”角色不同,阻止帐户执行其他注册表操作或访问 Azure 资源管理器。
容器主机节点
同样,运行容器的节点需要 AcrPull 角色,但不应该需要 Reader 功能。
Visual Studio Code Docker 扩展
对于 Visual Studio Code Docker 扩展等工具,需要额外的资源提供程序访问权限才能列出可用的 Azure 容器注册表。 在这种情况下,请为用户提供对“读者”或“参与者”角色的访问权限。 这些角色允许 docker pull、docker push、az acr list、az acr build 等功能。