使用 Azure 原則 在 Azure 虛擬網絡 Manager 中定義動態網路群組成員資格
在本文中,您將瞭解如何使用 Azure 原則 條件語句來建立具有動態成員資格的網路群組。 您可以從下拉功能表中選取參數和運算符,以使用基本編輯器建立這些條件語句。 此外,您將瞭解如何使用進階編輯器來更新現有網路群組的條件語句。
Azure 原則 是一項服務,可讓您大規模強制執行每個資源控管。 它可用來指定定義群組成員資格的條件表達式,而不是明確列出虛擬網路。 此條件會繼續以動態方式為您的網路群組提供電源,讓虛擬網路加入並讓群組在滿足條件變更時自動離開群組,而不需要網路管理員作業。
必要條件
參數和運算子
使用條件語句選取具有動態成員資格的虛擬網路。 針對需要進一步縮小所選虛擬網路的案例,您可以使用 AND 和 OR 等邏輯運算符來定義多個條件語句。
支援的參數清單:
參數 | 進階編輯器欄位 |
---|---|
名稱 | Name |
識別碼 | Id |
Tags (標籤) | tag['tagName'] |
訂用帳戶名稱 | [subscription().Name] |
訂用帳戶識別碼 | [subscription().Id] |
訂用帳戶標籤 | [subscription().tags['tagName']] |
資源群組名稱 | [resourceGroup().Name] |
資源群組標識碼 | [resourceGroup().Id] |
資源群組標籤 | [resourceGroup().tags['tagName']] |
支援的運算子清單:
運算子 | 進階編輯器 |
---|---|
Contains | "contains": <> |
不包含 | "notcontains": <> |
In | "in": <> |
不在 | "notin": <> |
等於 | "equals": <> |
不相等 | "notequals": <> |
包含任何 | "contains": <> |
包含所有 | "contains": <> |
不包含任何 | "notcontains": <> |
Exists | "exists": true |
不存在 | "exists": false |
注意
Exists 和 Not exists 運算子只會與 Tags 參數搭配使用。
基本編輯器
假設您的訂用帳戶中有下列虛擬網路。 每個虛擬網路都有一個名為 environment 的相關聯標籤,具有生產或測試的個別值。
虛擬網路 | 標記名稱 | 標籤值 |
---|---|---|
myVNet01-EastUS | environment | 生產 |
myVNet01-WestUS | environment | 生產 |
myVNet02-WestUS | environment | 測試 |
myVNet03-WestUS | environment | 測試 |
您只想要選取其標籤具有等於生產環境之索引鍵值組的虛擬網路。 若要開始使用基本編輯器來建立條件語句,您需要建立新的網路群組。
移至您的 Azure 虛擬網絡 Manager 實例,然後選取 [設定] 底下的 [網络群組]。 然後選取 [+ 建立 ] 以建立新的網路群組。
輸入網路群組的 [ 名稱 ] 和選擇性 [描述 ],然後選取 [ 新增]。
從清單中選取網路群組,然後選取 [建立 Azure 原則]。
輸入原則 名稱 ,並保留 [範圍 ] 選取專案,除非需要變更。
在 [準則] 底下,從 [參數] 下拉式清單中選取 [卷標],然後從 [運算符] 底下的下拉式清單中選取 [索引鍵值組]。
在 [條件] 下輸入環境和生產環境,然後選取 [預覽資源]。 您應該會看到 myVNet01-EastUS 和 myVNet01-WestUS 顯示在清單中。
選取 [關閉] 和 [儲存]。
幾分鐘后,選取您的網路群組,然後選取 [設定] 下的 [群組成員]。 您應該只會看到 myVNet01-WestUS 和 myVNet01-WestUS。
重要
基本編輯器只能在建立 Azure 原則 期間使用。 建立原則之後,虛擬網路管理員的 [原則] 區段中或透過 Azure 原則,所有編輯都會使用 JSON 來完成。
進階編輯器
在建立網路群組或更新現有網路群組時,可以使用進階編輯器來選取虛擬網路。 以 JSON 為基礎,進階編輯器適用於建立和更新有經驗的使用者的複雜 Azure 原則 條件語句。
使用進階編輯器建立新的原則
移至您的 Azure 虛擬網絡 Manager 實例,然後選取 [設定] 底下的 [網络群組]。 然後選取 [+ 建立 ] 以建立新的網路群組。
輸入網路群組的 [ 名稱 ] 和選擇性 [描述 ],然後選取 [ 新增]。
從清單中選取網路群組,然後選取 [建立 Azure 原則]。
輸入原則 名稱 ,並保留 [範圍 ] 選取專案,除非需要變更。
在 [準則] 底下,選取 [進階][JSON] 編輯器以開啟編輯器。
在文字框中輸入下列 JSON 程式代碼,然後選取 [ 儲存]:
{ "field": "Name", "contains": "myVNet01" }
幾分鐘后,選取您的網路群組,然後選取 [設定] 下的 [群組成員]。 您應該只會看到 myVNet01-WestUS 和 myVNet01-EastUS。
重要
您使用虛擬網路管理員建立的任何 Azure 原則都會存在於 Azure 原則 服務區域中。 刪除虛擬網路管理員實例時,它們將不會從您的 Azure 原則 指派和定義中移除。 這需要手動移除原則。 瞭解如何移除 Azure 原則
編輯現有的原則
選取在上一節中建立的網路群組。 然後選取 [原則] 索引標籤。
選取在上一節中建立的原則。
您會在進階編輯器檢視中看到網路群組的條件語句,如下所示:
[ { "field": "Name", "contains": "myVNet01" } ]
若要為不包含WestUS的 Name 欄位新增另一個條件語句,請在進階編輯器中輸入下列內容:
{ "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"
}
]
}
和 "anyOf"
都"allOf"
用於程式代碼中。 由於 AND 運算子是清單中的最後一個,所以它位於包含具有 OR 運算子之兩個條件語句的程式代碼外部部分。
範例 3:搭配進階編輯器使用自定義標籤值
在此範例中,會建立條件語句,以尋找名稱包含 myVNet 且 環境 標籤等於 生產環境的虛擬網路。
進階編輯器:
{ "allOf": [ { "field": "Name", "contains": "myVNet" }, { "field": "tags['environment']", "equals": "production" } ] }
注意
條件應篩選資源類型 Microsoft.Network/virtualNetwork,以改善效率。 此條件會在透過入口網站指定的任何條件上為您加上。
下一步
- 了解 網路群組。
- 建立 Azure 虛擬網絡 Manager 實例。
- 建立和管理原則以強制執行合規性
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應