從 DevOps 到 Azure 的端對端治理
本文說明如何仔細管理及實作小組的健全治理做法,例如角色型存取控制許可權。
它不足以規劃和實 作 Azure Resource Manager 範本的 Azure 角色型存取控制 (RBAC) 模型 (ARM 範本),其可透過 Azure 入口網站 和 Azure CLI 來限制存取。
如果此模型未針對 DevOps 自動化進行鏡像,您的組織可能會讓安全性後門保持開啟。 假設開發人員無法透過 ARM 範本存取,但仍有足夠的許可權可變更應用程式程式碼或基礎結構即程式碼,並觸發自動化工作流程。 開發人員可以透過 DevOps 間接存取並對您的 ARM 範本進行破壞性變更。
使用 Microsoft Entra 群組的單一身分識別管理平面
第一個步驟是整合 Microsoft Entra ID,以使用 每個身分識別管理的單一登入最佳做法 。
如果您未使用 Azure 第一方 CI 產品,例如 Azure DevOps,請檢查您的廠商是否提供 Microsoft Entra 整合。
第二個步驟是使用 Microsoft Entra 群組,也就是您已用於 ARM 範本 RBAC 模型的相同群組。 最佳做法是 將角色指派給 Microsoft Entra 群組 ,而不是指派給個人。 若要建立端對端治理模型,您必須針對 ARM 範本和 DevOps 執行此步驟。
Azure DevOps 與 Microsoft Entra 識別碼緊密整合,包括 Microsoft Entra 群組成員資格 ,可讓您輕鬆地將角色指派套用至相同的 Microsoft Entra 群組。
注意
如果您使用另一個 CI 廠商,則可能有一個中繼邏輯容器來管理群組成員資格,如果 Microsoft Entra 群組成員資格未同步,您也需要維護此容器。
下圖說明如何使用 Microsoft Entra ID 作為單一身分識別管理平面。 在 ARM 範本和我們的 DevOps 工具中(在此範例中為 Azure DevOps),我們只需要管理角色指派,而不是應該在 Microsoft Entra ID 中管理的成員資格。 請注意,資源名稱遵循 Azure 資源的建議 命名慣例 和 縮寫 。
範例案例:使用單一步驟移除承包商存取權:Microsoft Entra 成員資格
若要將端對端治理具體化,讓我們使用範例案例來檢查優點。
如果您使用 Microsoft Entra 識別碼作為單一身分識別管理平面,您可以藉由調整其 Microsoft Entra 群組成員資格,以一個動作移除開發人員對 Azure 資源的存取權 。 例如,如果在專案完成時應撤銷承包商的存取權,當您從相關的 Microsoft Entra 群組中移除承包商的成員資格時,就會移除 ARM 範本和 Azure DevOps 的存取權。
使用角色指派鏡像 RBAC 模型
妥善規劃時,CI 工具中的 RBAC 模型會密切鏡像您的 Azure RBAC 模型。 雖然上圖中的 Microsoft Entra 組名範例暗示安全性規則,但成員資格不會強制執行安全性。 請記住,RBAC 是主體、定義和範圍的組合,在建立 角色指派之前不會生效 。
- 此圖說明單一 Microsoft Entra 群組的角色指派。
contoso-admins-group
- 此 Microsoft Entra 群組在多個 訂用帳戶範圍中獲指派 Azure ARM 範本 的擁有者角色:
contoso-dev-sub
訂閱contoso-prod-sub
訂閱
contoso-admins-group
會新增至單 一 專案範圍中 Azure DevOps 的 Project 管理員istrators 群組。
Microsoft Entra 群組針對 ARM 範本和 DevOps 具有類似的特殊許可權角色。 遵循此邏輯,如果我們有開發人員群組為 ARM 範本指派參與者角色,我們就不會預期它們屬於 DevOps 的 Project 管理員istrators 群組。
既然您已瞭解保護 ARM 範本和 DevOps 工作流程的需求,您應該:
- 檢閱您的 RBAC 模型,並思考您為 ARM 範本所定義的角色和責任如何與您的 CI/CD 工作流程相符。
- 檢閱 CI 平臺的身分識別管理解決方案,並整合 Microsoft Entra ID。 在理想情況下,您想要包含 Microsoft Entra 群組成員資格。
- 檢閱 CI 工具所提供的角色和存取層級,並將其與您的 Azure RBAC 模型進行比較。 角色和存取層級不會對應到一個。 檢查您的設定。 如果開發人員沒有 ARM 範本的存取權,他們就不應該有 DevOps 的存取權。 在最簡單的範例中,沒有 生產資源寫入 許可權的開發人員不應該直接存取觸發生產管線執行。
若要深入瞭解治理設計和許可權,請參閱:
下一步
既然您已瞭解保護 ARM 範本和 DevOps 工作流程的需求,請瞭解如何以安全的方式管理秘密。