Azure 原則定義結構基本資料
Azure 原則定義會描述資源合規性條件,以及符合條件時所要採取的效果。 條件會與必要值比較資源屬性欄位或值。 資源屬性欄位是使用別名來存取。 當資源屬性欄位是陣列時,您可以使用特殊的陣列別名,選取所有陣列成員的值,並套用條件至每個陣列成員。 深入了解條件。
透過使用原則指派,您可以控制成本和管理資源。 例如,您可以指定只允許特定的虛擬機器類型。 或者,您可以要求資源具備特定標籤。 範圍內的指派會套用至該範圍和以下範圍內的所有資源。 如果套用原則指派至資源群組,即適用於該資源群組中的所有資源。
您會使用 JSON 建立一個原則定義,包含下列項目的元素:
displayName
description
mode
version
metadata
parameters
policyRule
- 邏輯評估
effect
例如,下列 JSON 示範一個會限制資源部署位置的原則:
{
"properties": {
"displayName": "Allowed locations",
"description": "This policy enables you to restrict the locations your organization can specify when deploying resources.",
"mode": "Indexed",
"metadata": {
"version": "1.0.0",
"category": "Locations"
},
"parameters": {
"allowedLocations": {
"type": "array",
"metadata": {
"description": "The list of locations that can be specified when deploying resources",
"strongType": "location",
"displayName": "Allowed locations"
},
"defaultValue": [
"westus2"
]
}
},
"policyRule": {
"if": {
"not": {
"field": "location",
"in": "[parameters('allowedLocations')]"
}
},
"then": {
"effect": "deny"
}
}
}
}
如需詳細資訊,請移至原則定義結構描述。 Azure 原則內建和模式位於 Azure 原則範例。
顯示名稱和描述
您會使用 displayName
和 description
來識別原則定義,以及提供該定義使用時機的內容。 displayName
的長度上限為 128 個字元,而 description
的長度上限為 512 個字元。
注意
在建立或更新原則定義期間,id
、type
和 name
是由 JSON 外部的屬性所定義,而且不需要在 JSON 檔案中加以定義。 透過 SDK 擷取原則定義會傳回 id
、type
和 name
屬性做為 JSON 的一部分,但每個屬性都是與原則定義相關的唯讀資訊。
原則類型
雖然無法設定 policyType
屬性,但有三個由 SDK 傳回的值,並會在入口網站中顯示:
Builtin
:Microsoft 提供和維護這些原則定義。Custom
:客戶建立的所有原則定義都有此值。Static
:即涵蓋 Microsoft 所有權的法規合規性政策定義。 這些原則定義的合規性結果是 Microsoft 基礎結構的非 Microsoft 稽核結果。 在 Azure 入口網站中,此值有時顯示為 Microsoft 管理。 如需詳細資訊,請參閱雲端中的共同責任。
模式
mode
的設定方式取決於原則是以 Azure Resource Manager 屬性還是以資源提供者屬性為目標。
Resource Manager 模式
mode
決定評估原則定義的哪些資源類型。 支援的模式如下:
all
:評估資源群組、訂用帳戶和所有資源類型indexed
:只評估支援標記和位置的資源類型
例如,資源 Microsoft.Network/routeTables
支援標籤和位置,並在這兩種模式中進行評估。 不過,無法標記資源 Microsoft.Network/routeTables/routes
,也不會在 indexed
模式中對其進行評估。
我們建議您在大部分的情況下都將 mode
設定為 all
。 透過入口網站使用 all
模式建立的所有原則定義。 如果使用 PowerShell 或 Azure CLI,則您可以手動指定 mode
參數。 如果原則定義未包含 mode
值,則其在 Azure PowerShell 中會預設為 all
,而在 Azure CLI 中會預設為 null
。 null
模式與使用 indexed
支援回溯相容性相同。
建立會強制執行標籤或位置的原則時,應該使用 indexed
。 雖然並非必要,但它可防止不支援標籤和位置的資源在合規性結果中顯示為不符合規範。 有一個例外,就是資源群組和訂用帳戶。 原則定義若在資源群組或訂用帳戶上強制執行位置或標籤,就應該將 mode
設定為 all
,並明確地以 Microsoft.Resources/subscriptions/resourceGroups
或 Microsoft.Resources/subscriptions
類型為目標。 如需範例,請參閱 模式: 標籤 - 範例 #1。 如需支援標籤的資源清單,請參閱 Azure 資源的標籤支援。
資源提供者模式
目前完全支援下列資源提供者模式:
Microsoft.Kubernetes.Data
,用來管理 Kubernetes 叢集和元件,例如 Pod、容器和輸入。 支援 Azure Kubernetes Service 叢集和 已啟用 Azure Arc 的 Kubernetes 叢集。 使用此資源提供者模式的定義會使用效果「稽核」、「拒絕」和「已停用」。Microsoft.KeyVault.Data
,用來管理 Azure Key Vault 中的保存庫和憑證。 如需這些原則定義的詳細資訊,請參閱整合 Azure Key Vault 與 Azure 原則。Microsoft.Network.Data
適用於使用 Azure 原則管理 Azure 虛擬網路 Manager 自訂成員資格原則。
下列資源提供者模式目前支援預覽:
Microsoft.ManagedHSM.Data
用於使用 Azure 原則管理受控硬體安全模組 (HSM) 金鑰。Microsoft.DataFactory.Data
用於使用 Azure 原則來拒絕未在允許清單中未指定的 Azure Data Factory 輸出流量網域名稱。 此資源提供者模式只是強制執行,而且不會在公開預覽版中報告合規性。Microsoft.MachineLearningServices.v2.Data
,用來管理 Azure Machine Learning 模型部署。 資源提供者模式會報告新建立和更新元件的合規性。 在公開預覽期間,合規性記錄會保留 24 小時。 在指派這些原則定義之前就存在的模型部署,不會報告合規性。Microsoft.LoadTestService.Data
用於將 Azure 負載測試 實例限制為私人端點。
注意
除非明確陳述,否則資源提供者模式僅支援內建原則定義,而且元件層級不支援豁免。
在發行 Azure 原則版本設定時,下列資源提供者模式將不支援內建版本設定:
Microsoft.DataFactory.Data
Microsoft.MachineLearningServices.v2.Data
Microsoft.ManagedHSM.Data
版本 (預覽)
內建原則定義可以裝載多個具有相同 definitionID
的版本。 如果未指定版本號碼,則所有體驗都將顯示定義的最新版本。 若要查看內建的特定版本,必須在 API、SDK 或 UI 中進行指定。 若要參考指派內特定版本的定義,請參閱指派內的定義版本
Azure 原則 服務會使用version
、 preview
和 deprecated
屬性,將狀態和變更層級傳達至內建原則定義或方案。 version
的格式如下:{Major}.{Minor}.{Patch}
。 當原則定義處於預覽狀態時,後綴 預覽 會附加至 屬性, version
並視為 布爾值。 當原則定義已被取代時,會使用 "deprecated": "true"
擷取取代做為定義元數據中的布爾值。
- 主要版本 (範例:2.0.0):引進了重大變更,例如主要規則邏輯變更、移除參數、預設新增強制效果。
- 次要版本 (範例:2.1.0):引進了多個變更,例如次要規則邏輯變更、新增參數允許的值、變更為
roleDefinitionIds
、新增或移除計畫內的定義。 - 修補程式版本 (範例:2.1.4):引進了字串或中繼資料變更,以及緊急安全性案例 (罕見)。
如需 Azure 原則版本內建的詳細資訊,請參閱內建版本設定。 若要深入了解原則已被取代或處於預覽狀態的意義,請參閱 預覽和已被取代的原則。
中繼資料
選擇性 metadata
屬性會儲存原則定義的資訊。 客戶可以在 metadata
中,定義適合組織的任何屬性和值。 不過,Azure 原則和內建中會使用一些「通用」屬性。每個 metadata
屬性都有 1024 個字元的限制。
通用中繼資料屬性
version
(字串):追蹤原則定義內容版本的詳細資料。category
(字串):決定在 Azure 入口網站中的哪個類別下顯示原則定義。preview
(布林值):如果原則定義為預覽 即使用 True 或 false 旗標。deprecated
(布林值):True 或 false 旗標,表示原則定義是否標記為「已取代」。portalReview
(字串):判斷是否在入口網站中檢閱參數,而不論要求的輸入為何。
定義位置
建立方案或原則時,必須指定定義位置。 定義位置必須是管理群組或訂用帳戶。 此位置可決定方案或原則的指派範圍。 資源必須是定義位置階層內的直屬成員或其子系,才可作為指派的目標。
如果定義位置為:
- 訂閱 - 只有該訂閱中的資源可以指派原則定義。
- 管理群組 - 只有子管理群組和子訂閱中的資源可以指派原則定義。 如果您要套用原則定義至多個訂閱,其位置必須是包含各訂閱的管理群組。
如需詳細資訊,請參閱了解 Azure 原則範圍。
下一步
- 如需原則定義結構的詳細資訊,請前往參數、原則規則,以及別名。
- 針對計劃,請前往方案定義結構。
- 在 Azure 原則範例檢閱範例。
- 檢閱了解原則效果。
- 了解如何以程式設計方式建立原則。
- 了解如何取得合規性資料。
- 了解如何補救不符合規範的資源。
- 透過使用 Azure 管理群組來組織資源來檢閱何謂管理群組。