Compartilhar via

使用 Azure Policy 审核Azure容器注册表的符合性

Azure Policy是用于创建、分配和管理策略定义的Azure中的服务。 这些策略定义将在整个资源中强制实施不同的规则和效果,以便这些资源符合公司标准和服务级别协议。

本文介绍如何使用 Azure Policy 的 Azure Container Registry 内置策略定义 来审核合规性。 可以使用这些定义来审核新的和现有的注册表的合规性。

使用Azure Policy是免费的。

创建容器注册表策略分配

使用 Azure 门户Azure CLIResource Manager模板或Azure Policy SDK 创建策略分配。 可以随时启用或禁用策略实施功能。

可以将策略分配限定为资源组、订阅或 Azure 管理组。 容器注册表策略分配适用于该作用域内现有的和新的容器注册表。

注意

在创建或更新某个策略分配后,需要花费一些时间,该分配才会评估定义范围中的资源。 有关详细信息,请参阅 策略评估触发器

查看容器注册表策略符合性

使用Azure门户、Azure命令行工具或Azure Policy SDK 访问策略分配生成的符合性信息。 有关详细信息,请参阅 获取Azure资源的符合性数据

导致资源不合规的原因可能有很多。 若要确定原因或查找导致问题的变更,请参阅确定不合规情况

在 Azure 门户中查看策略符合性

  1. 在 Azure 门户中,搜索 Policy

  2. 选择“合规性”。

  3. 使用筛选器限制符合性状态或搜索策略

  4. 选择一个策略来查看聚合合规性详细信息和事件。 然后,根据需要选择一个适用于资源合规性的特定注册表。

使用Azure CLI查看策略符合性

还可以使用Azure CLI来获取符合性数据。 例如,使用 CLI 中的 az 策略分配列表命令获取应用的Azure Container Registry策略的策略 ID:

az policy assignment list --query "[?contains(displayName,'Container Registries')].{name:displayName, ID:id}" --output table

示例输出:

Name                                                                                   ID
------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------------------------------------
Container Registries should not allow unrestricted network access           /subscriptions/<subscriptionID>/providers/Microsoft.Authorization/policyAssignments/b4faf132dc344b84ba68a441
Container Registries should be encrypted with a Customer-Managed Key (CMK)  /subscriptions/<subscriptionID>/providers/Microsoft.Authorization/policyAssignments/cce1ed4f38a147ad994ab60a

运行 az policy state list ,以返回特定策略 ID 下所有资源的 JSON 格式符合性状态:

az policy state list \
  --resource <policyID>

也可运行 az policy state list,以便返回特定注册表资源(例如 myregistry)的 JSON 格式合规性状态:

az policy state list \
 --resource myregistry \
 --namespace Microsoft.ContainerRegistry \
 --resource-type registries \
 --resource-group myresourcegroup

后续步骤