什麼是 Azure 原則?

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

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

所有 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 原則不會限制動作 (也稱為「作業」)。 Azure 原則可確保資源狀態遵循您的商務規則,而不需要擔心誰進行了變更或誰有權進行變更。 所有使用者都可以看見某些 Azure 原則資源,例如 原則定義計畫定義指派。 這項設計可讓所有使用者和服務透明地設定其環境中所設定的原則規則。

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

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

Azure 原則中的 Azure RBAC 權限

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

許多內建角色都會授與 Azure 原則資源的權限。 [資源原則參與者] 角色包含大部分的 Azure 原則作業。 擁有者 則具有完整權限。 參與者讀者 都有權「讀取」 Azure 原則作業。 參與者 可以觸發資源補救,但無法「建立」定義或指派。 使用者存取管理員 必須授與 deployIfNotExistsmodify 指派的受控識別所需的權限。 所有的原則物件都可讀取至範圍內的所有角色。

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

注意

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

Azure 原則所涵蓋的資源

Azure 原則會評估訂用帳戶層級上或底下的所有 Azure 資源,包括已啟用 Arc 的資源。 針對某些資源提供者(例如 來賓設定、 Azure Kubernetes ServiceAzure Key Vault),有更深入的整合可管理設定和物件。 若要深入了解,請參閱資源提供者模式

管理原則的建議

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

  • 從稽核效果開始,而不是從追蹤環境中原則定義對資源之影響的拒絕效果開始。 如果您已經有可自動調整應用程式的指令碼,設定拒絕效果可能會妨礙您既有的這類自動化工作。

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

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

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

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

Azure 原則物件

原則定義

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

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

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

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

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

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

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

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

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

計畫定義

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

注意

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

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

  • 在「安全性中心」中監視未加密的 SQL Database -用於監視未加密的 SQL 資料庫和伺服器。
  • 監視安全性中心內的作業系統弱點 -監視不符合設定基準的伺服器。
  • 監視安全性中心內缺少的 Endpoint Protection -用於監視未安裝 Endpoint Protection 代理程式的伺服器。

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

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

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

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

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

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

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

指派

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

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

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

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

Azure 原則物件的最大計數

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

Where 何事 最大計數
影響範圍 原則定義 500
影響範圍 計畫定義 200
租用戶 計畫定義 2,500
影響範圍 原則或方案指派 200
影響範圍 豁免 1000
原則定義 參數 20
計畫定義 原則 1000
計畫定義 參數 300
原則或方案指派 排除項目 (notScopes) 400
原則規則 巢狀的條件 512
補救工作 資源 500

後續步驟

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