この記事では、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 により、ポリシーの作成時に
policyTypeがCustomに自動的に設定されます。 自分で設定する必要はありません。 -
Azure Policy またはその他のツールを使用する場合: Azure Virtual Network Manager ダッシュボードの外で ポリシー定義を作成するときは、定義内で
policyTypeをCustomに自分で設定してください。
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/WriteとMicrosoft.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でポリシー定義を削除する必要があります。 削除が完了すると、新しい定義をネットワークグループに関連付ける際に定義名を再参照することはできません。
次のステップ
- Azure Virtual Network ManagerでAzure Policyでネットワークグループメンバーシップを定義する方法を学びましょう。
- Azure Virtual Network Managerのネットワークグループについて詳しく学びましょう。
- Azure Virtual Network Manager インスタンスを作成します。
- Azure Virtual Network Manager での構成のデプロイについて説明します。
- SecurityAdmin 構成を使用してネットワーク トラフィックをブロックする方法を学習します。