Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом руководстве по быстрому старту вы используете файл Bicep для создания назначения политики, которое проверяет соответствие ресурса политике Azure. Политика назначается группе ресурсов и проверяет виртуальные машины, которые не используют управляемые диски. После создания назначения политики вы выявляете несоответствующие виртуальные машины.
Bicep — это предметно-ориентированный язык (DSL), который использует декларативный синтаксис для развертывания ресурсов Azure. Он обеспечивает краткий синтаксис, надежную безопасность типов и поддержку повторного использования кода. Bicep предлагает лучшие возможности для разработки решений Azure типа "инфраструктура как код".
При назначении встроенной политики или определения инициативы необязательно ссылаться на версию. Назначения политик для встроенных определений по умолчанию применяются к последней версии и автоматически наследуют незначительные изменения версии, если не указано иное.
Предварительные условия
- Если у вас нет учетной записи Azure, создайте бесплатную учетную запись, прежде чем начинать работу.
- Бицепс
- Azure PowerShell или Azure CLI.
- Visual Studio Code и расширение Bicep для Visual Studio Code.
-
Microsoft.PolicyInsightsдолжен быть зарегистрирован в вашей подписке Azure. Чтобы зарегистрировать поставщика ресурсов, необходимо иметь разрешение на регистрацию поставщиков ресурсов. Это разрешение входит в обязанности участника и владельца. - Группа ресурсов с хотя бы одной виртуальной машиной, которая не использует управляемые диски.
Проверьте файл Bicep
Файл Bicep создает назначение политики для области группы ресурсов и назначает встроенное определение политики Аудитирующие виртуальные машины, которые не используют управляемые диски.
Создайте следующий файл Bicep под именем policy-assignment.bicep.
- Откройте Visual Studio Code и выберите файл>"Создать текстовый файл".
- Скопируйте и вставьте Bicep-файл в Visual Studio Code.
- Выберите Файл>Сохранить и используйте имя файла policy-assignment.bicep.
param policyAssignmentName string = 'audit-vm-managed-disks'
param policyDefinitionID string = '/providers/Microsoft.Authorization/policyDefinitions/06a78e20-9358-41c9-923c-fb736d382a4d'
param policyDisplayName string = 'Audit VM managed disks'
resource assignment 'Microsoft.Authorization/policyAssignments@2023-04-01' = {
name: policyAssignmentName
scope: resourceGroup()
properties: {
policyDefinitionId: policyDefinitionID
description: 'Policy assignment to resource group scope created with Bicep file'
displayName: policyDisplayName
nonComplianceMessages: [
{
message: 'Virtual machines should use managed disks'
}
]
}
}
output assignmentId string = assignment.id
Тип ресурса, определенный в файле Bicep, — Microsoft.Authorization/policyAssignments.
Файл Bicep использует три параметра для развертывания назначения политики:
-
policyAssignmentNameсоздает назначение политики с именем audit-vm-managed-disks. -
policyDefinitionIDиспользует идентификатор встроенного определения политики. Для справки команды, чтобы получить идентификатор, находятся в разделе для развертывания шаблона. -
policyDisplayNameсоздает отображаемое имя, которое видно в портале Azure.
Дополнительные сведения о файлах Bicep:
- Чтобы найти больше примеров Bicep, перейдите на страницу "Просмотр примеров кода".
- Дополнительные сведения о справочнике по шаблонам для развертывания см. в справочнике по шаблонам Azure.
- Чтобы узнать, как разрабатывать файлы Bicep, перейдите в документацию по Bicep.
- Чтобы узнать о развертываниях уровня подписки, перейдите к развертываниям с использованием файлов Bicep.
Разверните Bicep-файл
С использованием Azure PowerShell или Azure CLI, вы можете развернуть файл Bicep.
Из сеанса терминала 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.bicep'
}
New-AzResourceGroupDeployment @deployparms
Переменная $rg сохраняет свойства для группы ресурсов. Переменная $deployparms использует splatting для создания значений параметров и повышения удобочитаемости. Команда New-AzResourceGroupDeployment использует значения параметров, определенные в переменной $deployparms .
-
Name— это имя развертывания, отображаемое в выходных данных и в Azure для развертываний группы ресурсов. -
ResourceGroupNameиспользует свойство$rg.ResourceGroupNameдля получения имени вашей группы ресурсов, в которой назначена политика. -
TemplateFileуказывает имя и расположение файла Bicep на локальном компьютере.
Развертывание назначения политики можно проверить с помощью следующей команды:
Команда использует $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/20/2024 18:55:45
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.
Дополнительные сведения о назначении политик, проверяющих соответствие ресурсов, см. в этом руководстве.