Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом кратком руководстве вы используете шаблон Azure Resource Manager (шаблон ARM), чтобы создать назначение политики, которое проверяет соответствие ресурсов политике Azure. Политика назначается группе ресурсов и проверяет виртуальные машины, которые не используют управляемые диски. После того, как вы создадите назначение политики, вы обнаружите несоответствующие виртуальные машины.
Шаблон Azure Resource Manager — это файл нотации объектов JavaScript (JSON), который определяет инфраструктуру и конфигурацию проекта. В шаблоне используется декларативный синтаксис. Вы описываете предполагаемое развертывание без написания последовательности команд программирования для создания развертывания.
Если среда соответствует предварительным требованиям и вы знакомы с использованием шаблонов ARM, нажмите кнопку Развертывание в Azure. На портале Azure откроется шаблон.
При назначении встроенной политики или определения инициативы необязательно ссылаться на версию. Назначения политик для встроенных определений по умолчанию применяются к последней версии и автоматически наследуют незначительные изменения, если не указано иное.
Prerequisites
- Если у вас нет аккаунта Azure, создайте бесплатную учетную запись перед началом.
- Azure PowerShell или Azure CLI.
- Visual Studio Code и средства Azure Resource Manager (ARM).
-
Microsoft.PolicyInsightsнеобходимо зарегистрировать в подписке Azure. Чтобы зарегистрировать поставщика ресурсов, необходимо иметь разрешение на регистрацию поставщиков ресурсов. Это разрешение включено в роли участника и владельца. - Группа ресурсов с хотя бы одной виртуальной машиной, которая не использует управляемые диски.
Проверьте шаблон
Шаблон ARM создает назначение политики в рамках области действия группы ресурсов и назначает встроенное определение политики Аудит виртуальных машин, которые не используют управляемые диски.
Создайте следующий шаблон ARM как policy-assignment.json.
- Откройте Visual Studio Code и выберите файл>"Создать текстовый файл".
- Скопируйте и вставьте шаблон ARM в Visual Studio Code.
- Выберите"Сохранить>" и используйте имя файла policy-assignment.json.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"policyAssignmentName": {
"type": "string",
"defaultValue": "audit-vm-managed-disks",
"metadata": {
"description": "Policy assignment name used in assignment's resource ID"
}
},
"policyDefinitionID": {
"type": "string",
"defaultValue": "/providers/Microsoft.Authorization/policyDefinitions/06a78e20-9358-41c9-923c-fb736d382a4d",
"metadata": {
"description": "Policy definition ID"
}
},
"policyDisplayName": {
"type": "string",
"defaultValue": "Audit VM managed disks",
"metadata": {
"description": "Display name for Azure portal"
}
}
},
"resources": [
{
"type": "Microsoft.Authorization/policyAssignments",
"apiVersion": "2023-04-01",
"name": "[parameters('policyAssignmentName')]",
"properties": {
"policyDefinitionId": "[parameters('policyDefinitionID')]",
"description": "Policy assignment to resource group scope created with ARM template",
"displayName": "[parameters('policyDisplayName')]",
"nonComplianceMessages": [
{
"message": "Virtual machines should use managed disks"
}
]
}
}
],
"outputs": {
"assignmentId": {
"type": "string",
"value": "[resourceId('Microsoft.Authorization/policyAssignments', parameters('policyAssignmentName'))]"
}
}
}
Тип ресурса, определенный в шаблоне ARM, — Microsoft.Authorization/policyAssignments.
Шаблон использует три параметра для развертывания назначения политики:
-
policyAssignmentNameсоздает назначение политики с именем audit-vm-managed-disks. -
policyDefinitionIDиспользует идентификатор встроенного определения политики. Для справки команды, чтобы получить идентификатор, находятся в разделе для развертывания шаблона. -
policyDisplayNameсоздает имя, которое видно на портале Azure.
Дополнительные сведения о файлах шаблонов ARM:
- Чтобы найти дополнительные примеры шаблонов ARM, перейдите к разделу "Обзор примеров кода".
- Дополнительные сведения о справочнике по шаблонам для развертываний см. в справочнике по шаблону Azure.
- Чтобы узнать, как разрабатывать шаблоны ARM, перейдите в документацию по шаблонам ARM.
- Чтобы узнать о развертываниях на уровне подписки, перейдите к развертываниям подписки с помощью шаблонов ARM.
Развертывание шаблона ARM
Шаблон ARM можно развернуть с помощью Azure PowerShell или Azure CLI.
Из сеанса терминала Visual Studio Code подключитесь к Azure. Если у вас несколько подписок, выполните команды, чтобы задать контекст для подписки. Замените <subscriptionID> идентификатором своей подписки Azure.
Connect-AzAccount
# Run these commands if you have multiple subscriptions
Get-AzSubScription
Set-AzContext -Subscription <subscriptionID>
Можно проверить, зарегистрирован ли Microsoft.PolicyInsights. Если это не так, можно выполнить команду, чтобы зарегистрировать поставщика ресурсов.
Get-AzResourceProvider -ProviderNamespace 'Microsoft.PolicyInsights' |
Select-Object -Property ResourceTypes, RegistrationState
Register-AzResourceProvider -ProviderNamespace 'Microsoft.PolicyInsights'
Дополнительные сведения см. по адресу Get-AzResourceProvider и Register-AzResourceProvider.
Следующие команды отображают policyDefinitionID значение параметра:
(Get-AzPolicyDefinition |
Where-Object { $_.Properties.DisplayName -eq 'Audit VMs that do not use managed disks' }).ResourceId
Следующие команды развертывают определение политики в группе ресурсов. Замените <resourceGroupName> именем группы ресурсов:
$rg = Get-AzResourceGroup -Name '<resourceGroupName>'
$deployparms = @{
Name = 'PolicyDeployment'
ResourceGroupName = $rg.ResourceGroupName
TemplateFile = 'policy-assignment.json'
}
New-AzResourceGroupDeployment @deployparms
Переменная $rg сохраняет свойства для группы ресурсов. Переменная $deployparms использует splatting для создания значений параметров и повышения удобочитаемости. Команда New-AzResourceGroupDeployment использует значения параметров, определенные в переменной $deployparms .
-
Name— это имя развертывания, отображаемое в выходных данных и в Azure для развертываний группы ресурсов. -
ResourceGroupNameиспользует свойство$rg.ResourceGroupNameдля получения имени вашей группы ресурсов, в которой политика назначена. -
TemplateFileуказывает имя и расположение шаблона ARM на локальном компьютере.
Развертывание назначения политики можно проверить с помощью следующей команды:
Команда использует $rg.ResourceId свойство для получения идентификатора группы ресурсов.
Get-AzPolicyAssignment -Name 'audit-vm-managed-disks' -Scope $rg.ResourceId
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
Дополнительные сведения см. в статье Get-AzPolicyAssignment.
Определение несоответствуемых ресурсов
После развертывания назначения политики виртуальные машины, развернутые в группе ресурсов, проверяются на соответствие политике управляемого диска.
Состояние соответствия для нового назначения политики занимает несколько минут, чтобы активироваться и предоставить сведения о состоянии политики.
$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/26/2024 19:02:56
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.
Дополнительные сведения о назначении политик, проверяющих соответствие ресурсов, см. в этом руководстве.