Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
若要了解 Azure 中的符合性,第一步是确定资源的状态。 本快速入门介绍如何使用 Azure PowerShell 创建策略分配以识别不合规的资源。 策略分配给资源组,并对不使用托管磁盘的虚拟机进行审核。 创建策略分配后,可以识别不合规的虚拟机。
Azure PowerShell 模块可用于从命令行或通过脚本管理 Azure 资源。 本文介绍如何使用 Azure PowerShell 来创建策略分配。
先决条件
- 如果没有 Azure 帐户,请创建一个试用版帐户
- Azure PowerShell。
- Visual Studio Code。
- 必须在 Azure 订阅中重新注册
Microsoft.PolicyInsights。 要注册资源提供程序,必须具有注册资源提供程序的权限。 此权限包含在“参与者”和“所有者”角色中。 - 具有至少一个不使用托管磁盘的虚拟机的资源组。
连接到 Azure
从 Visual Studio Code 终端会话连接到 Azure。 如果具有多个订阅,请运行命令以将上下文设置为你的订阅。 将 <subscriptionID> 替换为你的 Azure 订阅 ID。
Connect-AzAccount -Environment AzureChinaCloud
# Run these commands if you have multiple subscriptions
Get-AzSubScription
Set-AzContext -Subscription <subscriptionID>
注册资源提供程序
注册资源提供程序后,可在 Azure 订阅中使用。
若要验证是否已注册 Microsoft.PolicyInsights,请运行 Get-AzResourceProvider。 资源提供程序包含多个资源类型。 如果结果为 NotRegistered,则运行 Register-AzResourceProvider:
Get-AzResourceProvider -ProviderNamespace 'Microsoft.PolicyInsights' |
Select-Object -Property ResourceTypes, RegistrationState
Register-AzResourceProvider -ProviderNamespace 'Microsoft.PolicyInsights'
有关详细信息,请转到 Get-AzResourceProvider 和 Register-AzResourceProvider。
创建策略分配
运行以下命令,为资源组创建新的策略分配。 此示例使用的现有资源组包含不带托管磁盘的虚拟机。 该资源组属于策略分配范围。 本示例使用内置策略定义“审核不使用托管磁盘的 VM”。
运行以下命令并将 <resourceGroupName> 替换为资源组名称:
$rg = Get-AzResourceGroup -Name '<resourceGroupName>'
$definition = Get-AzPolicyDefinition |
Where-Object { $_.DisplayName -eq 'Audit VMs that do not use managed disks' }
$rg 变量存储资源组的属性,$definition 变量存储策略定义的属性。 后续命令中会用到这些属性。
运行以下命令创建策略分配:
$policyparms = @{
Name = 'audit-vm-managed-disks'
DisplayName = 'Audit VM managed disks'
Scope = $rg.ResourceId
PolicyDefinition = $definition
Description = 'Az PowerShell policy assignment to resource group'
}
New-AzPolicyAssignment @policyparms
$policyparms 变量使用散点来创建参数值并提高可读性。 New-AzPolicyAssignment 命令使用 $policyparms 变量中定义的参数值。
Name创建分配的ResourceId中使用的策略分配名称。DisplayName是策略分配的名称,在 Azure 门户中可见。Scope使用$rg.ResourceId属性将策略分配给资源组。PolicyDefinition分配存储在$definition变量中的策略定义。Description可用于添加有关策略分配的上下文。
策略分配的结果类似于以下示例:
Name : audit-vm-managed-disks
ResourceId : /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Authorization/policyAssignments/audit-vm-managed-disks
ResourceName : audit-vm-managed-disks
ResourceGroupName : {resourceGroupName}
ResourceType : Microsoft.Authorization/policyAssignments
SubscriptionId : {subscriptionId}
PolicyAssignmentId : /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Authorization/policyAssignments/audit-vm-managed-disks
Properties : Microsoft.Azure.Commands.ResourceManager.Cmdlets.Implementation.Policy.PsPolicyAssignmentProperties
有关详细信息,请转到 New-AzPolicyAssignment。
若要重新显示策略分配信息,请运行以下命令:
Get-AzPolicyAssignment -Name 'audit-vm-managed-disks' -Scope $rg.ResourceId
识别不合规的资源
新策略分配的“符合性状态”需要几分钟才会变为活动状态并提供关于策略状态的结果。
使用以下命令来识别不符合所创建的策略分配的资源:
$complianceparms = @{
ResourceGroupName = $rg.ResourceGroupName
PolicyAssignmentName = 'audit-vm-managed-disks'
Filter = 'IsCompliant eq false'
}
Get-AzPolicyState @complianceparms
$complianceparms 变量使用散点来创建在 Get-AzPolicyState 命令中使用的参数值。
ResourceGroupName从$rg.ResourceGroupName属性获取资源组名称。PolicyAssignmentName指定创建策略分配时使用的名称。Filter使用表达式查找不符合策略分配的资源。
结果应如以下示例所示并且 ComplianceState 将显示 NonCompliant:
Timestamp : 2/14/2024 18:25:37
ResourceId : /subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/microsoft.compute/virtualmachines/{vmId}
PolicyAssignmentId : /subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/microsoft.authorization/policyassignments/audit-vm-managed-disks
PolicyDefinitionId : /providers/microsoft.authorization/policydefinitions/06a78e20-9358-41c9-923c-fb736d382a4d
IsCompliant : False
SubscriptionId : {subscriptionId}
ResourceType : Microsoft.Compute/virtualMachines
ResourceLocation : {location}
ResourceGroup : {resourceGroupName}
ResourceTags : tbd
PolicyAssignmentName : audit-vm-managed-disks
PolicyAssignmentOwner : tbd
PolicyAssignmentScope : /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}
PolicyDefinitionName : 06a78e20-9358-41c9-923c-fb736d382a4d
PolicyDefinitionAction : audit
PolicyDefinitionCategory : tbd
ManagementGroupIds : {managementGroupId}
ComplianceState : NonCompliant
AdditionalProperties : {[complianceReasonCode, ]}
有关详细信息,请转到 Get-AzPolicyState
清理资源
运行以下命令删除策略分配。
Remove-AzPolicyAssignment -Name 'audit-vm-managed-disks' -Scope $rg.ResourceId
若要退出登录 Azure PowerShell 会话,请执行以下操作:
Disconnect-AzAccount
后续步骤
本快速入门已分配一个策略定义用于识别 Azure 环境中的不合规资源。
若要详细了解如何分配验证资源合规性的策略,请继续学习以下教程。