使用 Azure 原則在 Azure Virtual Network Manager 中定義動態網路群組成員資格
在本文中,您會了解如何使用 Azure 原則條件陳述式來建立具有動態成員資格的網路群組。 您可以從下拉式功能表中選取參數和運算子,以使用基本編輯器建立這些條件陳述式。 您也將會了解如何使用進階編輯器來更新現有網路群組的條件陳述式。
Azure 原則是一項服務,可讓您大規模強制執行每個資源的治理。 可以用來指定可定義群組成員資格的條件運算式,而不是明確列出虛擬網路。 此條件會繼續以動態方式支援您的網路群組,讓虛擬網路可以在條件變更時自動聯結或離開群組,而不需要執行 Network Manager 作業。
必要條件
- 具有有效訂用帳戶的 Azure 帳戶。 免費建立帳戶。
- 若要修改動態網路群組,您必須獲得角色型存取控制的存取權。 不支援傳統管理員/舊版授權。
參數和運算子
具有動態成員資格的虛擬網路是使用條件陳述式進行選取的。 針對需要進一步縮小所選取虛擬網路的案例,您可以使用 AND 和 OR 等邏輯運算子來定義多個條件陳述式。
支援的參數清單:
參數 | 進階編輯器欄位 |
---|---|
名稱 | Name |
識別碼 | Id |
Tags (標籤) | tag['tagName'] |
訂用帳戶名稱 | [subscription().Name] |
訂用帳戶識別碼 | [subscription().Id] |
訂用帳戶標籤 | [subscription().tags['tagName']] |
資源群組名稱 | [resourceGroup().Name] |
資源群組識別碼 | [resourceGroup().Id] |
資源群組標籤 | [resourceGroup().tags['tagName']] |
支援的運算子清單:
運算子 | 進階編輯器 |
---|---|
Contains | "contains": <> |
Doesn't contain | "notcontains": <> |
In | "in": <> |
Not In | "notin": <> |
等於 | "equals": <> |
Doesn't equal | "notequals": <> |
Contains any of | "contains": <> |
Contains all of | "contains": <> |
Doesn't contain any of | "notcontains": <> |
Exists | "exists": true |
Doesn't exist | "exists": false |
注意
Exists 和 Does not exist 運算子只能與 Tags 參數搭配使用。
基本編輯器
假設您的訂用帳戶中有下列虛擬網路。 每個虛擬網路都有一個名為環境的相關聯標籤,含有實際執行和測試的值。
虛擬網路 | 標記名稱 | 標籤值 |
---|---|---|
myVNet01-EastUS | environment | 生產 |
myVNet01-WestUS | environment | 生產 |
myVNet02-WestUS | environment | 測試 |
myVNet03-WestUS | environment | 測試 |
您只想選取標籤中環境的索引鍵/值組等於實際執行的虛擬網路。 若要開始使用基本編輯器來建立條件陳述式,您需要建立新的網路群組。
移至您的 Azure Virtual Network Manager 執行個體,然後選取 [設定] 底下的 [網路群組]。 然後選取 [+ 建立] 以建立新的網路群組。
輸入網路群組的 [名稱] 和選擇性輸入 [描述] ,然後選取 [新增]。
從清單中選取網路群組,然後選取 [建立 Azure 原則]。
輸入 [原則名稱],並保留 [範圍] 選取項目,除非需要變更。
在 [準則] 底下,從 [參數] 底下的下拉式清單中選取 [標籤],然後從 [運算子] 底下的下拉式清單中選取 [索引鍵值組]。
在 [條件] 底下輸入環境和實際執行,然後選取 [預覽資源]。 清單中應該會顯示 myVNet01-EastUS 和 myVNet01-WestUS。
選取 [關閉] 和 [儲存]。
幾分鐘之後,選取您的網路群組,然後選取 [設定] 下的 [群組成員]。 您應該只會看到 myVNet01-WestUS 和 myVNet01-WestUS。
重要
基本編輯器只能在建立 Azure 原則期間使用。 建立原則之後,所有編輯都必須在 Virtual Network Manager 的 [原則] 區段中使用 JSON 或透過 [Azure 原則] 來執行。
進階編輯器
進階編輯器可在建立網路群組期間或更新現有的網路群組時用來選取虛擬網路。 以 JSON 為基礎,進階編輯器適用於由有經驗的使用者建立和更新複雜 Azure 原則條件陳述式。
使用進階編輯器建立新原則
移至您的 Azure Virtual Network Manager 執行個體,然後選取 [設定] 底下的 [網路群組]。 然後選取 [+ 建立] 以建立新的網路群組。
輸入網路群組的 [名稱] 和選擇性輸入 [描述] ,然後選取 [新增]。
從清單中選取網路群組,然後選取 [建立 Azure 原則]。
輸入 [原則名稱],並保留 [範圍] 選取項目,除非需要變更。
在 [準則] 底下,選取 [進階 (JSON) 編輯器] 以開啟編輯器。
在文字輸入框中輸入下列 JSON 程式碼,然後選取 [儲存]:
{ "field": "Name", "contains": "myVNet01" }
幾分鐘之後,選取您的網路群組,然後選取 [設定] 下的 [群組成員]。 您應該只會看到 myVNet01-WestUS 和 myVNet01-EastUS。
重要
您使用 Virtual Network Manager 建立的任何 Azure 原則都會存在於 Azure 原則服務區域中。 刪除 Virtual Network Manager 執行個體時,並不會從您的 Azure 原則指派和定義中移除這些原則。 您必須手動移除原則。 了解如何移除 Azure 原則
編輯現有的原則
選取上一節中建立的網路群組。 然後選取 [原則] 索引標籤。
選取在上一節中建立的原則。
您會在進階編輯器檢視中看到網路群組的條件陳述式,如下所示:
[ { "field": "Name", "contains": "myVNet01" } ]
若要為不包含 WestUS的 [名稱] 欄位新增另一個條件陳述式,請在進階編輯器中輸入下列命令:
{ "allOf": [ { "field": "Name", "contains": "VNet01" }, { "field": "Name", "notcontains": "WestUS" } ] }
"allOf"
參數包含以 AND 邏輯運算子分隔的條件陳述式。選取 [儲存]。
幾分鐘之後,選取您的網路群組,然後選取 [設定] 下的 [群組成員]。 您應該只會看到 myVNet01-EastUS。
如需您可以搭配進階編輯器使用之參數和運算子的完整清單,請參閱參數和運算子。
更多範例
以下是進階編輯器中條件陳述式的其他範例。
範例 1:僅限 OR 運算子
此範例會使用 OR 邏輯運算子來分隔兩個條件陳述式。
基本編輯器:
進階運算子:
{ "anyOf": [ { "field": "Name", "contains": "myVNet01" }, { "field": "Name", "contains": "myVNet02" } ] }
"anyOf"
參數包含以 OR 邏輯運算子分隔的條件陳述式。
範例 2:同時使用 AND 和 OR 運算子
基本編輯器:
進階編輯器:
{
"allOf": [
{
"anyOf": [
{
"field": "Name",
"contains": "myVNet01"
},
{
"field": "Name",
"contains": "myVNet02"
}
]
},
{
"field": "Name",
"notcontains": "West"
}
]
}
"allOf"
和 "anyOf"
都在程式碼中使用。 因為 AND 運算子是清單中的最後一個,所以其為包含兩個條件陳述式與 OR 運算子的程式碼外部部分。
範例 3:在進階編輯器中使用自訂標籤值
在此範例中,會建立條件陳述式,以尋找名稱包含 myVNet 且環境標籤等於實際執行的虛擬網路。
進階編輯器:
{ "allOf": [ { "field": "Name", "contains": "myVNet" }, { "field": "tags['environment']", "equals": "production" } ] }
注意
條件應該篩選 Microsoft.Network/virtualNetwork 資源類型,以改善效率。 此條件會在透過入口網站指定的任何條件上為您加上。
下一步
- 了解網路群組。
- 建立 Azure Virtual Network Manager 執行個體。
- 建立和管理原則來強制執行合規性