Azure 容器注册表(ACR)支持 Azure 基于角色的访问控制(RBAC) 来管理对注册表的访问。 如果任何 Azure 容器注册表内置角色 都不符合你的需求,则可以使用根据方案定制的精细权限创建自定义角色。 本文介绍为 Azure 容器注册表定义、创建和分配自定义角色的步骤。
自定义角色权限
一组权限(操作和数据操作)定义了一个自定义角色。 自定义角色中定义的权限决定了用户可以对注册表资源执行的操作。
若要确定应在自定义角色中定义哪些权限(操作和数据操作),可以:
- 查看 用于容器的 Azure 内置角色目录 的 JSON 定义,其中包括 ACR 内置角色中使用的常用权限(操作和数据操作)。
- 查看
Microsoft.ContainerRegistry
资源提供程序权限的完整列表(Azure 容器注册表对操作和数据操作的参考)
若要以编程方式列出 Microsoft.ContainerRegistry
资源提供程序的所有可用权限(操作和数据操作),可以使用以下 Azure CLI 或 Azure PowerShell 命令。
az provider operation show --namespace Microsoft.ContainerRegistry
Get-AzProviderOperation -OperationSearchString Microsoft.ContainerRegistry/*
示例:用于管理 Webhook 的自定义角色
例如,以下 JSON 定义了一个自定义角色的最小权限(操作和数据操作),以允许管理 ACR 的 Webhook。
{
"assignableScopes": [
"/subscriptions/<optional, but you can limit the visibility to one or more subscriptions>"
],
"description": "Manage Azure Container Registry webhooks.",
"Name": "Container Registry Webhook Contributor",
"permissions": [
{
"actions": [
"Microsoft.ContainerRegistry/registries/webhooks/read",
"Microsoft.ContainerRegistry/registries/webhooks/write",
"Microsoft.ContainerRegistry/registries/webhooks/delete"
],
"dataActions": [],
"notActions": [],
"notDataActions": []
}
],
"roleType": "CustomRole"
}
创建或更新自定义角色
若要使用 JSON 定义定义自定义角色,请参阅 创建自定义角色的步骤。 可以使用 Azure CLI、 Azure 资源管理器模板或 Azure PowerShell 创建自定义角色。
注释
在使用 Azure 资源管理器专用链接配置的租户中,Azure 容器注册表支持在自定义角色中使用通配符操作(如 Microsoft.ContainerRegistry/*/read
或 Microsoft.ContainerRegistry/registries/*/write
),从而授予对所有匹配操作的访问权限。
在无 ARM 专用链接的租户中,请勿使用通配符,并在自定义角色中单独指定所有必需的注册表操作。
分配自定义角色
添加或删除自定义角色的角色分配的方式与管理内置角色的角色分配的方式相同。 详细了解如何通过 Azure 门户、Azure CLI、Azure PowerShell 或其他 Azure 工具将 Azure 角色分配给 Azure 标识。
后续步骤
- 有关这些内置角色的高级概述(包括受支持的角色分配标识类型、执行角色分配的步骤以及常见方案的建议角色),请参阅 Azure 容器注册表 RBAC 内置角色。
- 若要使用可选的Microsoft Entra ABAC 条件执行角色分配,以将角色分配限定为特定存储库,请参阅 Microsoft基于 Entra 的存储库权限。
- 有关每个 ACR 内置角色(包括每个角色授予的权限)的详细参考,请参阅 Azure 容器注册表角色目录参考。