Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Чтобы понять, соответствуют ли ресурсы требованиям в Azure, прежде всего нужно определить их состояние. В этом кратком руководстве описано, как создать назначение политики для выявления несоответствующих ресурсов с помощью Azure PowerShell. Политика назначается группе ресурсов и проверяет виртуальные машины, которые не используют управляемые диски. После того как вы создадите назначение политики, вы выявите несоответствующие виртуальные машины.
Модули Azure PowerShell можно использовать для управления ресурсами Azure из командной строки или скриптов. В этой статье объясняется, как использовать Azure PowerShell для создания назначения политики.
При назначении встроенной политики или определения инициативы необязательно ссылаться на версию. Назначения для предопределенных политик по умолчанию относятся к последней версии и автоматически включают изменения для незначительных версий, если не указано иное.
Предварительные требования
- Если у вас нет учетной записи Azure, создайте бесплатную учетную запись, прежде чем начинать работу.
- Azure PowerShell.
- Visual Studio Code.
-
Microsoft.PolicyInsights
необходимо зарегистрировать в подписке Azure. Чтобы зарегистрировать поставщика ресурсов, необходимо иметь разрешение на регистрацию поставщиков ресурсов. Это разрешение включено в роли участников и владельцев. - Группа ресурсов с хотя бы одной виртуальной машиной, которая не использует управляемые диски.
Подключение к Azure
Из сеанса терминала Visual Studio Code подключитесь к Azure. Если у вас несколько подписок, выполните команды, чтобы задать контекст для подписки. Замените <subscriptionID>
идентификатором своей подписки Azure.
Connect-AzAccount
# 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.
Создание назначения политики
Используйте следующие команды, чтобы создать новое назначение политики для группы ресурсов. В этом примере используется существующая группа ресурсов, содержащая виртуальную машину без управляемых дисков. Группа ресурсов — это область назначения политики. В этом примере используется встроенное определение политики Аудит ВМ, которые не используют управляемые диски.
Выполните следующие команды и замените <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
использует splatting для создания значений параметров и повышения удобочитаемости. Команда 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.
Дополнительные сведения о назначении политик, проверяющих соответствие ресурсов, см. в этом руководстве.