快速入门:使用 Azure CLI 创建策略分配以识别不合规的资源
若要了解 Azure 中的符合性,第一步是确定资源的状态。 本快速入门介绍如何使用 Azure CLI 创建策略分配以识别不合规的资源。 策略分配给资源组,并对不使用托管磁盘的虚拟机进行审核。 创建策略分配后,可以识别不合规的虚拟机。
Azure CLI 用于从命令行或脚本创建和管理 Azure 资源。 本指南使用 Azure CLI 创建策略分配,并识别 Azure 环境中的不合规资源。
先决条件
- 如果没有 Azure 帐户,请在开始前创建一个试用帐户。
- Azure CLI。
- Visual Studio Code。
- 必须在 Azure 订阅中重新注册
Microsoft.PolicyInsights
。 要注册资源提供程序,必须具有注册资源提供程序的权限。 此权限包含在“参与者”和“所有者”角色中。 - 具有至少一个不使用托管磁盘的虚拟机的资源组。
连接到 Azure
从 Visual Studio Code 终端会话连接到 Azure。 如果具有多个订阅,请运行命令以将上下文设置为你的订阅。 将 <subscriptionID>
替换为你的 Azure 订阅 ID。
az login
# Run these commands if you have multiple subscriptions
az account list --output table
az account set --subscription <subscriptionID>
注册资源提供程序
注册资源提供程序后,可在 Azure 订阅中使用。
若要验证是否已注册 Microsoft.PolicyInsights
,请运行 Get-AzResourceProvider
。 资源提供程序包含多个资源类型。 如果结果为 NotRegistered
,则运行 Register-AzResourceProvider
:
az provider show \
--namespace Microsoft.PolicyInsights \
--query "{Provider:namespace,State:registrationState}" \
--output table
az provider register --namespace Microsoft.PolicyInsights
Azure CLI 命令使用反斜杠 (\
) 进行行接续以提高可读性。 有关详细信息,请转到 az provider。
创建策略分配
运行以下命令,为资源组创建新的策略分配。 此示例使用的现有资源组包含不带托管磁盘的虚拟机。 该资源组属于策略分配范围。 本示例使用内置策略定义“审核不使用托管磁盘的 VM”。
运行以下命令并将 <resourceGroupName>
替换为资源组名称:
rgid=$(az group show --resource-group <resourceGroupName> --query id --output tsv)
definition=$(az policy definition list \
--query "[?displayName=='Audit VMs that do not use managed disks']".name \
--output tsv)
rgid
变量存储资源组 ID。 definition
变量存储策略定义的名称,即 GUID。
运行以下命令创建策略分配:
az policy assignment create \
--name 'audit-vm-managed-disks' \
--display-name 'Audit VM managed disks' \
--scope $rgid \
--policy $definition \
--description 'Azure CLI policy assignment to resource group'
name
创建分配的ResourceId
中使用的策略分配名称。display-name
是策略分配的名称,在 Azure 门户中可见。scope
使用$rgid
变量将策略分配给资源组。policy
分配存储在$definition
变量中的策略定义。description
可用于添加有关策略分配的上下文。
策略分配的结果类似于以下示例:
"description": "Azure CLI policy assignment to resource group",
"displayName": "Audit VM managed disks",
"enforcementMode": "Default",
"id": "/subscriptions/{subscriptionID}/resourceGroups/{resourceGroupName}/providers/Microsoft.Authorization/policyAssignments/audit-vm-managed-disks",
"identity": null,
"location": null,
"metadata": {
"createdBy": "11111111-1111-1111-1111-111111111111",
"createdOn": "2024-02-23T18:42:27.4780803Z",
"updatedBy": null,
"updatedOn": null
},
"name": "audit-vm-managed-disks",
若要重新显示策略分配信息,请运行以下命令:
az policy assignment show --name "audit-vm-managed-disks" --scope $rgid
有关详细信息,请转到 az policy assignment。
识别不合规的资源
新策略分配的“符合性状态”需要几分钟才会变为活动状态并提供关于策略状态的结果。
使用以下命令来识别不符合所创建的策略分配的资源:
policyid=$(az policy assignment show \
--name "audit-vm-managed-disks" \
--scope $rgid \
--query id \
--output tsv)
az policy state list --resource $policyid --filter "(isCompliant eq false)"
policyid
变量使用表达式获取策略分配的 ID。 filter
参数将向不合规资源限制输出。
az policy state list
输出很详尽,但在本文中 complianceState
显示 NonCompliant
:
"complianceState": "NonCompliant",
"components": null,
"effectiveParameters": "",
"isCompliant": false,
有关详细信息,请转到 az policy state。
清理资源
运行以下命令删除策略分配。
az policy assignment delete --name "audit-vm-managed-disks" --scope $rgid
若要退出登录 Azure CLI 会话,请执行以下操作:
az logout
后续步骤
本快速入门已分配一个策略定义用于识别 Azure 环境中的不合规资源。
若要详细了解如何分配验证资源合规性的策略,请继续学习以下教程。