Compartilhar via


New-AzPolicyAssignment

Cria ou atualiza uma atribuição de política.

Sintaxe

New-AzPolicyAssignment
   -Name <String>
   [-Scope <String>]
   [-NotScope <String[]>]
   [-DisplayName <String>]
   [-Description <String>]
   [-Metadata <String>]
   [-EnforcementMode <String>]
   [-IdentityType <String>]
   [-IdentityId <String>]
   [-Location <String>]
   [-NonComplianceMessage <PSObject[]>]
   [-Override <IOverride[]>]
   [-ResourceSelector <IResourceSelector[]>]
   [-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[]>]
   [-Override <IOverride[]>]
   [-ResourceSelector <IResourceSelector[]>]
   [-BackwardCompatible]
   [-PolicyDefinition <PSObject>]
   [-DefinitionVersion <String>]
   -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[]>]
   [-Override <IOverride[]>]
   [-ResourceSelector <IResourceSelector[]>]
   [-BackwardCompatible]
   [-PolicyDefinition <PSObject>]
   [-DefinitionVersion <String>]
   -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[]>]
   [-Override <IOverride[]>]
   [-ResourceSelector <IResourceSelector[]>]
   [-BackwardCompatible]
   -PolicyDefinition <PSObject>
   [-DefinitionVersion <String>]
   [-DefaultProfile <PSObject>]
   [-WhatIf]
   [-Confirm]
   [<CommonParameters>]

Description

O cmdlet New-AzPolicyAssignment cria ou atualiza uma atribuição de política com o escopo e o nome fornecidos. As atribuições de política se aplicam a todos os recursos contidos em seu escopo. Por exemplo, quando você atribui uma política no escopo do grupo de recursos, essa política se aplica a todos os recursos do grupo.

Exemplos

Exemplo 1: Atribuição de política no nível da assinatura

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

O primeiro comando obtém uma assinatura chamada Subscription01 usando o cmdlet Get-AzSubscription e a armazena na variável $Subscription. O segundo comando obtém a definição de política chamada VirtualMachinePolicy usando o cmdlet Get-AzPolicyDefinition e a armazena na variável $Policy. O comando final atribui a política em $Policy no nível da assinatura identificada pela cadeia de caracteres de escopo da assinatura.

Exemplo 2: atribuição de política no nível do grupo de recursos

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

O primeiro comando obtém um grupo de recursos chamado ResourceGroup11 usando o cmdlet Get-AzResourceGroup e o armazena na variável $ResourceGroup. O segundo comando obtém a definição de política chamada VirtualMachinePolicy usando o cmdlet Get-AzPolicyDefinition e a armazena na variável $Policy. O comando final atribui a política em $Policy no nível do grupo de recursos identificado pela propriedade ResourceId de $ResourceGroup.

Exemplo 3: Atribuição de política no nível do grupo de recursos com objeto de parâmetro de política

$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

O primeiro comando obtém um grupo de recursos chamado ResourceGroup11 usando o cmdlet Get-AzResourceGroup. O comando armazena esse objeto na variável $ResourceGroup. O segundo comando obtém a definição de política interna para locais permitidos usando o cmdlet Get-AzPolicyDefinition. O comando armazena esse objeto na variável $Policy. O terceiro e o quarto comandos criam um objeto que contém todas as regiões do Azure com "leste" no nome. Os comandos armazenam esse objeto na variável $AllowedLocations. O comando final atribui a política em $Policy no nível de um grupo de recursos usando o objeto de parâmetro de política em $AllowedLocations. A propriedade ResourceId de $ResourceGroup identifica o grupo de recursos.

Exemplo 4: atribuição de política no nível do grupo de recursos com arquivo de parâmetro de política

'{
    "listOfAllowedLocations":  {
      "value": [
        "westus",
        "westeurope",
        "japanwest"
      ]
    }
}' > .\AllowedLocations.json

$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

O primeiro comando cria um arquivo de parâmetro chamado AllowedLocations.json no diretório de trabalho local. O segundo comando obtém um grupo de recursos chamado ResourceGroup11 usando o cmdlet Get-AzResourceGroup e o armazena na variável $ResourceGroup. O terceiro comando obtém a definição de política interna para locais permitidos usando o cmdlet Get-AzPolicyDefinition e a armazena na variável $Policy. O comando final atribui a política em $Policy no grupo de recursos identificado pela propriedade ResourceId do $ResourceGroup usando o arquivo de parâmetro de política AllowedLocations.json do diretório de trabalho local.

Exemplo 5: Atribuição de política com uma identidade gerenciada atribuída pelo sistema

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

O primeiro comando obtém um grupo de recursos chamado ResourceGroup11 usando o cmdlet Get-AzResourceGroup e o armazena na variável $ResourceGroup. O segundo comando obtém a definição de política chamada VirtualMachinePolicy usando o cmdlet Get-AzPolicyDefinition e a armazena na variável $Policy. O comando final atribui a política em $Policy ao grupo de recursos. Uma identidade gerenciada atribuída pelo sistema é criada e atribuída automaticamente à atribuição de política.

Exemplo 6: Atribuição de política com uma identidade gerenciada atribuída pelo usuário

$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

O primeiro comando obtém um grupo de recursos chamado ResourceGroup11 usando o cmdlet Get-AzResourceGroup e o armazena na variável $ResourceGroup. O segundo comando obtém a definição de política chamada VirtualMachinePolicy usando o cmdlet Get-AzPolicyDefinition e a armazena na variável $Policy. O terceiro comando obtém a identidade gerenciada atribuída pelo usuário chamada UserAssignedIdentity1 usando o cmdlet Get-AzUserAssignedIdentity e a armazena na variável $UserAssignedIdentity. O comando final atribui a política em $Policy ao grupo de recursos. A identidade gerenciada atribuída pelo usuário identificada pela propriedade Id de $UserAssignedIdentity é atribuída à atribuição de política passando a propriedade Id* para o parâmetro IdentityId.

Exemplo 7: Atribuição de política com uma propriedade de modo de imposição

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

O primeiro comando obtém uma assinatura chamada Subscription01 usando o cmdlet Get-AzSubscription e a armazena na variável $Subscription. O segundo comando obtém a definição de política chamada VirtualMachinePolicy usando o cmdlet Get-AzPolicyDefinition e a armazena na variável $Policy. O comando final atribui a política em $Policy no nível da assinatura identificada pela cadeia de caracteres de escopo da assinatura.

A atribuição é definida com um valor EnforcementMode de DoNotEnforce, ou seja, o efeito da política não é imposto durante a criação ou atualização do recurso.

Exemplo 8: Atribuição de política com mensagens de não conformidade

$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

O primeiro comando obtém a definição do conjunto de políticas chamada VirtualMachinePolicySet usando o cmdlet Get-AzPolicySetDefinition e a armazena na variável $PolicySet. O segundo comando cria uma matriz de mensagens de não conformidade. Uma mensagem de propósito geral para toda a designação e uma mensagem específica para uma política de restrição de SKU dentro da definição do conjunto de políticas designado. O comando final atribui a definição do conjunto de políticas em $PolicySet à assinatura com duas mensagens de não conformidade que serão mostradas se um recurso for negado pela política.

Exemplo 9: Atribuição de política com seletor de recursos

$Policy = Get-AzPolicyDefinition -Name 'VirtualMachinePolicy'
$ResourceSelector = @{Name = "MyLocationSelector"; Selector = @(@{Kind = "resourceLocation"; In = @("eastus", "eastus2")})}
New-AzPolicyAssignment -Name 'VirtualMachinePolicyAssignment' -PolicyDefinition $Policy -ResourceSelector $ResourceSelector

O primeiro comando obtém a definição de política chamada VirtualMachinePolicy usando o cmdlet Get-AzPolicyDefinition e a armazena na variável $Policy. O segundo comando cria um objeto seletor de recursos que será usado para especificar que a atribuição deve ser aplicada apenas a recursos localizados no Leste dos EUA ou no Leste dos EUA 2 e o armazena na variável $ResourceSelector. O comando final atribui a definição de política em $Policy à assinatura com o seletor de recursos especificado por $ResourceSelector.

Exemplo 10: Atribuição de política com substituição

$Policy = Get-AzPolicyDefinition -Name 'VirtualMachinePolicy'
$Selector = @{Kind = "resourceLocation"; In = @("eastus", "eastus2")}
$Override = @(@{Kind = "policyEffect"; Value = 'Disabled'; Selector = @($Selector)})
New-AzPolicyAssignment -Name 'VirtualMachinePolicyAssignment' -PolicyDefinition $Policy -Override $Override

O primeiro comando obtém a definição de política chamada VirtualMachinePolicy usando o cmdlet Get-AzPolicyDefinition e a armazena na variável $Policy. O segundo comando cria um seletor de local especificando os locais Leste dos EUA ou Leste dos EUA 2 e o armazena na variável $Selector. O terceiro comando cria um objeto de substituição que será usado para especificar que a definição atribuída deve ter um efeito Disabled nos locais identificados pelo objeto $Selector e o armazena na variável $Override. O comando final atribui a definição de política em $Policy à assinatura com a substituição especificada pelo $Override.

Exemplo 11: [Backcompat] Atribuição de política no nível do grupo de recursos com objeto de parâmetro de política

$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

O primeiro comando obtém um grupo de recursos chamado ResourceGroup11 usando o cmdlet Get-AzResourceGroup. O comando armazena esse objeto na variável $ResourceGroup. O segundo comando obtém a definição de política interna para locais permitidos usando o cmdlet Get-AzPolicyDefinition. O comando armazena esse objeto na variável $Policy. O terceiro e o quarto comandos criam um objeto que contém todas as regiões do Azure com "leste" no nome. Os comandos armazenam esse objeto na variável $AllowedLocations. O comando final atribui a política em $Policy no nível de um grupo de recursos usando o objeto de parâmetro de política em $AllowedLocations. A propriedade ResourceId de $ResourceGroup identifica o grupo de recursos.

Exemplo 12: [Backcompat] Atribuição de política no nível do grupo de recursos com o arquivo de parâmetro de política

'{
    "listOfAllowedLocations":  {
      "value": [
        "westus",
        "westeurope",
        "japanwest"
      ]
    }
}' > .\AllowedLocations.json

$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

O primeiro comando cria um arquivo de parâmetro chamado AllowedLocations.json no diretório de trabalho local. O segundo comando obtém um grupo de recursos chamado ResourceGroup11 usando o cmdlet Get-AzResourceGroup e o armazena na variável $ResourceGroup. O terceiro comando obtém a definição de política interna para locais permitidos usando o cmdlet Get-AzPolicyDefinition e a armazena na variável $Policy. O comando final atribui a política em $Policy no grupo de recursos identificado pela propriedade ResourceId do $ResourceGroup usando o arquivo de parâmetro de política AllowedLocations.json do diretório de trabalho local.

Parâmetros

-BackwardCompatible

Faz com que o cmdlet retorne artefatos usando o formato herdado, colocando propriedades específicas da política em um objeto de recipiente de propriedades.

Tipo:SwitchParameter
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-Confirm

Solicita sua confirmação antes de executar o cmdlet.

Tipo:SwitchParameter
Aliases:cf
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-DefaultProfile

O parâmetro DefaultProfile não está funcional. Use o parâmetro SubscriptionId quando disponível se estiver executando o cmdlet em uma assinatura diferente.

Tipo:PSObject
Aliases:AzureRMContext, AzureCredential
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-DefinitionVersion

Indique a versão da definição de política ou definição do conjunto de políticas

Tipo:String
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-Description

Esta mensagem fará parte da resposta em caso de violação da política.

Tipo:String
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:True
Aceitar caracteres curinga:False

-DisplayName

O nome de exibição da atribuição de política.

Tipo:String
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:True
Aceitar caracteres curinga:False

-EnforcementMode

O modo de imposição de atribuição de política. Os valores possíveis são Default e DoNotEnforce.

Tipo:String
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:True
Aceitar caracteres curinga:False

-IdentityId

A identidade do usuário associada à política. As referências de chave do dicionário de identidade do usuário serão IDs de recurso do ARM no formato: '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}'.

Tipo:String
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-IdentityType

O tipo de identidade. Esse é o único campo obrigatório ao adicionar uma identidade atribuída pelo sistema ou pelo usuário a um recurso.

Tipo:String
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-Location

O local da atribuição de política. Necessário apenas ao utilizar a identidade gerenciada.

Tipo:String
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:True
Aceitar caracteres curinga:False

-Metadata

Os metadados de atribuição de política. Os metadados são um objeto aberto e normalmente são uma coleção de pares de valores-chave.

Tipo:String
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:True
Aceitar caracteres curinga:False

-Name

O nome da atribuição de política.

Tipo:String
Aliases:PolicyAssignmentName
Cargo:Named
Valor padrão:None
Obrigatório:True
Aceitar a entrada de pipeline:True
Aceitar caracteres curinga:False

-NonComplianceMessage

As mensagens que descrevem por que um recurso não está em conformidade com a política. Para construir, consulte a seção NOTAS para propriedades NONCOMPLIANCEMESSAGE e crie uma tabela de hash.

Tipo:PSObject[]
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:True
Aceitar caracteres curinga:False

-NotScope

Os escopos excluídos da política.

Tipo:String[]
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:True
Aceitar caracteres curinga:False

-Override

A substituição do valor da propriedade da política.

Tipo:IOverride[]
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-PolicyDefinition

Aceitar definição de política ou objeto de definição de conjunto de políticas

Tipo:PSObject
Aliases:PolicySetDefinition
Cargo:Named
Valor padrão:None
Obrigatório:True
Aceitar a entrada de pipeline:True
Aceitar caracteres curinga:False

-PolicyParameter

Os valores de parâmetro para a regra de política atribuída. As chaves são os nomes dos parâmetros.

Tipo:String
Cargo:Named
Valor padrão:None
Obrigatório:True
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-PolicyParameterObject

Os valores de parâmetro para a regra de política atribuída. As chaves são os nomes dos parâmetros.

Tipo:Hashtable
Cargo:Named
Valor padrão:None
Obrigatório:True
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-ResourceSelector

A lista de seletores de recursos para filtrar políticas por propriedades de recursos.

Tipo:IResourceSelector[]
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-Scope

O escopo da atribuição de política. Os escopos válidos são: grupo de gerenciamento (formato: '/providers/Microsoft.Management/managementGroups/{managementGroup}'), assinatura (formato: '/subscriptions/{subscriptionId}'), grupo de recursos (formato: '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}' ou recurso (formato: '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/[{parentResourcePath}/]{resourceType}/{resourceName}'

Tipo:String
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:True
Aceitar caracteres curinga:False

-WhatIf

Mostra o que aconteceria se o cmdlet fosse executado. O cmdlet não é executado.

Tipo:SwitchParameter
Aliases:wi
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

Entradas

PSObject

PSObject[]

String

String[]

Saídas

IPolicyAssignment