Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Прежде чем начать, рекомендуется ознакомиться со страницей обзора конфигурации компьютера и сведениями о параметрах исправления конфигурации компьютера.
Important
Расширение конфигурации компьютера требуется для виртуальных машин Azure. Чтобы развернуть расширение на всех компьютерах, назначьте следующую инициативу политики: Deploy prerequisites to enable machine configuration policies on virtual machines
Чтобы использовать пакеты конфигурации компьютера, которые применяют конфигурации, требуется расширение гостевой конфигурации виртуальной машины Azure версии 1.26.24 или более поздней версии или агент Arc 1.10.0 или более поздней версии.
Определения политики пользовательской конфигурации компьютера, использующие AuditIfNotExists или DeployIfNotExists, находятся в статусе общедоступной поддержки (GA).
Выполните следующие действия, чтобы создать собственные политики, которые проверяют соответствие требованиям или управляют состоянием компьютеров с поддержкой Azure или Arc.
Установка PowerShell 7 и необходимых модулей PowerShell
Сначала настройте среду разработки конфигурации компьютера , чтобы установить необходимую версию PowerShell для операционной системы и модуля GuestConfiguration .
Создание и публикация артефакта пакета конфигурации машины
Если вы еще не сделали этого, создайте и опубликуйте пакет конфигурации настраиваемого компьютера, выполнив действия, описанные в разделе "Создание артефактов пакета конфигурации настраиваемого компьютера". Затем проверьте пакет в среде разработки, выполнив действия, описанные в руководстве по тестированию артефактов пакета конфигурации компьютера.
Note
Пример кода в этой статье ссылается на $contentUri переменную. Если вы используете тот же сеанс PowerShell, что и в предыдущих руководствах для создания и тестирования артефактов пакета, в этой переменной может уже содержаться URI вашего пакета.
Если в сеансе PowerShell переменная $contentUri не задана URI для вашего пакета, необходимо ее задать. В этом примере используется строка подключения хранилища и New-AzStorageContext командлет для создания контекста хранения. Затем он получает BLOB хранилища для опубликованного пакета и использует свойства этого объекта для получения URI содержимого.
$connectionString = '<storage-account-connection-string>'
$context = New-AzStorageContext -ConnectionString $connectionString
$getParams = @{
Context = $context
Container = '<container-name>'
Blob = '<published-package-file-name>'
}
$blob = Get-AzStorageBlob @getParams
$contentUri = $blob.ICloudBlob.Uri.AbsoluteUri
Требования к политике для конфигурации компьютера
Раздел метаданных определения политики должен включать два свойства, чтобы служба конфигурации компьютера могла автоматизировать подготовку и отчетность по назначению гостевой конфигурации.
Свойство категории должно быть задано Guest Configuration и раздел с именем guestConfiguration должен содержать сведения о назначении конфигурации компьютера. Командлет New-GuestConfigurationPolicy автоматически создает этот текст.
В следующем примере показан раздел метаданных , который автоматически создается New-GuestConfigurationPolicy.
"metadata": {
"category": "Guest Configuration",
"guestConfiguration": {
"name": "test",
"version": "1.0.0",
"contentType": "Custom",
"contentUri": "CUSTOM-URI-HERE",
"contentHash": "CUSTOM-HASH-VALUE-HERE",
"configurationParameter": {}
}
}
Если для эффекта определения задано DeployIfNotExists, то секция должна содержать детали развертывания, касающиеся назначения конфигурации машины. Командлет New-GuestConfigurationPolicy автоматически создает этот текст.
Создание определения политики Azure
После создания и отправки пакета настраиваемой политики конфигурации компьютера создайте определение политики конфигурации компьютера. Командлет New-GuestConfigurationPolicy принимает пользовательский пакет политики и создает определение политики.
Параметр New-GuestConfigurationPolicy требует уникальной строки. Требуется глобальный уникальный идентификатор (GUID). Для новых определений создайте новый GUID с помощью командлета New-GUID . При обновлении определения используйте ту же уникальную строку для PolicyId , чтобы убедиться, что правильное определение обновляется.
Параметры командлета New-GuestConfigurationPolicy :
PolicyId: уникальный идентификатор GUID.
ContentUri: общедоступный URI HTTP(s) пакета содержимого машинной конфигурации.
DisplayName: отображаемое имя политики.
Описание: описание политики.
Параметр: параметры политики, предоставляемые в хэш-таблице.
PolicyVersion: версия политики.
Путь: путь назначения, в котором создаются определения политик. Не указывайте этот параметр в качестве пути к локальной копии пакета.
Платформа: целевая платформа (Windows/Linux) для политики конфигурации компьютера и пакета содержимого.
Режим: (учет регистра:
ApplyAndMonitor,ApplyAndAutoCorrect)Auditвыберите, должна ли политика выполнять аудит или развертывание конфигурации. Значение по умолчанию —Audit.Тег. Добавляет один или несколько фильтров тегов в определение политики.
Категория: задает поле метаданных категории в определении политики.
LocalContentPath: путь к локальной
.zipкопии файла пакета конфигурации компьютера. Этот параметр необходим, если вы используете управляемое удостоверение, назначаемое пользователем, для предоставления доступа к объекту BLOB в хранилище Azure.ManagedIdentityResourceId:
resourceIdуправляемое удостоверение, назначаемое пользователем, которое имеет доступ на чтение к BLOB-объекту службы хранилища Azure, содержаному.zipфайлу пакета конфигурации компьютера. Этот параметр необходим, если вы используете управляемое удостоверение, назначенное пользователем, для предоставления доступа к объекту BLOB в хранилище Azure.ИсключениеArcMachines: указывает, что определение политики должно исключить компьютеры Arc. Этот параметр необходим, если вы используете управляемое удостоверение, назначаемое пользователем, для предоставления доступа к BLOB-объекту службы хранилища Azure.
UseSystemAssignedIdentity: это возможность использовать назначенное системой удостоверение для скачивания пакета из контейнера учетной записи хранения вместо использования URL-адреса SaS.
Этот параметр нельзя использовать с ManagedIdentityResourceId. Варианты являются взаимоисключающими.
Этот параметр можно использовать без параметра ExcludeArcMachines, так как идентификация, назначенная системой, доступна для компьютеров Arc.
Important
В отличие от виртуальных машин Azure, компьютеры, подключенные к Arc, в настоящее время не поддерживают управляемые удостоверения с назначением пользователем. В результате необходим флаг для -ExcludeArcMachines исключения этих компьютеров из определения политики. Чтобы виртуальная машина Azure могла скачать назначенный пакет и применить политику, агент гостевой конфигурации должен быть версии 1.29.82.0 или выше для Windows и версии 1.26.76.0 или выше для Linux.
Для машин, подключенных к Arc, можно также использовать системные назначенные управляемые идентичности для скачивания пакетов.
Дополнительные сведения о параметре Mode см. на странице "Настройка параметров исправления для конфигурации компьютера".
Создайте определение политики, которое проводит аудит с использованием пользовательского пакета конфигурации по указанному пути:
$PolicyConfig = @{
PolicyId = '_My GUID_'
ContentUri = $contentUri
DisplayName = 'My audit policy'
Description = 'My audit policy'
Path = './policies/auditIfNotExists.json'
Platform = 'Windows'
PolicyVersion = 1.0.0
}
New-GuestConfigurationPolicy @PolicyConfig
Создайте определение политики, которое применяет пользовательский пакет конфигурации в указанном пути:
$PolicyConfig2 = @{
PolicyId = '_My GUID_'
ContentUri = $contentUri
DisplayName = 'My deployment policy'
Description = 'My deployment policy'
Path = './policies/deployIfNotExists.json'
Platform = 'Windows'
PolicyVersion = 1.0.0
Mode = 'ApplyAndAutoCorrect'
}
New-GuestConfigurationPolicy @PolicyConfig2
Создайте определение политики, которое применяет пользовательский пакет конфигурации с помощью User-Assigned Managed Identity:
$PolicyConfig3 = @{
PolicyId = '_My GUID_'
ContentUri = $contentUri
DisplayName = 'My deployment policy'
Description = 'My deployment policy'
Path = './policies/deployIfNotExists.json'
Platform = 'Windows'
PolicyVersion = 1.0.0
Mode = 'ApplyAndAutoCorrect'
LocalContentPath = "C:\Local\Path\To\Package" # Required parameter for managed identity
ManagedIdentityResourceId = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}" # Required parameter for managed identity
}
New-GuestConfigurationPolicy @PolicyConfig3 -ExcludeArcMachines
Для этого сценария необходимо отключить параметр "Разрешить анонимный доступ к BLOB-объектам" и назначить роль Читатель данных BLOB-объектов хранения для учётной записи хранения этому удостоверению.
Создайте определение политики, которое применяет пользовательский пакет конфигурации с помощью управляемого удостоверения, назначенного системой.
$PolicyConfig4 = @{
PolicyId = '_My GUID_'
ContentUri = $contentUri
DisplayName = 'My deployment policy'
Description = 'My deployment policy'
Path = './policies/deployIfNotExists.json'
Platform = 'Windows'
PolicyVersion = 1.0.0
Mode = 'ApplyAndAutoCorrect'
LocalContentPath = "C:\Local\Path\To\Package" # Required parameter for managed identity
}
New-GuestConfigurationPolicy @PolicyConfig4 -UseSystemAssignedIdentity
Для этого сценария необходимо отключить параметр «Разрешить анонимный доступ к BLOB-объектам» и назначить роль чтения данных BLOB-объектов хранилища к учетной записи хранения для системного удостоверения.
Note
Идентификатор ресурса управляемого удостоверения можно получить с помощью командлета Get-AzUserAssignedIdentity PowerShell.
Выходные данные командлета возвращают объект, содержащий отображаемое имя определения и путь к файлам политики. Файлы JSON с определением, которые создают определения политики аудита, имеют имя auditIfNotExists.json, а файлы, создающие определения политик для применения конфигураций, имеют имя deployIfNotExists.json.
Фильтрация политик конфигурации компьютера с помощью тегов
Определения политики, созданные командлетами в модуле GuestConfiguration, опционально могут включать фильтр для тегов. Параметр ТегаNew-GuestConfigurationPolicy поддерживает массив хэш-таблиц, содержащих отдельные записи тегов. Теги добавляются в раздел if определения политики и не могут быть изменены с помощью назначения политики.
Пример фрагмента определения политики, который фильтрует теги ниже.
"if": {
"allOf" : [
{
"allOf": [
{
"field": "tags.Owner",
"equals": "BusinessUnit"
},
{
"field": "tags.Role",
"equals": "Web"
}
]
},
{
// Original machine configuration content
}
]
}
Использование параметров в определениях политик конфигурации настраиваемого компьютера
Конфигурация компьютера поддерживает переопределение свойств конфигурации DSC во время выполнения. Эта функция означает, что значения в MOF-файле в пакете не должны считаться статическими. Значения переопределения предоставляются через политику Azure и не изменяют метод создания или компиляции конфигураций DSC.
Конфигурация компьютера поддерживает следующие типы значений для параметров:
- String
- Boolean
- Double
- Float
Командлеты New-GuestConfigurationPolicy и Get-GuestConfigurationPackageComplianceStatus включают параметр с именем Parameter. Этот параметр принимает определение хэш-таблицы, включая все сведения о каждом параметре и создает необходимые разделы каждого файла, используемого для определения политики Azure.
В следующем примере создается определение политики для аудита службы, где пользователь выбирает из списка во время назначения политики.
# This DSC resource definition...
Service 'UserSelectedNameExample' {
Name = 'ParameterValue'
Ensure = 'Present'
State = 'Running'
}
# ...can be converted to a hash table:
$PolicyParameterInfo = @(
@{
# Policy parameter name (mandatory)
Name = 'ServiceName'
# Policy parameter display name (mandatory)
DisplayName = 'windows service name.'
# Policy parameter description (optional)
Description = 'Name of the windows service to be audited.'
# DSC configuration resource type (mandatory)
ResourceType = 'Service'
# DSC configuration resource id (mandatory)
ResourceId = 'UserSelectedNameExample'
# DSC configuration resource property name (mandatory)
ResourcePropertyName = 'Name'
# Policy parameter default value (optional)
DefaultValue = 'winrm'
# Policy parameter allowed values (optional)
AllowedValues = @('BDESVC','TermService','wuauserv','winrm')
})
# ...and then passed into the `New-GuestConfigurationPolicy` cmdlet
$PolicyParam = @{
PolicyId = 'My GUID'
ContentUri = $contentUri
DisplayName = 'Audit Windows Service.'
Description = "Audit if a Windows Service isn't enabled on Windows machine."
Path = '.\policies\auditIfNotExists.json'
Parameter = $PolicyParameterInfo
PolicyVersion = 1.0.0
}
New-GuestConfigurationPolicy @PolicyParam
Публикация определения политики Azure
Наконец, можно опубликовать определения политики с помощью командлета New-AzPolicyDefinition . Приведенные ниже команды публикуют политику конфигурации компьютера в центре политик.
Чтобы выполнить New-AzPolicyDefinition команду, необходимо получить доступ к созданию определений политик в Azure.
Требования к авторизации описаны на странице обзора политики Azure . Рекомендуемой встроенной ролью является Resource Policy Contributor.
New-AzPolicyDefinition -Name 'mypolicydefinition' -Policy '.\policies\auditIfNotExists.json'
Или, если политика является политикой развертывания при отсутствии (DINE), используйте следующую команду:
New-AzPolicyDefinition -Name 'mypolicydefinition' -Policy '.\policies\deployIfNotExists.json'
С определением политики, созданным в Azure, последним шагом является назначение определения. Узнайте, как назначить определение, используя портал, Azure CLI и Azure PowerShell.
Policy lifecycle
Если вы хотите выпустить обновление для определения политики, внесите изменения как в пакет конфигурации гостевого пользователя, так и в детали определения политики Azure.
Note
Свойство version назначения конфигурации компьютера влияет только на пакеты, размещенные корпорацией Майкрософт. Наилучшей практикой для версионного контроля пользовательского содержимого является включение версии в имя файла.
Во-первых, при запуске New-GuestConfigurationPackageукажите имя пакета, которое делает его уникальным из предыдущих версий. Номер версии можно включить в имя, например PackageName_1.0.0. Число в этом примере используется только для уникального пакета, а не для указания того, что пакет должен считаться более новым или более старым, чем другие пакеты.
Во-вторых, обновите параметры, используемые с командлетом New-GuestConfigurationPolicy, после каждого из последующих объяснений.
-
Версия. При запуске командлета
New-GuestConfigurationPolicyнеобходимо указать номер версии, превышающий опубликованный в данный момент номер версии. -
contentUri: при запуске командлета
New-GuestConfigurationPolicyнеобходимо указать унифицированный указатель ресурса (URI) на адрес местоположения пакета. Включение версии пакета в имя файла гарантирует, что значение этого свойства изменяется в каждом выпуске. -
contentHash: Командлет
New-GuestConfigurationPolicyавтоматически обновляет это свойство. Это хэш-значение пакета, созданного с помощьюNew-GuestConfigurationPackage. Свойство должно быть правильным для публикуемого.zipфайла. Если обновляется только свойство contentUri , расширение отклоняет пакет содержимого.
Самый простой способ выпуска обновленного пакета — повторить процесс, описанный в этой статье, и указать обновленный номер версии. Этот процесс гарантирует правильность обновления всех свойств.
Next steps
- Назначьте пользовательское определение политики с помощью портала Azure.
- Узнайте, как просматривать сведения о соответствии для назначений политики конфигурации машины.