Azure Virtual Network Manager での Azure Policy を使用したネットワーク グループの構成

この記事では、Azure Virtual Network ManagerでAzure Policyがどのように使われてネットワークグループメンバーシップを条件付きで定義しているかを学びます。 Azure Policyを使ってネットワークグループのメンバーシップを定義することで、ネットワークリソースへの自動設定展開が可能となり、組織のためにスケーラブルで動的な仮想ネットワーク環境を構築することが可能になります。

Azure Policy の概要

Azure Policyは、Azure内のリソースのプロパティとあなたの望むビジネスルールを比較して評価します。 JSON 形式で記述されるこれらのビジネス ルールは、ポリシー定義と呼ばれます。 ビジネスルールを作成すると、ポリシー定義は管理グループ、サブスクリプション、リソースグループ、個別リソースなどAzureがサポートするリソースの範囲に割り当てられます。 ポリシー割り当ては、その割り当てのResource Manager範囲内のすべてのリソースに適用されます。 詳細については、Azure Policy のスコープに関するページでスコープの使用を参照してください。

ネットワーク グループ ポリシー定義

Azure Policy でポリシーの作成と実装は、ポリシー定義リソースの作成から始まります。 すべての政策定義には、執行のための条件と、条件が満たされた場合に起こる定義された効果があります。

Azure Virtual Network Managerのネットワークグループでは、ポリシー定義に条件を満たす仮想ネットワークをマッチングするための条件付き表現や、それらが参加するネットワークグループを指定します。 addToNetworkGroup 効果は、宛先ネットワーク グループにリソースを配置するために使用されます。 addToNetworkGroup 効果を使用したポリシー ルール定義の例を次に示します。 すべてのカスタム ポリシーでは、mode プロパティがネットワーク グループ リソース プロバイダーを対象とする Microsoft.Network.Data に設定されており、Azure Virtual Network Manager のポリシー定義を作成するために必要になります。

Azure Policyは現在、仮想ネットワークのネットワークグループメンバーシップの定義のみをサポートしています。 Azure Policyベースの動的ネットワークグループメンバーシップは、現在、テナント間仮想ネットワークには適用されません。 仮想ネットワークは手動でしか追加できません。 詳細については、 既知の制限事項をご覧ください。

"mode": "Microsoft.Network.Data",
"policyRule": {
      "if": {
        "allOf": [
          {
            "field": "Name",
            "contains": "-gen"
          }
        ]
      },
      "then": {
        "effect": "addToNetworkGroup",
        "details": {
          "networkGroupId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/myResourceGroup2/providers/Microsoft.Network/networkManagers/myAVNM/networkGroups/myNG"
        }
      }
}

重要

ポリシーを定義する際、 networkGroupId はサンプル定義に示されているように、ターゲットネットワークグループの完全なリソースIDでなければなりません。 ポリシー定義にはパラメータ化がサポートされていません。 ネットワーク グループをパラメーター化する必要がある場合は、Azure Resource Manager テンプレートを使用してポリシー定義と割り当てを作成できます。

Azure Virtual Network Manager で Azure Policy を使用すると、ポリシーはリソース プロバイダーのプロパティMicrosoft.Network.Dataを対象とします。 この行動のため、政策の定義にはpolicyTypeCustomが必要です。 その値をどう設定するかは、定義を作成する場所によって異なります。

  • Azure Virtual Network Manager ダッシュボードから: メンバーを動的に追加するポリシーを作成すると、Azure Virtual Network Manager により、ポリシーの作成時に policyTypeCustom に自動的に設定されます。 自分で設定する必要はありません。
  • Azure Policy またはその他のツールを使用する場合: Azure Virtual Network Manager ダッシュボードの外で ポリシー定義を作成するときは、定義内で policyTypeCustom に自分で設定してください。

policyType プロパティを Custom に設定したポリシー定義の例を次に示します。


"properties": {
      "displayName": "myProdAVNM",
      "policyType": "Custom",
      "mode": "Microsoft.Network.Data",
      "metadata": {
        "category": "Azure Virtual Network Manager",
        "createdBy": "-----------------------------",
        "createdOn": "2023-04-10T15:35:35.9308987Z",
        "updatedBy": null,
        "updatedOn": null
      }
}

ポリシー定義の構造についてさらに学習します。

ポリシー割り当てを作成する

仮想ネットワーク マネージャー の構成と同様に、ポリシー定義を作成してもすぐには有効になりません。 適用を開始するには、特定のスコープで評価する定義を割り当てるポリシー割り当てを作成する必要があります。 現在、スコープ内のすべてのリソースが定義に対して評価されます。これにより、複数の場所で割り当てることができる 1 つの再利用可能な定義を使用して、より詳細なグループ メンバーシップ制御を行うことができます。 Azure Policy の割り当て構造の詳細についてさらに学習します。

ポリシーの定義と割り当ては、Azure Virtual Network Manager または Azure Policy から作成可能です。

必要なアクセス許可

Azure Policy でネットワーク グループを使用するには、ユーザーに次のアクセス許可が必要です。

  • Microsoft.Authorization/policyassignments/WriteMicrosoft.Authorization/policydefinitions/Write が、割り当てるスコープで必要です。
  • Microsoft.Network/networkManagers/networkGroups/join/action ターゲットネットワークグループで必要です。 この権限により、ターゲットネットワークグループからメンバーリソースの追加および削除が可能になります。
  • セット定義を使用して複数のポリシーを同時に割り当てる場合は、同時に割り当てるすべての定義に対して Microsoft.Network/networkManagers/networkGroups/join/action 権限が必要です。

必要なアクセス許可を設定するには、ロールベースのアクセス制御を使用して組み込みロールをユーザーに割り当てることができます。

  • ターゲット ネットワーク グループへのネットワーク共同作成者ロール。
  • ターゲット スコープ レベルでのリソース ポリシー共同作成者ロール。

より細かなロールの割り当てを行うには、 アクセス許可と Microsoft.Network/networkManagers/networkGroups/join/action アクセス許可を使用して、policy/writeを作成できます。

重要

Azure PolicyでAzure Virtual Network Managerネットワークグループを変更するには、Azure Role-Based Access Control(RBAC)役割割り当てのみでアクセス権が与えられる必要があります。 従来の管理者またはレガシ承認はサポートされていません。 つまり、アカウントが共同管理者のサブスクリプションロールだけに割り当てられている場合、ネットワークグループに対する権限はありません。

必要なアクセス許可と共に、サブスクリプションと管理グループを次のリソース プロバイダーに登録する必要があります。

  • 仮想ネットワークを作成するには Microsoft.Network が必要です。
  • Azure Policy を使用するには Microsoft.PolicyInsights が必要です。

必要なプロバイダーを登録するには、Azure PowerShell では Register-AzResourceProvider を使用するか、Azure CLI では az provider register を使用します。

役に立つヒント

型によるフィルタリング

ポリシー定義を構成するときは、仮想ネットワークにスコープを設定するために type 条件を含めることをお勧めします。 この条件により、ポリシーは非仮想ネットワーク操作をフィルタリングし、ポリシーリソースの効率を向上させることができます。

リージョン分割

ポリシーリソースはグローバルであり、ポリシー定義の変更は地域に関係なく割り当て範囲内のすべてのリソースに適用されます。 地域別スライスや段階的な展開を希望する場合は、 where location in [] 条件の付けをお勧めします。 その後、ロケーションリストを段階的に拡大し、ネットワークグループのメンバーシップやその後の設定展開を段階的に展開できます。

割り当て範囲の設定

Azure管理グループを使ったベストプラクティスに従っているなら、すでにリソースを階層構造で整理しているかもしれません。 ポリシー割り当てを使えば、同じポリシー定義を階層内の複数の異なるスコープに割り当てることができ、ネットワークグループに適用可能なリソースをより細かく制御できます。

ネットワーク グループに関連付けられている Azure Policy 定義の削除

Azure Policyの定義が不要になる場合もあります。 シナリオとしては、ポリシーに関連付けられたネットワークグループが削除されたり、不要な使われていないポリシーがある場合が挙げられます。 ポリシーを削除するには、ポリシー関連付けオブジェクトを削除し、その後Azure Policyでポリシー定義を削除する必要があります。 削除が完了すると、新しい定義をネットワークグループに関連付ける際に定義名を再参照することはできません。

次のステップ