什麼是 Azure 原則?

Azure 原則有助於強制執行組織標準及大規模評估合規性。 其合規性儀表板會提供彙總檢視,以評估環境的整體狀態,並能夠向下切入至每個資源和每個原則的細微性。 也可透過對現有資源進行大規模補救,以及自動對新資源進行補救來協助您的資源達到合規性。

注意

如需關於補救的詳細資訊,請參閱使用 Azure 原則補救不符合規範的資源

Azure 原則的常見使用案例包括針對資源一致性、法規合規性、安全性、成本和管理來進行治理。 這些常見使用案例的原則定義已內建在您的 Azure 環境中,可協助您開始進行作業。

具體而言,您可以使用 Azure 原則來強制執行的一些實用治理動作包括:

  • 確保小組只將 Azure 資源部署到允許的區域
  • 強制執行一致的分類標籤應用
  • 要求資源將診斷記錄傳送至 Log Analytics 工作區

請務必了解,隨著 Azure Arc 的引進,您可以將原則型治理延伸至不同雲端提供者,甚至延伸至本機資料中心。

所有 Azure 原則的資料和物件都會在待用時加密。 如需詳細資訊,請參閱 Azure 待用資料加密

概觀

Azure 原則會將這些資源屬性與商務規則做比較,藉此評估 Azure 中的資源和動作。 這些以 JSON 格式描述的商務規則稱為原則定義。 為了簡化管理,您可以將數個商務規則結合在群組中,以形成原則計畫 (有時稱為 policySet)。 當您的商務規則形成之後,原則定義或計畫就會指派到 Azure 支援的任何資源範圍,例如管理群組、訂用帳戶、資源群組或個別資源。 指派會套用至該指派 Resource Manager 範圍內的所有資源。 如有必要,可以排除子範圍。 如需詳細資訊,請參閱 Azure 原則中的範圍

Azure 原則會使用 JSON 格式來形成評估作業用來判斷資源是否符合規範的邏輯。 定義包含中繼資料和原則規則。 定義的規則可使用函式、參數、邏輯運算子、條件和屬性別名,來確切符合您想要的情況。 原則規則決定系統在指派範圍內評估哪種資源。

了解評估結果

資源可在資源生命週期及原則指派生命週期中的特定時間點受到評估,也可以進行週期性的持續合規性評估。 下列為導致系統評估資源的時間點或活動:

  • 在具有原則指派的範圍中建立或更新資源。
  • 將新的原則或計畫指派給範圍。
  • 更新已指派給範圍的原則或計畫。
  • 標準合規性的評估週期期間 (每隔 24 小時發生一次)。

若要深入了解原則評估發生的時機和方式,請參閱評估觸發程序

控制對評估的回應

處理不符合規範資源的商務規則因組織而異。 組織希望平台如何回應不符合規範資源的範例包括:

  • 拒絕資源變更
  • 記錄對資源的變更
  • 變更之前改變資源
  • 變更之後改變資源
  • 部署相關的合規性資源
  • 封鎖對資源的動作

Azure 原則會透過套用效果,讓每個商務回應都是可行的。 效果會在原則定義原則規則部分中設定。

補救不符合規範的資源

雖然這些影響主要在建立或更新資源時影響資源,但 Azure 原則也支援處理現有不符合規範的資源,而無需改變該資源。 如需讓現有資源符合規範的詳細資訊,請參閱補救資源

影片概觀

以下 Azure 原則的概觀是從組建 2018 開始。 如需投影片或影片的下載,請瀏覽 Channel 9 上的透過 Azure 原則控管您的 Azure 環境

開始使用

Azure 原則與 Azure RBAC

Azure 原則和 Azure 角色型存取控制 (Azure RBAC) 之間有幾個主要差異。 Azure 原則會藉由檢查 Resource Manager 中呈現的資源屬性及部分資源提供者的屬性,來評估狀態。 Azure 原則可確保資源狀態遵循您的商務規則,而不需要擔心誰進行了變更或誰有權進行變更。 透過 DenyAction 效果的 Azure 原則也可以封鎖資源上的特定動作。 所有使用者都能看到部分 Azure 原則資源,例如原則定義方案定義指派。 此設計可確保對所有使用者和服務透明化,以便瞭解其環境中設定的原則規則。

Azure RBAC 著重於管理不同範圍的使用者動作。 如果需要根據使用者資訊控制動作,則 Azure RBAC 是您應使用的正確工具。 即使個人擁有執行動作的存取權,但結果若是不符合規範的資源,Azure 原則仍會封鎖建立或更新動作。

Azure RBAC 和 Azure 原則的結合,可在 Azure 中提供完整的範圍控制。

Azure 原則中的 Azure RBAC 權限

Azure 原則在下列兩個資源提供者中有數個權限,一般稱之為作業:

許多內建角色都會授與 Azure 原則資源的權限。 資源原則參與者角色包含大部分的 Azure 原則作業。 擁有者則具有完整權限。 參與者讀者都有權「讀取」 Azure 原則作業。

參與者可以觸發資源補救,但無法建立更新定義和指派。 使用者存取管理員 必須授與 deployIfNotExistsmodify 指派的受控識別所需的權限。

注意

所有原則物件,包括定義、方案及指派,都可供其範圍內的所有角色讀取。 例如,範圍設定為 Azure 訂閱的原則指派,可由訂閱範圍及其下的所有角色持有者讀取。

若沒有任何內建角色具有所需的權限,請建立自訂角色

Azure 原則作業可能會對您的 Azure 環境造成重大影響。 應該只指派執行工作所需的最低權限集,而且不應將權限授與不需要這些權限的使用者。

注意

deployIfNotExistsmodify 原則指派的受控識別需要足夠的權限,才可建立或更新目標資源。 如需詳細資訊,請參閱設定用於補救的原則定義

搭配 Azure Virtual Network Manager 使用 Azure 原則的特殊權限需求

Azure Virtual Network Manager (預覽版) 可讓您將一致的管理和安全性原則套用至整個雲端基礎結構中的多個 Azure 虛擬網路 (VNet)。 Azure Virtual Network Manager (AVNM) 動態群組會使用Azure 原則定義來評估這些群組中的 VNet 成員資格。

若要建立、編輯或刪除 Azure Virtual Network Manager 動態群組原則,您需要:

  • 在基礎原則中讀取和寫入 Azure RBAC 權限
  • 用來加入網路群組的 Azure RBAC 權限 (不支援傳統管理員授權)。

具體而言,必要的資源提供者權限是 Microsoft.Network/networkManagers/networkGroups/join/action

重要

若要修改 AVNM 動態群組,您只能透過 Azure RBAC 角色指派來獲得存取權。 不支持傳統管理員/舊版授權;這表示,如果您的帳戶只獲派共同管理員訂用帳戶角色,您就沒有 AVNM 動態群組上的權限。

Azure 原則所涵蓋的資源

雖然可以在管理群組層級指派原則,但「只」會評估訂用帳戶或資源群組層級的資源。

某些資源提供者 (例如機器設定Azure Kubernetes ServiceAzure Key Vault) 會有更深入的管理設定和物件整合。 若要深入了解,請移至資源提供者模式

管理原則的建議

以下是要牢記在心的幾個指標和秘訣:

  • auditauditIfNotExist 效果開始,而不是從強制執行 (denymodifydeployIfNotExist) 效果開始,以追蹤原則定義對環境中資源的影響。 如果您已經有可自動調整應用程式的指令碼,設定強制執行效果可能會妨礙您既有的這類自動化工作。

  • 在建立定義和指派時,請考慮組織階層。 建議您在較高的層級建立定義,例如管理群組或訂用帳戶層級。 接著,在下一個子層級建立指派。 如果您在管理群組建立定義,可以將指派的範圍縮小為該管理群組內的訂用帳戶或資源群組。

  • 即使是針對單一原則定義,也建議您建立並指派計畫定義。 例如,您有原則定義 policyDefA,並建立計畫定義 initiativeDefC 下建立該定義。 如果您稍後針對 policyDefB 建立另一個目標類似 policyDefA 的原則定義,您可以在 initiativeDefC 底下加入該定義,並一起進行追蹤。

    • 一旦您建立了計畫指派之後,則加入至計畫的原則定義也會成為該計畫指派的一部分。

    • 評估計畫指派時,也會評估該計畫內的所有原則。 如果您需要個別評估原則,最好不要包含在計畫中。

  • 使用手動檢閱原則定義、計畫及指派的變更,以程式碼方式管理 Azure 原則資源。 若要深入瞭解建議的模式和工具,請參閱設計 Azure 原則即程式碼工作流程

Azure 原則物件

原則定義

建立及實作 Azure 原則中的原則始於建立原則定義。 每個原則定義都有其強制執行的條件。 此外,如果符合條件,就會產生定義的效果。

在 Azure 原則中,我們預設提供數個可供使用的內建原則。 例如:

  • 允許的儲存體帳戶 SKU (拒絕):確定要部署的儲存體帳戶是否在一組 SKU 大小內。 其效果是要拒絕不符合這組已定義之 SKU 大小的所有儲存體帳戶。
  • 允許的資源類型 (拒絕):定義您可以部署的資源類型。 其效果是要拒絕不屬於此定義清單的所有資源。
  • 允許的位置 (拒絕):限制新資源的可用位置。 其效果可用來強制執行您的地理合規性需求。
  • 允許的虛擬機器 SKU (拒絕):指定您可以部署的一組虛擬機器 SKU。
  • 將標籤新增至資源 (修改):部署要求未指定時,套用必要的標籤及其預設值。
  • 不允許的資源類型 (拒絕):防止部署資源類型清單。

若要實作這些原則定義 (內建和自訂定義),您必須指派它們。 您可以透過 Azure 入口網站、PowerShell 或 Azure CLI 來指派任何這些原則。

原則評估會透過數個不同的動作進行,例如原則指派或原則更新。 如需完整清單,請參閱原則評估觸發程序

若要深入了解原則定義的結構,請檢閱原則定義結構

原則參數減少您必須建立的原則定義數量,有助於簡化原則管理。 在建立更通用的原則定義時,您可以定義參數。 接著,您便可以針對不同的案例,重複使用該原則定義。 若要這麼做,只要在指派原則定義時傳入不同的值即可。 例如,為訂用帳戶指定一組位置。

參數是在建立原則定義時定義的。 定義參數時,需要為參數指定名稱並視需要指定值。 例如,您可以為原則定義一個標題為 location 的參數。 接著,您可以在指派原則時給予它不同的值,例如 EastUSWestUS

如需有關原則參數的詳細資訊,請參閱定義結構 - 參數

計畫定義

計畫定義是針對達到單一主要目標而量身打造的原則定義集合。 計畫定義可讓管理及指派原則定義更為簡單。 其簡化方式是將一組原則組成單一項目。 例如,您可以建立標題為在適用於雲端的 Microsoft Defender 中啟用監視的方案,目標是監視適用於雲端的 Microsoft Defender 執行個體中的所有可用安全性建議。

注意

SDK (例如 Azure CLI 和 Azure PowerShell) 會使用名為 PolicySet 的屬性和參數來參考計畫。

在這項計畫之下,您可能會有如下的原則定義:

  • 在適用於雲端的 Microsoft Defender 中監視未加密的 SQL Database – 適用於監視未加密的 SQL 資料庫和伺服器。
  • 在適用於雲端的 Microsoft Defender 中監視作業系統弱點 – 適用於監視不符合設定基準的伺服器。
  • 在適用於雲端的 Microsoft Defender 中監視遺失的 Endpoint Protection – 適用於監視沒有安裝 Endpoint Protection 代理程式的伺服器。

類似原則參數,計畫參數減少重複性,有助於簡化計畫管理。 計畫參數是計畫內原則定義所要使用的參數。

例如,以具有計畫定義的案例 - initiativeC 來說,其中包含原則定義 policyApolicyB,每個都必須有不同類型的參數:

原則 參數名稱 參數的類型 注意
policyA allowedLocations 陣列 因為參數類型已定義為陣列,所以此參數應該要有一個字串清單作為值
policyB allowedSingleLocation string 因為參數類型已定義為字串,所以此參數應該要有一個字組作為值

在此案例中,定義 initiativeC 的計畫參數時,有三個選項:

  • 使用此計畫內原則定義的參數:在此範例中,allowedLocationsallowedSingleLocation 會變成 initiativeC 的計畫參數。
  • 提供值給此計畫定義內原則定義的參數。 在此範例中,您可以提供位置清單給 policyA 的參數 - allowedLocationspolicyB 的參數 - allowedSingleLocation。 您也可以在指派此計畫時提供值。
  • 提供指派此計畫時可以使用的選項清單。 當您指派此計畫時,從計畫內原則定義繼承的參數,只能有來自此提供清單中的值。

建立計畫定義中的值選項時,您無法在計畫指派期間輸入不同的值,因為它不是清單的一部分。

若要深入了解計畫定義的結構,請檢閱計畫定義結構

作業

指派是指已指派要在特定範圍內發生的原則定義或計畫。 此範圍可從管理群組到個別資源。 「範圍」一詞係指作為定義指派對象的所有資源、資源群組、訂用帳戶或管理群組。 指派會由所有子資源繼承。 此設計的用意是,套用至某個資源群組的定義也會套用至該資源群組中的資源。 不過,您可以從指派中排除某個子範圍。

例如,在訂用帳戶範圍,您可以指派一個防止建立網路資源的定義。 您可以將該訂用帳戶內一個要用於網路基礎結構的資源群組排除。 接著,您要將此網路資源群組的存取權授與您所信任來建立網路資源的使用者。

在另一個範例中,建議您在管理群組層級指派資源類型允許清單定義。 然後,您可以在子管理群組或甚至直接在訂用帳戶上指派更寬鬆的原則 (允許更多資源類型)。 不過,因為 Azure 原則是明確的拒絕系統,此範例沒有作用。 相反地,您需要從管理群組層級的指派中排除子管理群組或訂用帳戶。 然後,對子管理群組或訂用帳戶層級指派更寬鬆的定義。 如果有任何指派導致系統拒絕資源,則唯一能允許資源的方法是修改拒絕指派。

評估資源時,原則指派一律會使用其指派定義或計畫的最新狀態。 如果已指派的原則定義變更,則該定義的所有現有指派都會在評估時使用更新後的邏輯。

如需透過入口網站設定指派的詳細資訊,請參閱建立原則指派,以識別 Azure 環境中不符合規範的資源。 此外,還會提供適用於 PowerShellAzure CLI 的步驟。 如需指派結構的詳細資訊,請參閱指派結構

Azure 原則物件的最大計數

Azure 原則的每個物件類型都有最大計數。 對於定義,範圍項目表示管理群組或訂用帳戶。 針對指派和豁免,範圍項目表示管理群組、訂用帳戶、資源群組或個別資源。

地點 問題為何 最大計數
範圍 原則定義 500
範圍 計畫定義 200
租用戶 計畫定義 2,500
範圍 原則或方案指派 200
範圍 豁免 1000
原則定義 參數 20
計畫定義 原則 1000
計畫定義 參數 400
原則或方案指派 排除項目 (notScopes) 400
原則規則 巢狀的條件 512
補救工作 資源 50,000
原則定義、計畫或指派要求主體 Bytes 1,048,576

原則規則對於條件數目及其複雜度有其他限制。 如需詳細資料,請參閱原則規則限制

下一步

現在您已大概了解 Azure 原則,以及一些重要概念,以下是建議的後續步驟: