Поделиться через


New-AzPolicyAssignment

Создает или обновляет назначение политики.

Синтаксис

New-AzPolicyAssignment
   -Name <String>
   [-Scope <String>]
   [-NotScope <String[]>]
   [-DisplayName <String>]
   [-Description <String>]
   [-Metadata <String>]
   [-EnforcementMode <String>]
   [-IdentityType <String>]
   [-IdentityId <String>]
   [-Location <String>]
   [-NonComplianceMessage <PSObject[]>]
   [-BackwardCompatible]
   [-DefaultProfile <PSObject>]
   [-WhatIf]
   [-Confirm]
   [<CommonParameters>]
New-AzPolicyAssignment
   -Name <String>
   [-Scope <String>]
   [-NotScope <String[]>]
   [-DisplayName <String>]
   [-Description <String>]
   [-Metadata <String>]
   [-EnforcementMode <String>]
   [-IdentityType <String>]
   [-IdentityId <String>]
   [-Location <String>]
   [-NonComplianceMessage <PSObject[]>]
   [-BackwardCompatible]
   [-PolicyDefinition <PSObject>]
   -PolicyParameterObject <Hashtable>
   [-DefaultProfile <PSObject>]
   [-WhatIf]
   [-Confirm]
   [<CommonParameters>]
New-AzPolicyAssignment
   -Name <String>
   [-Scope <String>]
   [-NotScope <String[]>]
   [-DisplayName <String>]
   [-Description <String>]
   [-Metadata <String>]
   [-EnforcementMode <String>]
   [-IdentityType <String>]
   [-IdentityId <String>]
   [-Location <String>]
   [-NonComplianceMessage <PSObject[]>]
   [-BackwardCompatible]
   [-PolicyDefinition <PSObject>]
   -PolicyParameter <String>
   [-DefaultProfile <PSObject>]
   [-WhatIf]
   [-Confirm]
   [<CommonParameters>]
New-AzPolicyAssignment
   -Name <String>
   [-Scope <String>]
   [-NotScope <String[]>]
   [-DisplayName <String>]
   [-Description <String>]
   [-Metadata <String>]
   [-EnforcementMode <String>]
   [-IdentityType <String>]
   [-IdentityId <String>]
   [-Location <String>]
   [-NonComplianceMessage <PSObject[]>]
   [-BackwardCompatible]
   -PolicyDefinition <PSObject>
   [-DefaultProfile <PSObject>]
   [-WhatIf]
   [-Confirm]
   [<CommonParameters>]

Описание

Командлет New-AzPolicyAssignment создает или обновляет назначение политики с заданным область и именем. Назначения политик применяются ко всем ресурсам, содержащимся в их область. Например, при назначении политики в группе ресурсов область эта политика применяется ко всем ресурсам в группе.

Примеры

Пример 1. Назначение политики на уровне подписки

$Subscription = Get-AzSubscription -SubscriptionName 'Subscription01'
$Policy = Get-AzPolicyDefinition -Name 'VirtualMachinePolicy'
New-AzPolicyAssignment -Name 'VirtualMachinePolicyAssignment' -PolicyDefinition $Policy -Scope "/subscriptions/$($Subscription.Id)"

Первая команда получает подписку с именем Subscription01 с помощью командлета Get-AzSubscription и сохраняет ее в переменной $Subscription. Вторая команда получает определение политики с именем VirtualMachinePolicy с помощью командлета Get-AzPolicyDefinition и сохраняет его в переменной $Policy. Последняя команда назначает политику в $Policy на уровне подписки, определяемой строкой область подписки.

Пример 2. Назначение политики на уровне группы ресурсов

$ResourceGroup = Get-AzResourceGroup -Name 'ResourceGroup11'
$Policy = Get-AzPolicyDefinition -Name 'VirtualMachinePolicy'
New-AzPolicyAssignment -Name 'VirtualMachinePolicyAssignment' -PolicyDefinition $Policy -Scope $ResourceGroup.ResourceId

Первая команда получает группу ресурсов с именем ResourceGroup11 с помощью командлета Get-AzResourceGroup и сохраняет ее в переменной $ResourceGroup. Вторая команда получает определение политики с именем VirtualMachinePolicy с помощью командлета Get-AzPolicyDefinition и сохраняет его в переменной $Policy. Последняя команда назначает политику в $Policy на уровне группы ресурсов, определяемой свойством ResourceId $ResourceGroup.

Пример 3. Назначение политики на уровне группы ресурсов с объектом параметра политики

$ResourceGroup = Get-AzResourceGroup -Name 'ResourceGroup11'
$Policy = Get-AzPolicyDefinition -BuiltIn | Where-Object {$_.DisplayName -eq 'Allowed locations'}
$Locations = Get-AzLocation | Where-Object displayname -like '*east*'
$AllowedLocations = @{'listOfAllowedLocations'=($Locations.location)}
New-AzPolicyAssignment -Name 'RestrictLocationPolicyAssignment' -PolicyDefinition $Policy -Scope $ResourceGroup.ResourceId -PolicyParameterObject $AllowedLocations

Первая команда получает группу ресурсов с именем ResourceGroup11 с помощью командлета Get-AzResourceGroup. Команда сохраняет этот объект в переменной $ResourceGroup. Вторая команда получает встроенное определение политики для разрешенных расположений с помощью командлета Get-AzPolicyDefinition. Команда сохраняет этот объект в переменной $Policy. Третий и четвертый команды создают объект, содержащий все регионы Azure с "востоком" в имени. Команды хранят этот объект в переменной $AllowedLocations. Последняя команда назначает политику в $Policy на уровне группы ресурсов с помощью объекта параметра политики в $AllowedLocations. Свойство ResourceId $ResourceGroup определяет группу ресурсов.

Пример 4. Назначение политики на уровне группы ресурсов с файлом параметров политики

{
    "listOfAllowedLocations":  {
      "value": [
        "westus",
        "westeurope",
        "japanwest"
      ]
    }
}

$ResourceGroup = Get-AzResourceGroup -Name 'ResourceGroup11'
$Policy = Get-AzPolicyDefinition -BuiltIn | Where-Object {$_.DisplayName -eq 'Allowed locations'}
New-AzPolicyAssignment -Name 'RestrictLocationPolicyAssignment' -PolicyDefinition $Policy -Scope $ResourceGroup.ResourceId -PolicyParameter .\AllowedLocations.json

Первая команда получает группу ресурсов с именем ResourceGroup11 с помощью командлета Get-AzResourceGroup и сохраняет ее в переменной $ResourceGroup. Вторая команда получает встроенное определение политики для разрешенных расположений с помощью командлета Get-AzPolicyDefinition и сохраняет его в переменной $Policy. Последняя команда назначает политику в $Policy в группе ресурсов, определяемой свойством ResourceId $ResourceGroup с помощью файла параметров политики AllowedLocations.json из локального рабочего каталога.

Пример 5. Назначение политики с назначенным системой управляемым удостоверением

$ResourceGroup = Get-AzResourceGroup -Name 'ResourceGroup11'
$Policy = Get-AzPolicyDefinition -Name 'VirtualMachinePolicy'
New-AzPolicyAssignment -Name 'VirtualMachinePolicyAssignment' -PolicyDefinition $Policy -Scope $ResourceGroup.ResourceId -Location 'eastus' -IdentityType 'SystemAssigned'

Первая команда получает группу ресурсов с именем ResourceGroup11 с помощью командлета Get-AzResourceGroup и сохраняет ее в переменной $ResourceGroup. Вторая команда получает определение политики с именем VirtualMachinePolicy с помощью командлета Get-AzPolicyDefinition и сохраняет его в переменной $Policy. Последняя команда назначает политику в $Policy группе ресурсов. Управляемое удостоверение, назначаемое системой, автоматически создается и назначается назначению политики.

Пример 6. Назначение политики с назначенным пользователем управляемым удостоверением

$ResourceGroup = Get-AzResourceGroup -Name 'ResourceGroup11'
$Policy = Get-AzPolicyDefinition -Name 'VirtualMachinePolicy'
$UserAssignedIdentity = Get-AzUserAssignedIdentity -ResourceGroupName 'ResourceGroup1' -Name 'UserAssignedIdentity1'
New-AzPolicyAssignment -Name 'VirtualMachinePolicyAssignment' -PolicyDefinition $Policy -Scope $ResourceGroup.ResourceId -Location 'eastus' -IdentityType 'UserAssigned' -IdentityId $UserAssignedIdentity.Id

Первая команда получает группу ресурсов с именем ResourceGroup11 с помощью командлета Get-AzResourceGroup и сохраняет ее в переменной $ResourceGroup. Вторая команда получает определение политики с именем VirtualMachinePolicy с помощью командлета Get-AzPolicyDefinition и сохраняет его в переменной $Policy. Третья команда получает управляемое удостоверение с именем UserAssignedIdentity1 с помощью командлета Get-AzUserAssignedIdentity и сохраняет его в переменной $UserAssignedIdentity. Последняя команда назначает политику в $Policy группе ресурсов. Назначенное пользователем управляемое удостоверение, определяемое свойством Id $UserAssignedIdentity, назначается назначению политики путем передачи свойства Id* параметру IdentityId.

Пример 7. Назначение политики со свойством режима принудительного применения

$Subscription = Get-AzSubscription -SubscriptionName 'Subscription01'
$Policy = Get-AzPolicyDefinition -Name 'VirtualMachinePolicy'
New-AzPolicyAssignment -Name 'VirtualMachinePolicyAssignment' -PolicyDefinition $Policy -Scope "/subscriptions/$($Subscription.Id)" -EnforcementMode DoNotEnforce

Первая команда получает подписку с именем Subscription01 с помощью командлета Get-AzSubscription и сохраняет ее в переменной $Subscription. Вторая команда получает определение политики с именем VirtualMachinePolicy с помощью командлета Get-AzPolicyDefinition и сохраняет его в переменной $Policy. Последняя команда назначает политику в $Policy на уровне подписки, определяемой строкой область подписки.

Назначение устанавливается со значением EnforcementMode DoNotEnforce , т. е. эффект политики не применяется во время создания или обновления ресурсов.

Пример 8. Назначение политики с сообщениями о несоответствии

$PolicySet = Get-AzPolicySetDefinition -Name 'VirtualMachinePolicySet'
$NonComplianceMessages = @(@{Message="Only DsV2 SKUs are allowed."; PolicyDefinitionReferenceId="DefRef1"}, @{Message="Virtual machines must follow cost management best practices."})
New-AzPolicyAssignment -Name 'VirtualMachinePolicyAssignment' -PolicySetDefinition $PolicySet -NonComplianceMessage $NonComplianceMessages

Первая команда получает определение набора политик с именем VirtualMachinePolicySet с помощью командлета Get-AzPolicySetDefinition и сохраняет его в переменной $PolicySet. Вторая команда создает массив сообщений о несоответствии. Одно сообщение общего назначения и одно сообщение, конкретное для политики ограничений SKU в определении назначенного набора политик. Последняя команда назначает определение набора политик в $PolicySet подписке с двумя сообщениями о несоответствии, которые будут отображаться, если ресурс запрещен политикой.

Пример 9. Назначение политики [Backcompat] на уровне группы ресурсов с объектом параметра политики

$ResourceGroup = Get-AzResourceGroup -Name 'ResourceGroup11'
$Policy = Get-AzPolicyDefinition -BuiltIn | Where-Object {$_.Properties.DisplayName -eq 'Allowed locations'}
$Locations = Get-AzLocation | Where-Object displayname -like '*east*'
$AllowedLocations = @{'listOfAllowedLocations'=($Locations.location)}
New-AzPolicyAssignment -Name 'RestrictLocationPolicyAssignment' -PolicyDefinition $Policy -Scope $ResourceGroup.ResourceId -PolicyParameterObject $AllowedLocations

Первая команда получает группу ресурсов с именем ResourceGroup11 с помощью командлета Get-AzResourceGroup. Команда сохраняет этот объект в переменной $ResourceGroup. Вторая команда получает встроенное определение политики для разрешенных расположений с помощью командлета Get-AzPolicyDefinition. Команда сохраняет этот объект в переменной $Policy. Третий и четвертый команды создают объект, содержащий все регионы Azure с "востоком" в имени. Команды хранят этот объект в переменной $AllowedLocations. Последняя команда назначает политику в $Policy на уровне группы ресурсов с помощью объекта параметра политики в $AllowedLocations. Свойство ResourceId $ResourceGroup определяет группу ресурсов.

Пример 10. Назначение политики [Backcompat] на уровне группы ресурсов с файлом параметров политики

{
    "listOfAllowedLocations":  {
      "value": [
        "westus",
        "westeurope",
        "japanwest"
      ]
    }
}

$ResourceGroup = Get-AzResourceGroup -Name 'ResourceGroup11'
$Policy = Get-AzPolicyDefinition -BuiltIn | Where-Object {$_.Properties.DisplayName -eq 'Allowed locations'}
New-AzPolicyAssignment -Name 'RestrictLocationPolicyAssignment' -PolicyDefinition $Policy -Scope $ResourceGroup.ResourceId -PolicyParameter .\AllowedLocations.json

Первая команда получает группу ресурсов с именем ResourceGroup11 с помощью командлета Get-AzResourceGroup и сохраняет ее в переменной $ResourceGroup. Вторая команда получает встроенное определение политики для разрешенных расположений с помощью командлета Get-AzPolicyDefinition и сохраняет его в переменной $Policy. Последняя команда назначает политику в $Policy в группе ресурсов, определяемой свойством ResourceId $ResourceGroup с помощью файла параметров политики AllowedLocations.json из локального рабочего каталога.

Параметры

-BackwardCompatible

Позволяет командлету возвращать артефакты с помощью устаревшего формата размещения свойств, относящихся к политике, в объекте контейнера свойств.

Тип:SwitchParameter
Position:Named
значение по умолчанию:None
Обязательно:False
Accept pipeline input:False
Accept wildcard characters:False

-Confirm

Запрос подтверждения перед выполнением командлета.

Тип:SwitchParameter
Aliases:cf
Position:Named
значение по умолчанию:None
Обязательно:False
Accept pipeline input:False
Accept wildcard characters:False

-DefaultProfile

Параметр DefaultProfile не работает. Используйте параметр SubscriptionId, если он доступен при выполнении командлета в другой подписке.

Тип:PSObject
Aliases:AzureRMContext, AzureCredential
Position:Named
значение по умолчанию:None
Обязательно:False
Accept pipeline input:False
Accept wildcard characters:False

-Description

Это сообщение будет частью ответа в случае нарушения политики.

Тип:String
Position:Named
значение по умолчанию:None
Обязательно:False
Accept pipeline input:True
Accept wildcard characters:False

-DisplayName

Отображаемое имя назначения политики.

Тип:String
Position:Named
значение по умолчанию:None
Обязательно:False
Accept pipeline input:True
Accept wildcard characters:False

-EnforcementMode

Режим принудительного применения назначений политик. Возможные значения: Default и DoNotEnforce.

Тип:String
Position:Named
значение по умолчанию:None
Обязательно:False
Accept pipeline input:True
Accept wildcard characters:False

-IdentityId

Удостоверение пользователя, связанное с политикой. Ссылки на ключ словаря удостоверений пользователя будут идентификаторами ресурсов ARM в форме: "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}".

Тип:String
Position:Named
значение по умолчанию:None
Обязательно:False
Accept pipeline input:False
Accept wildcard characters:False

-IdentityType

Тип удостоверения. Это единственное обязательное поле при добавлении удостоверения, назначенного системой или пользователем, в ресурс.

Тип:String
Position:Named
значение по умолчанию:None
Обязательно:False
Accept pipeline input:False
Accept wildcard characters:False

-Location

Расположение назначения политики. Требуется только при использовании управляемого удостоверения.

Тип:String
Position:Named
значение по умолчанию:None
Обязательно:False
Accept pipeline input:True
Accept wildcard characters:False

-Metadata

Метаданные назначения политики. Метаданные — это открытый завершенный объект, который обычно представляет собой коллекцию пар значений ключей.

Тип:String
Position:Named
значение по умолчанию:None
Обязательно:False
Accept pipeline input:True
Accept wildcard characters:False

-Name

Имя назначения политики.

Тип:String
Aliases:PolicyAssignmentName
Position:Named
значение по умолчанию:None
Обязательно:True
Accept pipeline input:True
Accept wildcard characters:False

-NonComplianceMessage

Сообщения, описывающие, почему ресурс не соответствует политике. Сведения о создании см. в разделе NOTES для свойств NONCOMPLIANCEMESSAGE и создания хэш-таблицы.

Тип:PSObject[]
Position:Named
значение по умолчанию:None
Обязательно:False
Accept pipeline input:True
Accept wildcard characters:False

-NotScope

Исключенные область политики.

Тип:String[]
Position:Named
значение по умолчанию:None
Обязательно:False
Accept pipeline input:True
Accept wildcard characters:False

-PolicyDefinition

Принятие определения политики или объекта определения набора политик

Тип:PSObject
Aliases:PolicySetDefinition
Position:Named
значение по умолчанию:None
Обязательно:True
Accept pipeline input:True
Accept wildcard characters:False

-PolicyParameter

Значения параметров для назначенного правила политики. Ключи — это имена параметров.

Тип:String
Position:Named
значение по умолчанию:None
Обязательно:True
Accept pipeline input:False
Accept wildcard characters:False

-PolicyParameterObject

Значения параметров для назначенного правила политики. Ключи — это имена параметров.

Тип:Hashtable
Position:Named
значение по умолчанию:None
Обязательно:True
Accept pipeline input:False
Accept wildcard characters:False

-Scope

Область назначения политики. Допустимые область: группа управления (формат : "/providers/Microsoft.Management/managementGroups/{managementGroup}"), подписка (формат "/subscriptions/{subscriptionId}"), группа ресурсов (формат "/subscriptionId}/{subscriptionId}/resourceGroups/{resourceGroupName}", или ресурс (формат: '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/[{parentResourcePath}/]{resourceType}/{ resourceName}'

Тип:String
Position:Named
значение по умолчанию:None
Обязательно:False
Accept pipeline input:True
Accept wildcard characters:False

-WhatIf

Показывает, что произойдет при запуске командлета. Командлет не выполняется.

Тип:SwitchParameter
Aliases:wi
Position:Named
значение по умолчанию:None
Обязательно:False
Accept pipeline input:False
Accept wildcard characters:False

Входные данные

PSObject

PSObject[]

String

String[]

Выходные данные

IPolicyAssignment