다음을 통해 공유


Azure Policy 정의 구조 기본 사항

Azure Policy 정의는 리소스 규정 준수 조건 및 조건 충족 시 미치는 영향을 설명합니다. 조건은 리소스 속성 필드 또는 을 필요한 값과 비교합니다. 리소스 속성 필드에는 별칭을 사용하여 액세스합니다. 리소스 속성 필드가 배열인 경우 특별한 배열 별칭을 사용하여 모든 배열 멤버의 값을 선택하고 각 멤버에 조건을 적용할 수 있습니다. 조건에 대해 자세히 알아보세요.

정책 할당을 사용하면 비용을 제어하고 리소스를 관리할 수 있습니다. 예를 들어, 특정 유형의 가상 머신만 허용되게 지정할 수 있습니다. 또는 리소스가 특정 태그를 갖도록 요구할 수 있습니다. 특정 범위의 할당은 해당 범위 이하의 모든 리소스에 적용됩니다. 리소스 그룹에 정책을 적용하면 해당 리소스 그룹의 모든 리소스에 해당 정책을 적용할 수 있습니다.

JSON을 사용하여 다음에 대한 요소가 포함된 정책 정의를 만듭니다.

  • displayName
  • description
  • mode
  • version
  • metadata
  • parameters
  • policyRule
    • 논리적 평가
    • effect

예를 들어 다음 JSON에서는 리소스가 배포되는 위치를 제한하는 정책을 보여줍니다.

{
  "properties": {
    "displayName": "Allowed locations",
    "description": "This policy enables you to restrict the locations your organization can specify when deploying resources.",
    "mode": "Indexed",
    "metadata": {
      "version": "1.0.0",
      "category": "Locations"
    },
    "parameters": {
      "allowedLocations": {
        "type": "array",
        "metadata": {
          "description": "The list of locations that can be specified when deploying resources",
          "strongType": "location",
          "displayName": "Allowed locations"
        },
        "defaultValue": [
          "westus2"
        ]
      }
    },
    "policyRule": {
      "if": {
        "not": {
          "field": "location",
          "in": "[parameters('allowedLocations')]"
        }
      },
      "then": {
        "effect": "deny"
      }
    }
  }
}

자세한 내용은 정책 정의 스키마를 참조하세요. Azure Policy 기본 제공 및 패턴은 Azure Policy 샘플에 있습니다.

표시 이름 및 설명

displayNamedescription을 사용하여 정책 정의를 식별하고 정의가 사용되는 시기에 대한 컨텍스트를 제공합니다. displayName의 최대 길이는 128자이고 description 최대 길이는 512자입니다.

참고 항목

정책 정의를 만들거나 업데이트하는 동안 id, typename은 JSON 외부 속성에 의해 정의되며 JSON 파일에는 필요하지 않습니다. SDK를 통해 정책 정의를 가져오면 id, typename 속성이 JSON의 일부로 반환되지만 각각은 정책 정의와 관련된 읽기 전용 정보입니다.

정책 유형

policyType 속성을 설정할 수 없지만 SDK에서 반환하고 포털에 표시되는 세 가지 값이 있습니다.

  • Builtin: Microsoft는 이러한 정책 정의를 제공하고 유지 관리합니다.
  • Custom: 고객에 의해 생성된 모든 정책 정의에는 이 값이 있습니다.
  • Static: Microsoft 소유권규제 규정 준수 정책 정의를 나타냅니다. 이러한 정책 정의에 대한 준수 결과는 Microsoft 인프라에 대한 Microsoft 이외의 감사 결과입니다. Azure Portal에서 이 값은 Microsoft에서 관리되는 것으로 표시되기도 합니다. 자세한 내용은 클라우드의 공유 책임을 참조하세요.

모드

mode는 정책이 Azure Resource Manager 속성 또는 리소스 공급자 속성 중 무엇을 대상으로 하는지 따라 구성됩니다.

Resource Manager 모드

mode는 정책 정의에 대해 평가할 리소스 종류를 결정합니다. 지원되는 모드는 다음과 같습니다.

  • all: 리소스 그룹, 구독 및 모든 리소스 종류를 평가합니다.
  • indexed: 태그 및 위치를 지원하는 리소스 종류만 평가합니다.

예를 들어 리소스 Microsoft.Network/routeTables는 태그와 위치를 지원하고 두 모드 모두에서 계산됩니다. 하지만 리소스 Microsoft.Network/routeTables/routes에는 태그를 지정할 수 없으며 indexed 모드에서 평가되지 않습니다.

대부분의 경우 modeall로 설정하는 것이 좋습니다. 포털을 통해 생성된 모든 정책 정의는 all 모드를 사용합니다. PowerShell 또는 Azure CLI를 사용하는 경우 mode 매개 변수를 수동으로 지정할 수 있습니다. 정책 정의에 mode 값이 포함되지 않으면 기본적으로 Azure PowerShell에서는 all로 설정되고 Azure CLI에서는 null로 설정됩니다. null 모드는 이전 버전과의 호환성을 지원하기 위해 indexed를 사용하는 것과 같습니다.

indexed는 태그 또는 위치를 시스템에 적용하는 정책을 만들 때 사용해야 합니다. 이 모드는 반드시 사용해야 하는 것은 아니지만, 사용하는 경우 태그와 위치를 지원하지 않는 리소스가 규정 준수 결과에 미준수 항목으로 표시되지 않습니다. 예외는 리소스 그룹 및 구독입니다. 리소스 그룹 또는 구독에서 위치 또는 태그를 적용하는 정책 정의는 modeall로 설정하고 특히, Microsoft.Resources/subscriptions/resourceGroups 또는 Microsoft.Resources/subscriptions 유형을 대상으로 지정해야 합니다. 예제는 패턴: 태그 - 샘플 #1을 참조하세요. 태그를 지원하는 리소스 목록은 Azure 리소스에 대한 태그 지원을 참조하세요.

리소스 공급자 모드

다음 리소스 공급자 모드는 완전히 지원됩니다.

  • Kubernetes 클러스터 및 Pod, 컨테이너, 수신 등의 구성 요소를 관리하기 위한 Microsoft.Kubernetes.Data. Azure Kubernetes Service 클러스터 및 Azure Arc 지원 Kubernetes 클러스터를 지원합니다. 해당 리소스 공급자 모드를 사용하는 정의 파일은 감사, 거부사용 안 함 효과를 사용합니다.
  • Microsoft.KeyVault.DataAzure Key Vault에서 자격 증명 모음 및 인증서를 관리하는 데 사용됩니다. 이러한 정책 정의에 대한 자세한 내용은 Azure Key Vault와 Azure Policy 통합을 참조하세요.
  • Microsoft.Network.Data Azure Policy를 사용하여 Azure Virtual Network Manager 사용자 지정 멤버 자격 정책을 관리합니다.

다음 리소스 공급자 모드는 현재 미리 보기로 지원됩니다.

  • Azure Policy를 사용하여 관리 HSM(하드웨어 보안 모듈) 키를 관리하기 위한 Microsoft.ManagedHSM.Data입니다.
  • Microsoft.DataFactory.Data Azure Policy를 사용하여 허용 목록에 지정되지 않은 Azure Data Factory 아웃바운드 트래픽 도메인 이름을 거부합니다. 이 리소스 공급자 모드는 적용 전용이며 공개 미리 보기에서 준수를 보고하지 않습니다.
  • Azure Machine Learning 모델 배포를 관리하기 위한 Microsoft.MachineLearningServices.v2.Data입니다. 이 리소스 공급자 모드는 새로 만들어지고 업데이트된 구성 요소에 대한 준수를 보고합니다. 공개 미리 보기 동안에는 규정 준수 레코드가 24시간 동안 유지됩니다. 이러한 정책 정의가 할당되기 전에 있던 모델 배포는 규정 준수를 보고하지 않습니다.

참고 항목

명시적으로 언급되지 않는 한 리소스 공급자 모드는 기본 제공 정책 정의만 지원하며 구성 요소 수준에서는 예외가 지원되지 않습니다.

Azure Policy 버전 관리가 릴리스되면 다음 리소스 공급자 모드는 기본 제공 버전 관리를 지원하지 않습니다.

  • Microsoft.DataFactory.Data
  • Microsoft.MachineLearningServices.v2.Data
  • Microsoft.ManagedHSM.Data

버전(미리 보기)

기본 제공 정책 정의는 동일한 definitionID를 사용하여 여러 버전을 호스팅할 수 있습니다. 버전 번호를 지정하지 않으면 모든 환경에 최신 버전의 정의가 표시됩니다. 특정 버전의 기본 제공 기능을 보려면 API, SDK 또는 UI에서 지정해야 합니다. 할당 내에서 특정 버전의 정의를 참조하려면 할당 내 정의 버전을 참조하세요.

Azure Policy 서비스는 version, previewdeprecated 속성을 사용하여 다음 수준을 전달합니다.

기본 제공 정책 정의 또는 이니셔티브 및 상태로 변경합니다. version의 형식은 {Major}.{Minor}.{Patch}입니다. deprecated 또는 preview와 같은 특정 상태가 version 속성에 추가되거나 다른 속성에 부울로 추가됩니다.

  • 주 버전(예: 2.0.0): 주요 규칙 논리 변경, 매개 변수 제거, 기본 적용 효과 추가 등 호환성이 손상되는 변경을 도입합니다.
  • 부 버전(예: 2.1.0): 사소한 규칙 논리 변경, 새 매개 변수 허용 값 추가, roleDefinitionIds 변경, 이니셔티브 내 정의 추가 또는 이동과 같은 변경 내용을 도입합니다.
  • 패치 버전(예: 2.1.4): 문자열 또는 메타데이터 변경 내용 및 비상 보안 시나리오를 도입합니다(드문 경우).

기본 제공되는 Azure Policy 버전 관리에 대한 자세한 내용은 기본 제공 버전 관리를 참조하세요. 정책이 사용되지 않음 또는 미리 보기 상태인 것의 의미를 자세히 알아보려면 미리 보기 및 사용되지 않음 정책을 참조하세요.

메타데이터

선택적 metadata 속성은 정책 정의에 대한 정보를 저장합니다. 고객은 metadata에서 조직에 유용한 모든 속성 및 값을 정의할 수 있습니다. 그러나 Azure Policy 및 기본 제공에서 사용되는 몇 가지 ‘공통’ 속성이 있습니다.metadata 속성의 제한은 1,024자입니다.

공통 메타데이터 속성

  • version(문자열): 정책 정의 콘텐츠의 버전에 대한 세부 정보를 추적합니다.
  • category(문자열): Azure Portal에서 정책 정의가 표시되는 범주를 결정합니다.
  • preview(부울): 정책 정의가 미리 보기인 경우에 대한 True 또는 False 플래그입니다.
  • deprecated(부울): 정책 정의가 사용되지 않음으로 표시된 경우 True 또는 False 플래그입니다.
  • portalReview(문자열): 필요한 입력에 관계없이 포털에서 매개 변수를 검토해야 하는지 여부를 결정합니다.

정의 위치

이니셔티브 또는 정책을 만드는 동안 정의 위치를 지정해야 합니다. 정의 위치는 관리 그룹 또는 구독이어야 합니다. 이 위치는 이니셔티브 또는 정책을 할당할 수 있는 범위를 결정합니다. 리소스는 할당 대상으로 지정할 정의 위치의 계층 구조 내의 직접 멤버 또는 자식 멤버여야 합니다.

정의 위치는 다음과 같습니다.

  • 구독 - 해당 구독 내의 리소스만 정책 정의에 할당할 수 있습니다.
  • 관리 그룹 - 자식 관리 그룹과 자식 구독 내의 리소스만 정책 정의에 할당할 수 있습니다. 정책 정의를 여러 구독에 적용하려는 경우 위치는 각 구독이 포함된 관리 그룹이어야 합니다.

자세한 내용은 Azure Policy의 범위 이해를 참조하세요.

다음 단계