为 Microsoft Entra 令牌禁用 ARM 方式的身份验证

当注册表用户通过 Azure 容器注册表(ACR)进行身份验证时,将使用Microsoft Entra 令牌。 默认情况下,Azure 容器注册表(ACR)接受Microsoft Entra 令牌,其受众范围设置为 Azure 资源管理器(ARM),这是用于管理 Azure 资源的控制平面管理层。

通过将注册表配置为不识别 Microsoft Entra ARM 受众令牌且仅识别 Microsoft Entra ACR 受众令牌,可以在身份验证过程中通过缩小所接受令牌的范围来增强容器注册表的安全性。

在实施 ACR 受众令牌的强制策略后,只有设置了 ACR 受众范围的 Microsoft Entra 令牌才会在注册表身份验证和登录过程中被接受。 这意味着以前接受的 ARM 受众令牌已失效,无法用于注册表身份验证,从而增强容器注册表的安全性。

本教程介绍如何执行下列操作:

  • 在 ACR 中禁用 authentication-as-arm - Azure CLI。
  • 在 ACR 中禁用 authentication-as-arm - Azure 门户。

先决条件

在 ACR 中禁用 authentication-as-arm - Azure CLI

禁用 azureADAuthenticationAsArmPolicy 将强制注册表使用 ACR 受众令牌。 可使用 Azure CLI 版本 2.40.0 或更高版本,运行 az --version 以查找版本。

  1. 运行以下命令可显示注册表策略的当前配置,以便通过注册表使用 ARM 令牌进行身份验证。 如果状态为 enabled,则 ACR 和 ARM 受众令牌都可用于身份验证。 如果状态为 disabled,则意味着仅 ACR 的受众令牌可用于身份验证。

    az acr config authentication-as-arm show -r <registry>
    
  2. 运行以下命令以更新注册表策略的状态。

    az acr config authentication-as-arm update -r <registry> --status [enabled/disabled]
    

使用 Microsoft Entra ACR 受众令牌进行身份验证

可以使用 Microsoft Entra ACR 受众令牌通过 ACR 进行身份验证。 若要获取Microsoft Entra ACR 访问群体令牌,请在运行--scope https://containerregistry.chinacloudapi.cn/.default命令时指定az login

备注

必须指定 https://containerregistry.chinacloudapi.cn/.default 才能获取限定为 ACR 服务范围的 Microsoft Entra ACR 受众令牌。 不能指定 https://registryname.azurecr.cn/ 为范围,因为Microsoft Entra 和 ACR 都不支持特定于注册表的令牌访问群体。

az cloud set -n AzureChinaCloud
az login --scope https://containerregistry.chinacloudapi.cn/.default
# az cloud set -n AzureCloud   //means return to Public Azure.

登录之后,Microsoft Entra ACR Audience 令牌(专用于 ACR 服务)将被存储在本地缓存中。 可以使用此令牌对你有权访问的所有 ACR 注册表进行身份验证。

az acr login -n <registry>

在 ACR 中禁用 authentication-as-arm - Azure 门户

通过分配内置策略禁用 authentication-as-arm 属性将自动禁用当前注册表和将来的注册表属性。 此自动行为适用于在策略范围内创建的注册表。 可能的策略范围包括资源组级别范围或租户中的订阅 ID 级别范围。

可以通过以下步骤在 ACR 中禁用 authentication-as-arm:

  1. 登录 Azure 门户

  2. 请参阅 azure-container-registry-built-in-policy 定义中的 ACR 内置策略定义。

  3. 分配内置策略以禁用 authentication-as-arm 定义 - Azure 门户。

分配内置策略定义以禁用 ARM 受众令牌身份验证 - Azure 门户。

可以在 Azure 门户中启用注册表的条件访问策略。

Azure 容器注册表有两个内置策略定义可用于禁用 authentication-as-arm,如下所示:

  • Container registries should have ARM audience token authentication disabled. - 此策略将报告、阻止任何不合规的资源,并发送将不合规资源更新为合规资源的请求。

  • Configure container registries to disable ARM audience token authentication. - 此策略提供修正,并将不合规资源更新为合规资源。

    1. 登录 Azure 门户

    2. 导航到“Azure 容器注册表”“资源组”>“设置”“策略”。

      显示如何导航到 Azure 策略的屏幕截图。

    3. 导航到 Azure Policy,在“分配”上,选择“分配策略”。

      显示如何分配策略的屏幕截图。

    4. 在“分配策略”下,使用筛选器搜索和查找“范围”、“策略定义”、“分配名称”。

      “分配策略”选项卡的屏幕截图。

    5. 选择“范围”以筛选并搜索“订阅”和“资源组”,然后选择“选择”。

      “范围”选项卡的屏幕截图。

    6. 选择“策略定义”,筛选并搜索条件访问策略的内置策略定义。

      内置策略定义的屏幕截图。

    7. 使用筛选器选择并确认“范围”、“策略定义”和“分配名称”。

    8. 将筛选器用于限制合规性状态,或用于搜索策略。

    9. 确认设置,并将“强制实施策略”设置为“启用”。

    10. 选择“查看 + 创建”。

      激活条件访问策略的屏幕截图。

后续步骤