Azure Policy enrollment structure (Preview)

Azure Policy Enrollmentは、Enroll Enforcement モードで設定されたポリシー割り当ての強制パスに、選択されたリソース階層や個別リソースを追加します。 登録済みリソースは割り当てによって評価され、リソースの作成や更新時にポリシー効果が適用されます。 割り当ての範囲内であっても登録されていないリソースはコンプライアンス記録が生成されますが、ポリシー効果は適用されません。 この方法は、限られた範囲から始めて強制効果を検証し、徐々にサブスコープを割り当てに追加したい場合に有用です。

JavaScript Object Notation(JSON)を使ってポリシー登録を作成します。 保険登録には以下の要素が含まれています:

ポリシー登録は、リソース階層上の子オブジェクトとして作成されるか、登録されている個々のリソースです。 登録は、登録すべきリソースの範囲内で作成可能です。 登録の割り当てがイニシアチブの場合、そのイニシアチブ内のポリシー定義の一部を参照することも可能です。

例えば、以下のJSONは「 resourceShouldBeCompliantInit」という割り当てのサブスクリプションに関するポリシー登録を示しています。 登録はイニシアチブ内の2つのポリシー定義、すなわち requiredTagsallowedLocations ポリシー定義参照IDに適用されます。

{
  "id": "/subscriptions/{subId}/providers/Microsoft.Authorization/policyEnrollments/resourceShouldBeCompliant",
  "apiVersion": "2025-02-01-preview",
  "name": "resourceShouldBeCompliant",
  "type": "Microsoft.Authorization/policyEnrollments",
  "properties": {
    "displayName": "Enroll subscription in resource compliance policy",
    "description": "Enrolls the subscription into the resource compliance initiative assignment.",
    "policyAssignmentId": "/subscriptions/{mySubscriptionID}/providers/Microsoft.Authorization/policyAssignments/resourceShouldBeCompliantInit",
    "policyDefinitionReferenceIds": [
      "requiredTags",
      "allowedLocations"
    ],
    "assignmentScopeValidation": "Default"
  }
}

保険契約の作成

ポリシー登録は、Azure CLI、ARMテンプレート、Bicep、またはAzAPIプロバイダーを使ったTerraformを使って作成・管理できます。 あなたが言及しているポリシー割り当てはすでに存在し、 Enroll Enforcementモードで設定されている必要があります。

表示名と説明

displayNamedescriptionを使ってポリシー登録を特定し、特定のリソースや範囲との使用状況を把握します。 displayName の最大長は 128 文字で、description の最大長は 512 文字です。

ポリシーの割り当て ID

このフィールドは、ポリシーの割り当てまたはイニシアティブの割り当ての完全なパス名にする必要があります。 参照された割り当ては Enroll 強制モードを使用してポリシー登録を作成または更新しなければなりません。 policyAssignmentId は文字列であり、配列ではありません。 このプロパティは、どの割り当てが親リソース階層または個別リソースに強制を適用するかを定義します。

ポリシー定義参照ID

policyAssignmentIdがイニシアチブ割り当ての場合、policyDefinitionReferenceIdsプロパティはイニシアチブ内のどのポリシー定義が適用されるかを指定するために使われることがあります。 リソースは一つ以上のポリシー定義に登録されている場合、このプロパティは 配列となります。 値は、policyDefinitions.policyDefinitionReferenceId フィールドのイニシアティブ定義内の値と一致する必要があります。

リソース セレクター

登録はオプションの不動産 resourceSelectorsをサポートします。 このプロパティは、リソースの種類、リソースの位置、またはリソースに位置があるかどうかに基づいて、特定のサブセットへの 登録 を段階的にロールアウトまたはロールバックさせることを可能にします。 リソース セレクターの使用方法の詳細については、割り当ての構造に関する記事を参照してください。 以下のJSONはリソースセレクターを使用した例の登録です。 この例ではwestuseastus、ポリシー割り当てにはリソースのみが登録されます。

{
  "properties": {
    "policyAssignmentId": "/subscriptions/{subId}/providers/Microsoft.Authorization/policyAssignments/ResourceLimit",
    "resourceSelectors": [
      {
        "name": "SDPRegions",
        "selectors": [
          {
            "kind": "resourceLocation",
            "in": [
              "eastus",
              "westus"
            ]
          }
        ]
      }
    ]
  },
  "systemData": { ...
  },
  "id": "/subscriptions/{subId}/providers/Microsoft.Authorization/policyEnrollments/ResourceLimitEnrollment",
  "type": "Microsoft.Authorization/policyEnrollments",
  "name": "ResourceLimitEnrollment"
}

以下のリソースセレクタ kinds ポリシー登録オブジェクトでサポートされています:

  • resourceLocation: このプロパティは、場所に基づいて資源を選択するために使用されます。 resourceWithoutLocation と同じリソース セレクターで使用することはできません。
  • resourceType: このプロパティは、型に基づいてリソースを選択するために使用されます。
  • resourceWithoutLocation: このプロパティは、場所のないサブスクリプション レベルのリソースを選択するために使用されます。 現在サポートされているのは、subscriptionLevelResources だけです。 resourceLocation と同じリソース セレクターで使用することはできません。
  • in: 指定した kind に対して許可される値の一覧です。 notIn とは使用できません。 最大 50 個の値を含めることができます。
  • notIn: 指定した kind に対して許可されない値の一覧です。 in とは使用できません。 最大 50 個の値を含めることができます。

リソース セレクターには、複数の selectors を含めることができます。 リソース セレクターに適用するには、リソースがそのすべてのセレクターで指定されている要件を満たしている必要があります。 さらに、1回の登録で最大10 resourceSelectors を指定できます。 範囲内のリソースは、これらのリソース選択条件のいずれかを満たしたときに登録されます。

割り当て範囲検証

異なる範囲での課題登録を許可するかどうかを制御します。 このプロパティの使用例を以下に示します。

{
  "properties": {
    "policyAssignmentId": "/providers/Microsoft.Management/managementGroups/{mgName}/providers/Microsoft.Authorization/policyAssignments/CostManagement",
    "policyDefinitionReferenceIds": [
      "limitSku",
      "limitType"
    ],
    "assignmentScopeValidation": "DoNotValidate"
  },
  "systemData": { ...
  },
  "id": "/subscriptions/{subId}/providers/Microsoft.Authorization/policyEnrollments/DemoExpensiveVM",
  "type": "Microsoft.Authorization/policyEnrollments",
  "name": "DemoExpensiveVM"
}

assignmentScopeValidationの許容値はDefaultDoNotValidateです。 指定がない場合は、既定の検証プロセスが発生します。

登録更新

現在、ポリシー登録はPATCH操作を行う際にのみ、assignmentScopeValidationresourceSelectors物件の更新を支持しています。

{
  "properties": {
    "assignmentScopeValidation": "Default",
    "resourceSelectors": [
      {
        "name": "SDPRegions",
        "selectors": [
          {
            "kind": "resourceLocation",
            "in": [
              "eastus",
              "westus"
            ]
          }
        ]
      }
    ]
  }
}

ポリシー登録を削除する

保険契約の登録を削除すると、その登録リソースが削除されます。 登録を削除しても、登録が参照する基礎となるポリシー割り当ては削除されず、登録された範囲で割り当てられ続けます。

リストの保険登録

スコープでポリシー登録をリストアップすると、デフォルトの回答にはその範囲の任意の部分に適用される登録が含まれます。 回答には親スコープからの登録やサブスコープからの登録が含まれます。

リストフィルターを使って、レスポンスに継承された登録を含めるか、要求された範囲で作成された登録のみを含めるかを制御します。

スコープの有効登録数を理解したいときは atScope() を使いましょう。 このフィルターは、要求されたスコープおよび親スコープでのポリシー登録を返します。

az policy enrollment list \
  --scope "/subscriptions/{subscriptionId}" \
  --filter "atScope()"

atExactScope()リクエストされたスコープで直接作成された登録リソースのみを管理したい場合に使ってください。

az policy enrollment list \
  --scope "/subscriptions/{subscriptionId}" \
  --filter "atExactScope()"

例えば、サブスクリプションのスコープで3つの登録が作成され、親管理グループから4つの登録が継承されている場合、atScope()は7つの登録すべてを返します。 atExactScope()はサブスクリプション範囲で作成された3つの登録のみを返します。

Filter 説明
atScope() 返品ポリシーは、要求されたスコープおよび親スコープでの登録です。
atExactScope() 返品ポリシーの登録は、希望された範囲でのみ行われます。

次のステップ