保護您的 Azure DevOps
Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
當您處理資訊和數據時,特別是在 Azure DevOps Services 之類的雲端式解決方案中,安全性應該是您的首要任務。 雖然Microsoft可確保基礎雲端基礎結構的安全性,但您必須負責在 Azure DevOps 內設定安全性。 本文提供必要的安全性相關設定概觀,以保護 Azure DevOps 環境免於威脅和弱點。
保護網路安全
當您使用 Azure DevOps 來保護您的數據和資源免於未經授權的存取和潛在威脅時,保護您的網路非常重要。 實作網路安全性措施,協助確保只有受信任的來源可以存取您的 Azure DevOps 環境。 若要在使用 Azure DevOps 時保護您的網路,請執行下列動作:
- 設定IP允許清單: 限制對特定IP位址的存取,只允許來自受信任來源的流量,以減少受攻擊面。 如需詳細資訊,請參閱 設定IP允許清單。
- 使用數據加密: 一律加密傳輸中的數據和待用數據。 使用 HTTPS 等通訊協定保護通道的安全。 如需詳細資訊,請參閱 使用數據加密。
- 驗證憑證: 確定憑證有效,並在建立聯機時由信任授權單位發行。 如需詳細資訊,請參閱 驗證憑證。
- 實作 Web 應用程式防火牆 (WAF): 使用WAF篩選、監視和封鎖惡意的Web型流量,以防範常見攻擊的額外保護層。 如需詳細資訊,請參閱實作 Web 應用程式防火牆(WAFs)。
- 啟用網路安全組 (NSG): 使用 NSG 來控制 Azure 資源的輸入和輸出流量,確保只允許授權的流量。 如需詳細資訊,請參閱 網路安全組 (NSG) 概觀。
- 使用 Azure 防火牆: 部署 Azure 防火牆,以跨多個 Azure 訂用帳戶和虛擬網路提供集中式網路安全策略。 如需詳細資訊,請參閱 Azure 防火牆概觀。
- 監視網路流量: 使用 Azure 網路監看員來監視和診斷網路問題,確保網路的安全性和效能。 如需詳細資訊,請參閱 Azure 網路監看員概觀。
- 實作 DDoS 保護: 啟用 Azure DDoS 保護,以保護您的應用程式免於分散式阻斷服務 (DDoS) 攻擊。 如需詳細資訊,請參閱 Azure DDoS 保護。
如需詳細資訊,請參閱 應用程式管理最佳做法。
保護您的 Azure DevOps 環境
為了確保您的 Azure DevOps 環境符合業界標準和法規,請實作安全性措施和原則。 符合 ISO/IEC 27001、SOC 1/2/3 和一般數據保護規定 (GDPR) 等標準,可協助保護您的環境,並與您的使用者保持信任。
- 確保符合業界標準: Azure DevOps 符合各種業界標準和法規,例如 ISO/IEC 27001、SOC 1/2/3 和 GDPR。 請確定您的環境遵守這些標準。
- 強制執行原則: 實作原則,以在整個組織中強制執行安全性最佳做法。 此動作包括要求程式代碼檢閱及強制執行 分支原則、 管線的合規性政策,以及 安全策略。
- 基於下列原因,啟用 CI/CD 的元件治理:
- 安全性弱點偵測:將您警示到開放原始碼元件中的已知弱點。
- 授權合規性:確保元件符合貴組織的授權原則。
- 原則強制執行:確保只使用已核准的版本。
- 追蹤的可見度:提供跨存放庫的元件可見度,以方便管理。
管理專案和組織層級許可權
- 限制專案和存放庫的存取: 藉由限制專案和存放庫的存取,降低洩漏敏感性資訊及部署不安全程式碼的風險。 使用內建或自定義安全組管理許可權。 如需詳細資訊,請參閱 限制專案和存放庫的存取。
- 停用 [允許公用專案]: 在貴組織的原則設定中,停用建立公用項目的選項。 視需要將項目可見性從公用切換為私人。 從未登入的使用者具有公用專案的唯讀存取權,而登入的使用者可以授與私人專案的存取權,並進行允許的變更。 如需詳細資訊,請參閱 變更組織的應用程式連線和安全性策略。
- 限制組織建立: 防止使用者建立新專案,以維護您環境的控制權。 如需詳細資訊,請參閱 透過 Microsoft Entra 租用戶原則限制組織的建立。
使用安全性功能和工具
下列安全性功能和工具可協助您監視、管理及增強專案的安全性:
- 使用 OAuth 而不是個人存取令牌 (PAT): 使用 OAuth 流程,而不是 PAT,且不會使用個人 GitHub 帳戶作為服務連線。 如需詳細資訊,請參閱 OAuth 概觀。
- 使用程式代碼掃描和分析: 利用 Microsoft Defender 之類的工具,掃描您的程式代碼是否有弱點、秘密和設定錯誤。 此動作有助於在開發程式中早期識別及補救安全性問題。
- 使用 Git 認證管理員:使用 GitHub 存放庫支援雙因素驗證,並向 Azure Repos 進行驗證。 如需詳細資訊,請參閱 設定 Git 認證管理員。
- 使用適用於 GitHub 的 Azure DevOps 認證掃描器 (CredScan): 使用受控識別不是選項,請確定認證會儲存在安全的位置,例如 Azure Key Vault,而不是將它們內嵌到程式代碼和組態檔中。 實作 Azure DevOps 認證掃描器,以識別程式代碼內的認證。 如需詳細資訊,請參閱 開始使用 CredScan。
- 使用 GitHub 的原生秘密掃描: 使用受控識別不是選項,請確定秘密會儲存在安全的位置,例如 Azure Key Vault,而不是將它們內嵌到程式代碼和組態檔中。 使用原生秘密掃描功能來識別程序代碼中的秘密。 如需詳細資訊,請參閱 關於秘密掃描。
如需詳細資訊,請參閱 GitHub 進階安全性概觀。
保護您的服務
若要確保 Azure DevOps 中服務的安全性和完整性,請為每個服務實作安全性措施。 這些措施包括設定許可權、管理存取權,以及使用每個服務特有的安全性功能。
- 保護 Azure Boards: 藉由設定適當的權限和管理存取層級,保護您的工作追蹤資料。
- 保護 Azure Repos: 藉由設定 Git 設定、分支許可權和原則,確保程式代碼存放庫的安全性。
- 保護 Azure Pipelines: 藉由設定許可權、使用安全性範本和保護代理程式和容器來保護 CI/CD 進程。
- 保護 Azure 測試計劃: 請確定您的小組具有適當的存取權,以有效率地管理和執行測試計劃。
- 保護 Azure Artifacts: 管理套件的存取權,並控制誰可以與其互動。
控制存取
提供最少的必要 許可權 和 存取層級 ,以確保只有已授權的個人和服務才能存取敏感性資訊並執行重要動作。 這種做法有助於將未經授權存取和潛在數據外泄的風險降到最低。
定期檢閱並更新這些設定,以適應貴組織中的變更,例如角色變更、新進員工或離職。 實 作定期 稽核許可權和存取層級有助於識別和修正任何差異,確保安全性狀態保持健全且符合最佳做法。
範圍權限
若要確保許可權的安全且有效率的管理,請在 Azure DevOps 環境中適當設定許可權的範圍。 範圍許可權牽涉到根據使用者和群組的角色和責任定義和指派適當的存取層級。 這種做法有助於將未經授權的存取和潛在數據外泄的風險降到最低,方法是確保只有獲授權的個人可以存取敏感性資訊和重要動作。
若要有效設定許可權的範圍,請執行下列動作:
- 停用繼承: 避免繼承,避免意外存取。 由於預設的允許性質,繼承可能會不小心將許可權授與不應擁有這些許可權的使用者。 請仔細管理並明確設定許可權,以確保只有預期的使用者才有存取權。 如需詳細資訊,請參閱 許可權繼承。
- 區隔環境: 針對不同的環境使用不同的 Azure 帳戶,例如開發、測試和生產環境,以增強安全性並防止衝突。 這種方法可將環境之間的資源衝突和數據污染的風險降到最低,並允許更妥善地管理和隔離資源。 如需詳細資訊,請參閱 Azure 登陸區域。
- 控制存取,並確保合規性: 使用 Azure 原則來限制對未使用的 Azure 區域和服務存取,確保符合組織標準。 此動作可藉由防止未經授權的存取和使用,協助強制執行最佳做法並維護安全的環境。 如需詳細資訊,請參閱 Azure 原則概觀。
- 實作 Azure 角色型控件 (ABAC): 使用 ABAC 搭配已正確標記的資源,限制未經授權的存取。 此動作可確保根據特定屬性授與訪問許可權,藉由防止未經授權的資源建立和存取來增強安全性。 如需詳細資訊,請參閱實作 Azure 角色型控件(ABAC)。
-
使用安全組: 使用安全組有效率地管理多個用戶的許可權。 相較於個別指派許可權,此方法可簡化授與和撤銷存取權,並確保整個組織的一致性和更容易管理。
- 當您管理大量使用者時,請使用Microsoft Entra ID、Active Directory 或 Windows 安全組。
- 利用內建角色,並將開發人員的預設角色設為參與者。 系統管理員會獲指派給 Project Administrator 安全組以取得提升的許可權,讓他們能夠設定安全性許可權。
- 盡可能縮小群組,限制存取。
- 如需詳細資訊,請參閱 管理安全組。
- 選擇正確的驗證方法: 設定安全驗證方法及管理授權原則。 如需詳細資訊,請參閱本文中的 選擇正確的驗證方法 一節和 驗證方法。
-
與 Microsoft Entra 識別元整合: 使用 Microsoft Entra ID 進行統一身分識別管理。 如需詳細資訊,請參閱 將組織連線到 Microsoft Entra ID.
- 若要增強內建系統管理員群組的安全性,請考慮使用 Microsoft Entra Privileged Identity Management (PIM) 群組實作 Just-In-Time 存取。 這種方法可讓您只在需要時授與提高的許可權,降低與永久存取相關聯的風險。 如需更多詳細情報,請參閱 設定系統管理群組的及時存取。
- 啟用Microsoft Entra 多重要素驗證 (MFA): 使用 MFA 新增額外的安全性層。 如需詳細資訊,請參閱 啟用Microsoft Entra 多重要素驗證。
- 變更安全策略: 管理安全策略,包括條件式存取。 如需詳細資訊,請參閱 變更組織的應用程式連線與安全策略。
如需許可權的詳細資訊,請參閱下列文章:
選擇正確的驗證方法
當您為 Azure DevOps 環境選擇適當的驗證方法時,請考慮不同選項的安全性和管理優點。 使用安全驗證方法可協助保護您的資源,並確保只有授權的使用者和服務才能存取您的 Azure DevOps 環境。 請考慮使用服務主體、受控識別和Microsoft Entra來增強安全性和簡化存取管理。
- 使用服務主體: 代表Microsoft Entra 應用程式內的安全性物件。 定義應用程式可在指定租用戶中執行的動作。 ** 在 Azure 入口網站註冊應用程式時進行設定。 設定 以存取 Azure 資源,包括 Azure DevOps。 適用於需要特定存取和控制的應用程式。
- 使用受控識別: 類似於應用程式的服務主體。 提供 Azure 資源的身分識別。 允許支援Microsoft Entra 驗證的服務共享認證。 Azure 會自動處理認證管理和輪替。 適合用於順暢的登入詳細數據管理。
-
使用 Microsoft Entra 標識符:
- 將 Azure DevOps 連線至 Microsoft Entra ID,以創建統一識別平台。 此一致性可減少混淆,並將手動設定錯誤的安全性風險降到最低。
- 使用 Microsoft Entra 識別符存取您的組織 ,並將不同的角色和許可權指派給各種資源範圍中的特定群組。 此動作會實作精細的治理、確保受控制的存取權,並符合安全性最佳做法。
- 使用 條件式存取原則,根據 位置、裝置或風險層級等條件來定義存取規則。
管理外部來賓存取
為了確保外部來賓存取的安全性與適當管理,請實作特定措施,以控制及監視外部使用者如何與您的 Azure DevOps 環境互動。 如果無法正確管理,外部來賓存取可能會帶來潛在的安全性風險。 遵循這些動作,您可以將這些風險降到最低,並確保外部來賓具有適當的存取層級,而不會危害環境的安全性。
- 封鎖外部來賓存取: 停用「 允許將邀請傳送至任何網域」原則 ,以防止外部來賓存取,如果沒有商務需求。
- 使用不同的電子郵件或 UPN: 針對個人和商務帳戶使用不同的電子郵件地址或使用者主體名稱(UPN),以消除個人與工作相關帳戶之間的模棱兩可。
- 群組外部來賓使用者: 將所有外部來賓使用者放在單一Microsoft Entra 群組中,並 適當地管理此群組的許可權。 拿掉直接指派,以確保群組規則適用於這些使用者。
- 定期重新評估規則: 定期檢閱 [使用者] 頁面的 [群組規則] 索引標籤上的規則。 請考慮 Microsoft Entra ID 中可能影響您組織的任何群組成員資格變更。 Microsoft Entra 識別符最多可能需要 24 小時才能更新動態群組成員資格,而且每當群組規則變更時,都會自動重新評估規則。
如需詳細資訊,請參閱 Microsoft Entra ID 中的 B2B 來賓。
實作零信任
若要增強安全性,請在 DevOps 程式中採用零信任原則。 此方法可確保不論其來源為何,都會徹底驗證每個存取要求。 零信任會以「永不信任、永遠驗證」的原則運作,這表示預設不會信任網路內部或外部的實體。 藉由實作零信任,您可以大幅降低安全性缺口的風險,並確保只有授權的使用者和裝置可以存取您的資源。
- 採用零信任方法: 實作 零信任 原則來強化 DevOps 平臺、保護您的 開發環境,並將零信任順暢地整合到 開發人員工作流程中。 零信任有助於防止網路內的橫向移動,確保即使網路有遭入侵的一部分,威脅能被控制並無法傳播。
如需詳細資訊,請參閱 零信任評定指南。
移除使用者
若要確保只有作用中和授權的用戶能夠存取您的 Azure DevOps 環境,請定期檢閱和管理使用者存取權。 拿掉非使用中或未經授權的使用者有助於維護安全的環境,並降低潛在安全性缺口的風險。 遵循這些動作,您可以確保 Azure DevOps 環境保持安全,而且只有必要的人員才能存取。
- 從 Microsoft 帳戶(MSA)中移除非活躍使用者: 如果他們正在使用 MSA,請直接從您的組織中移除這些非活躍使用者。 您無法為指派給已移除 MSA 帳戶的工作專案建立查詢。 如需詳細資訊,請參閱 從您的組織移除使用者。
- 停用或刪除Microsoft Entra 用戶帳戶: 如果聯機到 Microsoft Entra 標識符,請在讓 Azure DevOps 使用者帳戶保持作用中時停用或刪除 Microsoft Entra 使用者帳戶。 此動作可讓您使用 Azure DevOps 使用者識別碼繼續查詢工作專案歷程記錄。
- 撤銷使用者 PAT: 定期檢閱並撤銷任何現有的使用者 PAT,以確保這些重要驗證令牌的安全管理。 如需詳細資訊,請參閱 撤銷系統管理員的使用者 PAT。
- 撤銷授與個別使用者的特殊許可權: 稽核並撤銷授與個別使用者的任何特殊許可權,以確保與最低許可權原則一致。
- 從移除的使用者重新指派工作: 移除使用者之前,請先將其工作專案重新指派給目前的小組成員,以有效地分散負載。
服務帳戶的範圍設定
服務帳戶可用來執行自動化程式和服務,而且它們通常具有較高的許可權。 藉由適當界定和管理服務帳戶,您可以將安全性風險降至最低,並確保適當地使用這些帳戶。
- 建立單一用途服務帳戶: 每個服務都應該有其專用帳戶,以將風險降到最低。 避免使用一般用戶帳戶作為 服務帳戶。
- 使用 Azure Resource Manager: 使用工作負載身分識別聯盟與應用程式註冊或受控身分進行驗證,而不是通過應用程式註冊與密碼進行驗證。 如需詳細資訊,請參閱 使用 Azure Resource Manager。
- 識別和停用未使用的服務帳戶: 定期檢閱並識別不再使用的帳戶。 考慮刪除之前,請先停用未使用的帳戶。
- 限制許可權: 將服務帳戶許可權限制為所需的最低許可權。 避免賦予服務帳戶互動登入的權限。
- 針對報表讀取者使用不同的身分識別: 如果使用服務帳戶的網域帳戶,請針對報表讀取者使用不同的身分識別來 隔離許可權,並防止不必要的存取。
- 使用本機帳戶進行工作組安裝: 在工作組中安裝元件時,請使用本機帳戶作為用戶帳戶。 在此案例中避免網域帳戶。
- 使用服務連線: 盡可能使用服務連線,安全地連線到服務,而不需將秘密變數直接傳遞至組建。 將連線限制於特定的使用案例。 如需詳細資訊,請參閱本文中的 範圍服務連線 一節。
- 監視服務帳戶活動: 實作稽核並建立 稽核串流 來監視服務帳戶活動。
範圍服務連線
為了確保 Azure 資源的安全且有效率地存取,請適當地設定服務連線的範圍。 服務連線可讓 Azure DevOps 連線到外部服務和資源,並藉由限制這些連線的範圍,只限制對必要資源的存取,並降低未經授權的存取風險。
- 限制存取: 將 Azure Resource Manager 服務連線的範圍限定為特定資源和群組,以限制存取。 請勿在整個 Azure 訂用帳戶中授與廣泛的參與者許可權。
- 使用 Azure Resource Manager: 使用工作負載身份聯邦驗證 Azure 資源,可以選擇應用程式註冊或受控身份,而不要使用包含密碼的應用程式註冊。 如需詳細資訊,請參閱 建立使用工作負載身分識別同盟的 Azure Resource Manager 服務連線。
- 範圍資源群組:確定資源群組只包含建置程式所需的 虛擬機器 (VM) 或資源。
- 避免傳統服務連線: 選擇新式 Azure Resource Manager 服務連線,而不是缺少範圍選項的傳統連線。
- 使用特定用途的小組服務帳戶: 使用特定用途的小組服務帳戶來驗證服務連線,以維護安全性和控制。
如需詳細資訊,請參閱 一般服務連線類型。
啟用和檢閱稽核活動
若要增強組織內的安全性和監視使用模式,請啟用並定期檢閱稽核事件。 稽核有助於追蹤使用者動作、許可權變更和安全性事件,讓您能夠及時識別並解決潛在的安全性問題。
- 啟用稽核: 追蹤和檢視與使用者動作、許可權、變更和安全性事件相關的事件。 如需詳細資訊,請參閱 啟用或停用稽核。
- 定期檢閱稽核事件: 定期檢閱稽核記錄,以監視用戶活動並偵測任何可疑行為。 查找非預期的使用模式,特別是由系統管理員和其他使用者。 此動作有助於識別潛在的安全性缺口,並採取更正動作。 如需詳細資訊,請參閱 檢閱稽核記錄 和 稽核事件。
- 設定安全性警示: 設定警示以通知您任何安全性事件或原則違規。 此動作可確保及時回應潛在威脅。
保護您的資料
若要確保數據的安全性和完整性,請實作數據保護措施。 保護您的數據涉及加密、備份和復原策略,以防止數據遺失和未經授權的存取。
- 保護您的數據: 使用加密、備份和復原策略保護您的數據。 如需詳細資訊,請參閱 數據保護。
- 新增IP和URL以允許清單: 如果您的組織受到防火牆或 Proxy 伺服器保護,請將IP和URL新增至允許清單。 如需詳細資訊,請參閱 允許的IP位址和網域URL。