Azure 登陸區域的測試方法
注意
本文僅適用於 azure Microsoft,不適用於任何其他Microsoft雲端供應專案,例如 Microsoft 365 或 Microsoft Dynamics 365。
某些組織可能會想要測試其 Azure 登陸區域平臺部署,以 Azure 原則 定義和指派、角色型訪問控制 (RBAC) 自定義角色和指派等等。 您可以使用 Azure Resource Manager 範本、AzOps、Terraform、Bicep,或透過 Azure 入口網站 手動完成測試。 本指南提供一種方法,可用來測試變更及其在 Azure 登陸區域平臺部署中的影響。
本文也可以與平臺自動化和 DevOps 重要設計區域指引搭配使用,因為它與 PlatformOps 和 Central 函式小組和工作有關。
本指南最適用於管理生產環境管理群組階層變更的強固變更管理程序的組織。 Canary 管理群組階層可以獨立用來撰寫和測試部署,再將它們部署到生產環境。
注意
Canary 一詞可用來避免與開發環境或測試環境混淆。 此名稱僅供說明之用。 您可以定義任何適合 Canary Azure 登陸區域環境的名稱。
同樣地,在整個指引中使用生產環境一詞來參考組織可能已具備的管理群組階層,其中包含您工作負載的 Azure 訂用帳戶和資源。
平台定義
重要
本指南不適用於將供應用程式或服務擁有者稱為登陸區域、工作負載、應用程式或服務的開發環境或測試環境使用。 這些專案會放在生產環境管理群組階層和相關聯的治理中並加以處理(RBAC 和 Azure 原則)。
本指南僅適用於 Azure 登陸區域內容中的平臺層級測試和變更。
企業級可協助您設計和部署必要的 Azure 平台元件,讓您能夠大規模建構及運作登陸區域。
本文範圍中的平台資源及此測試方法如下:
產品或服務 | 資源提供者和類型 |
---|---|
管理群組 | Microsoft.Management/managementGroups |
管理群組訂用帳戶關聯 | Microsoft.Management/managementGroups/subscriptions |
原則定義 | Microsoft.Authorization/policyDefinitions |
原則計劃定義或原則集定義 | Microsoft.Authorization/policySetDefinitions |
原則指派 | Microsoft.Authorization/policyAssignments |
RBAC 角色定義 | Microsoft.Authorization/roleDefinitions |
RBAC 角色指派 | Microsoft.Authorization/roleAssignments |
訂用帳戶 | Microsoft.Subscription/aliases |
範例案例和結果
此案例的範例是一個組織,其想要根據原則驅動的治理設計原則,測試新 Azure 原則 的影響和結果,以控管所有登陸區域中的資源和設定。 他們不想直接對生產環境進行這項變更,因為他們擔心它可能造成的影響。
使用 Canary 環境來測試此平台變更,可讓組織實作及檢閱 Azure 原則 變更的影響和結果。 此程式可確保其符合組織的需求,再將 Azure 原則 實作至生產環境。
類似的案例可能是 Azure RBAC 角色指派和Microsoft Entra 群組成員資格的變更。 在生產環境中進行變更之前,可能需要一種測試形式。
重要
對於大多數客戶來說,這不是常見的部署方法或模式。 Azure 登陸區域部署並非必要專案。
圖 1:Canary 管理群組階層。
如圖所示,整個 Azure 登陸區域生產環境管理群組階層會在 底下 Tenant Root Group
重複。 Canary 名稱會附加至管理群組顯示名稱和識別碼。 標識碼在單一Microsoft Entra 租用戶內必須是唯一的。
注意
Canary 環境管理群組顯示名稱可以與生產環境管理群組顯示名稱相同。 這可能會導致使用者混淆。 因此,我們建議將名稱 「canary」 附加至顯示名稱,以及其標識碼。
然後,Canary 環境管理群組階層會用來簡化下列資源類型的測試:
- 管理群組
- 訂用帳戶放置
- RBAC
- 角色 (內建和自訂)
- 指派
- Azure 原則
- 定義 (內建和自訂)
- 計劃,也稱為集合定義
- 指派
如果您不想部署整個 Canary 環境管理群組階層,該怎麼辦?
如果您不想部署整個 Canary 環境管理群組階層,您可以使用沙箱訂用帳戶來測試生產環境階層內的平台資源,如下圖所示。
圖 2:企業級管理群組階層醒目提示沙箱。
若要在此案例中測試 Azure 原則 和 RBAC,您需要將擁有者 RBAC 角色指派給您想要完成測試的單一 Azure 訂用帳戶,例如使用者帳戶、服務主體或受控服務識別。 此設定可讓您在沙箱訂用帳戶的範圍內撰寫、指派和補救 Azure 原則 定義和指派。
例如,如果您正在開發新的自定義 RBAC 角色來授與特定使用案例的許可權,此沙盒方法也可用於訂用帳戶內的 RBAC 測試。 此測試全都可以在沙箱訂用帳戶中完成,並在階層中建立和指派較高角色之前進行測試。
這種方法的優點是沙箱訂用帳戶可在需要的時間使用,然後從環境中刪除。
不過,此方法不允許您測試從管理群組階層繼承 RBAC 和 Azure 原則。
使用單一Microsoft Entra 租使用者
當您使用單一Microsoft Entra 租使用者時要考慮的考慮如下:
- 遵循 Microsoft Entra 租用戶的企業級設計建議。
- 在單一Microsoft Entra 租使用者中,您可以針對生產環境和 Canary Azure 登陸區域環境使用不同的Microsoft Entra 群組,並將相同的使用者指派給相同Microsoft Entra 租使用者內的相關管理群組階層。
- 因為不同Microsoft Entra 租用戶之間有多個身分識別,而增加或重複Microsoft Entra標識符授權成本。
- 這一點特別與使用 Microsoft Entra ID P1 或 P2 功能的客戶有關。
- 在 Canary 環境和生產環境中,RBAC 變更會比較複雜,因為兩個Microsoft Entra 租使用者中,使用者和群組可能不相同。
- 此外,使用者和群組標識碼在Microsoft Entra 租用戶之間不會相同,因為它們是全域唯一的。
- 減少管理多個Microsoft Entra 租使用者所造成的複雜度和管理額外負荷。
- 必須維護存取權並登入個別租使用者以執行測試的特殊許可權使用者,可能會不小心對生產環境進行變更,而不是對 Canary 環境進行變更,反之亦然。
- 降低設定漂移和部署失敗的可能性。
- 不需要建立額外的安全性和中斷或緊急存取程式。
- 減少摩擦,以及實作 Azure 登陸區域部署變更所需的時間。
實作指導
以下是如何針對 Azure 登陸區域以及生產環境管理群組階層實作和使用 Canary 管理群組階層的指引。
警告
如果您目前使用入口網站來部署及管理 Azure 登陸區域環境,可能會因為生產環境與 Canary 環境的高風險而難以有效率地採用和使用 Canary 方法,因此通常不會提供類似複本的階層和生產環境。
如果您在此案例中,請考慮移至 Azure 登陸區域的基礎結構即程式代碼部署方法,如上所列。 或者請注意 Canary 與生產之間設定漂移的潛在風險,並小心處理。
- 使用個別Microsoft Entra 服務主體 (SPN) 或受控服務識別 (MSIS),這些主體會授與相關生產環境或 Canary 環境管理群組階層的許可權。
- 本指南遵循最低許可權原則 (PoLP)
- 使用 Git 存放庫、分支或存放庫內的個別資料夾來保存生產環境和 Canary 環境 Azure 登陸區域部署的基礎結構即程式代碼。
- 根據部署的階層而定,使用相關的Microsoft Entra 服務主體 (SPN) 或受控服務識別 (MSIS) 作為 CI/CD 管線的一部分。
- 實作 Canary 環境的 Git 分支原則或安全性,因為您已就地用於生產環境。
- 請考慮減少核准者和檢查 Canary 環境失敗的速度。
- 使用相同的 Azure Pipelines 或 GitHub 動作,以使用環境變數來變更要部署的階層。 另一個選項是複製管線,並修改硬式編碼設定,以定義要部署的階層。
- 使用 Azure Pipelines DevOps 範本 或 GitHub Actions 工作流程範本 可協助您遵守 不要重複您自己 (DRY) 原則。
- 在個別的EA部門和帳戶下,有一組 Canary 訂用帳戶,可視需要在 Canary 管理群組階層中移動。
- 讓一組資源一律部署到 Canary 環境訂用帳戶可能很有説明。
- 讓 ARM 範本、Bicep 或 Terraform 等基礎結構即程式代碼範本建立一組資源,以在 Canary 環境中驗證變更可能很有説明。
- 根據 Azure 登陸區域設計建議,將所有 Azure 訂用帳戶的所有 Azure 活動記錄,包括任何 Canary 環境訂用帳戶傳送至生產環境 Azure Log Analytics 工作區。
提示
如果您已在生產環境中部署 Azure 登陸區域,且現在想要新增 Canary 環境。 請考慮複製您目前的生產環境階層部署,並修改資源名稱,以使用 Canary 命名配置作為前置詞。
這是為了確保您要部署以啟用 Canary 環境從一開始就與生產環境同步。 使用基礎結構即程式代碼工具與 Git 存放庫時,可以輕鬆地達成此目的。
下一步
瞭解如何實作登陸區域沙盒環境。