New-AzPolicyDefinition

정책 정의를 만듭니다.

Syntax

New-AzPolicyDefinition
   -Name <String>
   [-DisplayName <String>]
   [-Description <String>]
   -Policy <String>
   [-Metadata <String>]
   [-Parameter <String>]
   [-Mode <String>]
   [-ApiVersion <String>]
   [-Pre]
   [-DefaultProfile <IAzureContextContainer>]
   [<CommonParameters>]
New-AzPolicyDefinition
   -Name <String>
   [-DisplayName <String>]
   [-Description <String>]
   -Policy <String>
   [-Metadata <String>]
   [-Parameter <String>]
   [-Mode <String>]
   -ManagementGroupName <String>
   [-ApiVersion <String>]
   [-Pre]
   [-DefaultProfile <IAzureContextContainer>]
   [<CommonParameters>]
New-AzPolicyDefinition
   -Name <String>
   [-DisplayName <String>]
   [-Description <String>]
   -Policy <String>
   [-Metadata <String>]
   [-Parameter <String>]
   [-Mode <String>]
   -SubscriptionId <Guid>
   [-ApiVersion <String>]
   [-Pre]
   [-DefaultProfile <IAzureContextContainer>]
   [<CommonParameters>]

Description

New-AzPolicyDefinition cmdlet은 JSON(JavaScript Object Notation) 형식의 정책 규칙을 포함하는 정책 정의를 만듭니다.

예제

예제 1: 정책 파일을 사용하여 정책 정의 만들기

<#{
   "if": {
      "field": "location",
      "notIn": ["eastus", "westus", "centralus"]
   },
   "then": {
      "effect": "audit"
   }
}#>
New-AzPolicyDefinition -Name 'LocationDefinition' -Policy C:\LocationPolicy.json

이 명령은 C:\LocationPolicy.json 지정된 정책 규칙을 포함하는 LocationDefinition이라는 정책 정의를 만듭니다. LocationPolicy.json 파일의 예제 콘텐츠는 위에 제공됩니다. 세 가지 파일 콘텐츠 형식이 지원됩니다.

  1. 정책 규칙만(위 예제)
  2. Policy 속성 개체입니다. 이 형식은 정책 정의를 편집할 때 포털에 표시되며 매개 변수를 포함할 수 있습니다.
  3. 전체 정책 개체입니다. 이 형식은 Azure Policy 내보내기 함수에 의해 생성되며 매개 변수를 포함할 수 있습니다.

참고: 명령줄에 제공된 값(예: 매개 변수, 메타데이터)은 파일에 있는 해당 값을 재정의합니다.

예제 2: 인라인 매개 변수를 사용하여 매개 변수가 있는 정책 정의 만들기

<#{
   "if": {
      "field": "location",
      "notIn": "[parameters('listOfAllowedLocations')]"
   },
   "then": {
      "effect": "audit"
   }
}#>
New-AzPolicyDefinition -Name 'LocationDefinition' -Policy C:\LocationPolicy.json -Parameter '{ "listOfAllowedLocations": { "type": "array" } }'

이 명령은 C:\LocationPolicy.json 지정된 정책 규칙을 포함하는 LocationDefinition이라는 정책 정의를 만듭니다. 정책 규칙에 대한 매개 변수 정의가 인라인으로 제공됩니다.

예제 3: 관리 그룹에서 인라인으로 정책 정의 만들기

New-AzPolicyDefinition -Name 'VMPolicyDefinition' -ManagementGroupName Dept42 -DisplayName 'Virtual Machine policy definition' -Policy '{"if":{"field":"type","equals":"Microsoft.Compute/virtualMachines"},"then":{"effect":"deny"}}'

이 명령은 관리 그룹 Dept42에서 VMPolicyDefinition이라는 정책 정의를 만듭니다. 이전 명령은 정책을 유효한 JSON 형식의 문자열로 지정합니다.

예제 4: 메타데이터를 사용하여 인라인으로 정책 정의 만들기

New-AzPolicyDefinition -Name 'VMPolicyDefinition' -Metadata '{"category":"Virtual Machine"}' -Policy '{"if":{"field":"type","equals":"Microsoft.Compute/virtualMachines"},"then":{"effect":"deny"}}'

Name               : VMPolicyDefinition
ResourceId         : /subscriptions/11111111-1111-1111-1111-111111111111/providers/Microsoft.Authorization/policyDefinitions/VMPolicyDefinition
ResourceName       : VMPolicyDefinition
ResourceType       : Microsoft.Authorization/policyDefinitions
SubscriptionId     : 11111111-1111-1111-1111-111111111111
Properties         : @{displayName=VMPolicyDefinition; policyType=Custom; mode=All; metadata=; policyRule=}
PolicyDefinitionId : /subscriptions/11111111-1111-1111-1111-111111111111/providers/Microsoft.Authorization/policyDefinitions/VMPolicyDefinition

이 명령은 범주가 "Virtual Machine"임을 나타내는 메타데이터를 사용하여 VMPolicyDefinition이라는 정책 정의를 만듭니다. 이전 명령은 정책을 유효한 JSON 형식의 문자열로 지정합니다.

예제 5: 모드를 사용하여 인라인으로 정책 정의 만들기

New-AzPolicyDefinition -Name 'TagsPolicyDefinition' -Policy '{"if":{"value":"[less(length(field(''tags'')), 3)]","equals":true},"then":{"effect":"deny"}}' -Mode Indexed

Name               : TagsPolicyDefinition
ResourceId         : /subscriptions/11111111-1111-1111-1111-111111111111/providers/Microsoft.Authorization/policyDefinitions/TagsPolicyDefinition
ResourceName       : TagsPolicyDefinition
ResourceType       : Microsoft.Authorization/policyDefinitions
SubscriptionId     : 11111111-1111-1111-1111-111111111111
Properties         : @{displayName=TagsPolicyDefinition; policyType=Custom; mode=Indexed; metadata=; parameters=; policyRule=}
PolicyDefinitionId : /subscriptions/11111111-1111-1111-1111-111111111111/providers/Microsoft.Authorization/policyDefinitions/TagsPolicyDefinition

이 명령은 태그 및 위치를 지원하는 리소스 유형에 대해서만 정책을 평가해야 함을 나타내는 "Indexed" 모드로 TagsPolicyDefinition이라는 정책 정의를 만듭니다.

매개 변수

-ApiVersion

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

Type:String
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

-ManagementGroupName

새 정책 정의의 관리 그룹의 이름입니다.

Type:String
Position:Named
Default value:None
Required:True
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

-Mode

정책 정의의 모드

Type:String
Position:Named
Default value:All
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

-Parameter

정책 정의에 대한 매개 변수 선언입니다. 매개 변수 선언을 포함하는 파일 이름의 경로이거나 매개 변수 선언을 문자열로 사용할 수 있습니다.

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

-Policy

정책 정의에 대한 정책 규칙을 지정합니다. JSON 형식의 정책을 포함하는 .json 파일 또는 문자열의 경로를 지정할 수 있습니다.

Type:String
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

-SubscriptionId

새 정책 정의의 구독 ID입니다.

Type:Nullable<T>[Guid]
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

입력

String

Nullable<T>[[System.Guid, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]

출력

PSObject