New-AzPolicyAssignment

정책 할당을 만듭니다.

Syntax

New-AzPolicyAssignment
   -Name <String>
   [-Scope <String>]
   [-NotScope <String[]>]
   [-DisplayName <String>]
   [-Description <String>]
   [-PolicyDefinition <PsPolicyDefinition>]
   [-PolicySetDefinition <PsPolicySetDefinition>]
   [-Metadata <String>]
   [-EnforcementMode <PolicyAssignmentEnforcementMode>]
   [-AssignIdentity]
   [-IdentityType <ManagedIdentityType>]
   [-IdentityId <String>]
   [-Location <String>]
   [-NonComplianceMessage <PsNonComplianceMessage[]>]
   [-ApiVersion <String>]
   [-Pre]
   [-DefaultProfile <IAzureContextContainer>]
   [<CommonParameters>]
New-AzPolicyAssignment
   -Name <String>
   [-Scope <String>]
   [-NotScope <String[]>]
   [-DisplayName <String>]
   [-Description <String>]
   -PolicyDefinition <PsPolicyDefinition>
   [-PolicySetDefinition <PsPolicySetDefinition>]
   -PolicyParameterObject <Hashtable>
   [-Metadata <String>]
   [-EnforcementMode <PolicyAssignmentEnforcementMode>]
   [-AssignIdentity]
   [-IdentityType <ManagedIdentityType>]
   [-IdentityId <String>]
   [-Location <String>]
   [-NonComplianceMessage <PsNonComplianceMessage[]>]
   [-ApiVersion <String>]
   [-Pre]
   [-DefaultProfile <IAzureContextContainer>]
   [<CommonParameters>]
New-AzPolicyAssignment
   -Name <String>
   [-Scope <String>]
   [-NotScope <String[]>]
   [-DisplayName <String>]
   [-Description <String>]
   -PolicyDefinition <PsPolicyDefinition>
   [-PolicySetDefinition <PsPolicySetDefinition>]
   -PolicyParameter <String>
   [-Metadata <String>]
   [-EnforcementMode <PolicyAssignmentEnforcementMode>]
   [-AssignIdentity]
   [-IdentityType <ManagedIdentityType>]
   [-IdentityId <String>]
   [-Location <String>]
   [-NonComplianceMessage <PsNonComplianceMessage[]>]
   [-ApiVersion <String>]
   [-Pre]
   [-DefaultProfile <IAzureContextContainer>]
   [<CommonParameters>]
New-AzPolicyAssignment
   -Name <String>
   [-Scope <String>]
   [-NotScope <String[]>]
   [-DisplayName <String>]
   [-Description <String>]
   [-PolicyDefinition <PsPolicyDefinition>]
   -PolicySetDefinition <PsPolicySetDefinition>
   -PolicyParameterObject <Hashtable>
   [-Metadata <String>]
   [-EnforcementMode <PolicyAssignmentEnforcementMode>]
   [-AssignIdentity]
   [-IdentityType <ManagedIdentityType>]
   [-IdentityId <String>]
   [-Location <String>]
   [-NonComplianceMessage <PsNonComplianceMessage[]>]
   [-ApiVersion <String>]
   [-Pre]
   [-DefaultProfile <IAzureContextContainer>]
   [<CommonParameters>]
New-AzPolicyAssignment
   -Name <String>
   [-Scope <String>]
   [-NotScope <String[]>]
   [-DisplayName <String>]
   [-Description <String>]
   [-PolicyDefinition <PsPolicyDefinition>]
   -PolicySetDefinition <PsPolicySetDefinition>
   -PolicyParameter <String>
   [-Metadata <String>]
   [-EnforcementMode <PolicyAssignmentEnforcementMode>]
   [-AssignIdentity]
   [-IdentityType <ManagedIdentityType>]
   [-IdentityId <String>]
   [-Location <String>]
   [-NonComplianceMessage <PsNonComplianceMessage[]>]
   [-ApiVersion <String>]
   [-Pre]
   [-DefaultProfile <IAzureContextContainer>]
   [<CommonParameters>]

Description

New-AzPolicyAssignment cmdlet은 정책 할당을 만듭니다. 정책 및 범위를 지정합니다.

예제

예제 1: 구독 수준에서 정책 할당

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

첫 번째 명령은 Get-AzSubscription cmdlet을 사용하여 Subscription01이라는 구독을 가져오고 $Subscription 변수에 저장합니다. 두 번째 명령은 Get-AzPolicyDefinition cmdlet을 사용하여 VirtualMachinePolicy라는 정책 정의를 가져오고 $Policy 변수에 저장합니다. 최종 명령은 구독 범위 문자열로 식별되는 구독 수준에서 $Policy 정책을 할당합니다.

예제 2: 리소스 그룹 수준에서 정책 할당

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

첫 번째 명령은 Get-AzResourceGroup cmdlet을 사용하여 ResourceGroup11이라는 리소스 그룹을 가져오고 $ResourceGroup 변수에 저장합니다. 두 번째 명령은 Get-AzPolicyDefinition cmdlet을 사용하여 VirtualMachinePolicy라는 정책 정의를 가져오고 $Policy 변수에 저장합니다. 최종 명령은 $ResourceGroup ResourceId 속성으로 식별되는 리소스 그룹 수준에서 $Policy 정책을 할당합니다.

예제 3: 정책 매개 변수 개체를 사용하여 리소스 그룹 수준에서 정책 할당

$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

첫 번째 명령은 Get-AzResourceGroup cmdlet을 사용하여 ResourceGroup11이라는 리소스 그룹을 가져옵니다. 명령은 해당 개체를 $ResourceGroup 변수에 저장합니다. 두 번째 명령은 Get-AzPolicyDefinition cmdlet을 사용하여 허용된 위치에 대한 기본 제공 정책 정의를 가져옵니다. 명령은 해당 개체를 $Policy 변수에 저장합니다. 세 번째 및 네 번째 명령은 이름에 "east"가 있는 모든 Azure 지역을 포함하는 개체를 만듭니다. 명령은 해당 개체를 $AllowedLocations 변수에 저장합니다. 최종 명령은 $AllowedLocations 정책 매개 변수 개체를 사용하여 리소스 그룹 수준에서 $Policy 정책을 할당합니다. $ResourceGroup ResourceId 속성은 리소스 그룹을 식별합니다.

예제 4: 정책 매개 변수 파일을 사용하여 리소스 그룹 수준에서 정책 할당

다음 콘텐츠를 사용하여 로컬 작업 디렉터리에 AllowedLocations.json 파일을 만듭니다.

<#{
    "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

첫 번째 명령은 Get-AzResourceGroup cmdlet을 사용하여 ResourceGroup11이라는 리소스 그룹을 가져오고 $ResourceGroup 변수에 저장합니다. 두 번째 명령은 Get-AzPolicyDefinition cmdlet을 사용하여 허용된 위치에 대한 기본 제공 정책 정의를 가져오고 $Policy 변수에 저장합니다. 최종 명령은 로컬 작업 디렉터리에서 AllowedLocations.json 정책 매개 변수 파일을 사용하여 $ResourceGroup ResourceId 속성으로 식별된 리소스 그룹의 $Policy 정책을 할당합니다.

예제 5: 시스템 할당 관리 ID를 사용하여 정책 할당

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

첫 번째 명령은 Get-AzResourceGroup cmdlet을 사용하여 ResourceGroup11이라는 리소스 그룹을 가져오고 $ResourceGroup 변수에 저장합니다. 두 번째 명령은 Get-AzPolicyDefinition cmdlet을 사용하여 VirtualMachinePolicy라는 정책 정의를 가져오고 $Policy 변수에 저장합니다. 최종 명령은 $Policy 정책을 리소스 그룹에 할당합니다. 시스템 할당 관리 ID가 자동으로 만들어지고 정책 할당에 할당됩니다.

예제 6: 사용자가 할당한 관리 ID를 사용하여 정책 할당

$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

첫 번째 명령은 Get-AzResourceGroup cmdlet을 사용하여 ResourceGroup11이라는 리소스 그룹을 가져오고 $ResourceGroup 변수에 저장합니다. 두 번째 명령은 Get-AzPolicyDefinition cmdlet을 사용하여 VirtualMachinePolicy라는 정책 정의를 가져오고 $Policy 변수에 저장합니다. 세 번째 명령은 Get-AzUserAssignedIdentity cmdlet을 사용하여 UserAssignedIdentity1이라는 사용자 할당 관리 ID를 가져오고 $UserAssignedIdentity 변수에 저장합니다. 최종 명령은 $Policy 정책을 리소스 그룹에 할당합니다. id* 속성을 IdentityId 매개 변수에 전달하여 $UserAssignedIdentity Id 속성으로 식별된 사용자 할당 관리 ID가 정책 할당에 할당됩니다.

예제 7: 적용 모드 속성이 있는 정책 할당

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

첫 번째 명령은 Get-AzSubscription cmdlet을 사용하여 Subscription01이라는 구독을 가져오고 $Subscription 변수에 저장합니다. 두 번째 명령은 Get-AzPolicyDefinition cmdlet을 사용하여 VirtualMachinePolicy라는 정책 정의를 가져오고 $Policy 변수에 저장합니다. 최종 명령은 구독 범위 문자열로 식별되는 구독 수준에서 $Policy 정책을 할당합니다. 할당은 DoNotEnforceEnforcementMode 값으로 설정됩니다. 즉, 리소스를 만들거나 업데이트하는 동안 정책 효과가 적용되지 않습니다.

예제 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

첫 번째 명령은 Get-AzPolicySetDefinition cmdlet을 사용하여 VirtualMachinePolicySet이라는 정책 집합 정의를 가져오고 $PolicySet 변수에 저장합니다. 두 번째 명령은 비준수 메시지의 배열을 만듭니다. 전체 할당에 대한 범용 메시지 하나와 할당된 정책 집합 정의 내의 SKU 제한 정책과 관련된 하나의 메시지. 최종 명령은 $PolicySet 정책 집합 정의를 정책에 의해 리소스가 거부된 경우 표시되는 두 개의 비준수 메시지와 함께 구독에 할당합니다.

매개 변수

-ApiVersion

사용할 리소스 공급자 API의 버전을 지정합니다. 버전을 지정하지 않으면 이 cmdlet은 사용 가능한 최신 버전을 사용합니다.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-AssignIdentity

이 정책 할당에 대한 시스템 할당 관리 ID를 생성하고 할당합니다. ID는 'deployIfNotExists' 및 'modify' 정책에 대한 배포를 실행할 때 사용됩니다. ID를 할당할 때는 위치가 필요합니다.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-DefaultProfile

Azure와의 통신에 사용되는 자격 증명, 계정, 테넌트 및 구독

Type:IAzureContextContainer
Aliases:AzContext, AzureRmContext, AzureCredential
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Description

정책 할당에 대한 설명

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-DisplayName

정책 할당의 표시 이름을 지정합니다.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-EnforcementMode

정책 할당에 대한 적용 모드입니다. 현재 유효한 값은 Default, DoNotEnforce입니다.

Type:Nullable<T>[PolicyAssignmentEnforcementMode]
Accepted values:Default, DoNotEnforce
Position:Named
Default value:Default
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-IdentityId

이 정책 할당에 할당할 사용자 할당 관리 ID의 ID를 지정합니다. 이 값은 'UserAssigned' 값이 -IdentityType 매개 변수에 전달되는 경우에 필요합니다.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-IdentityType

이 정책 할당에 할당할 관리 ID의 유형을 지정합니다. 'SystemAssigned' 값이 제공되면 시스템 할당 관리 ID가 생성되고 이 정책 할당에 할당됩니다. 'UserAssigned' 값이 제공되면 ID를 통해 -IdentityId 매개 변수로 전달된 사용자 할당 ID가 이 정책 할당에 할당됩니다. ID는 'deployIfNotExists' 및 'modify' 정책에 대한 배포를 실행할 때 사용됩니다. ID를 할당할 때는 위치가 필요합니다. 시스템 할당 ID를 만든 후 New-AzRoleAssignment를 사용하여 ID에 권한을 부여해야 합니다. AssignIdentity와 IdentityType 매개 변수를 모두 사용하는 경우 IdentityType 매개 변수가 우선적으로 적용됩니다.

Type:Nullable<T>[ManagedIdentityType]
Accepted values:SystemAssigned, UserAssigned, None
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Location

정책 할당의 리소스 ID 위치입니다. 이 값은 -IdentityType 값이 제공될 때 필요합니다.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-Metadata

새 정책 할당에 대한 메타데이터입니다. 메타데이터를 포함하는 파일 이름의 경로이거나 메타데이터를 문자열로 사용할 수 있습니다.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-Name

정책 할당의 이름을 지정합니다.

Type:String
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-NonComplianceMessage

리소스가 정책을 준수하지 않는 이유를 설명하는 비준수 메시지입니다.

Type:PsNonComplianceMessage[]
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-NotScope

정책 할당에 대한 범위가 아닙니다.

Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-PolicyDefinition

정책 규칙을 포함하는 PsPolicyDefinition 개체로 정책을 지정합니다.

Type:PsPolicyDefinition
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-PolicyParameter

정책 매개 변수 파일 경로 또는 정책 매개 변수 문자열입니다.

Type:String
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-PolicyParameterObject

정책 매개 변수 개체입니다.

Type:Hashtable
Position:Named
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-PolicySetDefinition

정책 집합 정의 개체입니다.

Type:PsPolicySetDefinition
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-Pre

이 cmdlet은 사용할 버전을 자동으로 결정할 때 시험판 API 버전을 고려한다는 것을 나타냅니다.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Scope

정책을 할당할 범위를 지정합니다. 예를 들어 리소스 그룹에 정책을 할당하려면 구독 /subscriptions/ID/resourcegroups/리소스 그룹 이름을 지정합니다.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

입력

String

String[]

PsPolicyDefinition

PsPolicySetDefinition

Nullable<T>[[Microsoft.Azure.Commands.ResourceManager.Cmdlets.Entities.Policy.PolicyAssignmentEnforcementMode, Microsoft.Azure.PowerShell.Cmdlets.ResourceManager, Version=3.5.0.0, Culture=neutral, PublicKeyToken=null]]

PsNonComplianceMessage[]

출력

PsPolicyAssignment