次の方法で共有


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

この記事では、動的ネットワーク グループ メンバーシップを定義するために Azure Virtual Network Manager で Azure Policy を使用する方法について説明します。 動的ネットワーク グループを使用すると、スケーラブルで動的に適応する仮想ネットワーク環境を組織内に作成できます。

Azure Policy の概要

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

Note

Azure Policy は、動的ネットワーク グループ メンバーシップの定義にのみ使用されます。

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

Azure Policy でポリシーの作成と実装は、ポリシー定義リソースの作成から始まります。 すべてのポリシー定義には、適用条件と、条件が満たされた場合に発生する定義済みの効果が含まれています。

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

"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 リソース プロバイダー プロパティになります。 このため、ポリシー定義で CustompolicyType を指定する必要があります。 Virtual Network Manager でメンバーを動的に追加するポリシーを作成すると、ポリシーの作成時に自動的に適用されます。 custom は、Azure Policy または Virtual Network Manager ダッシュボードの外部の他のツールを使用して新しいポリシー定義を作成する場合にのみ選択する必要があります。

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
      }
}

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

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

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

ポリシー定義と割り当ては、API/PS/CLI または 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 アクセス許可を使用してカスタム ロールを作成できます。

重要

AVNM 動的グループを変更するには、Azure RBAC ロールの割り当てのみを使用してアクセス権を付与する必要があります。 Classic Admin/レガシ承認はサポートされていません。つまり、アカウントに共同管理者サブスクリプション ロールのみが割り当てられた場合、AVNM 動的グループに対するアクセス許可は付与されません。

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

  • 仮想ネットワークを作成するには 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 でポリシー定義を削除する必要があります。 削除が完了すると、ネットワーク グループに新しい定義を関連付けるときに。その定義名を再利用したり、再参照したりすることはできません。

次のステップ