適用於 Well-Architected 架構安全性檢查清單建議:
| SE:04 | 在架構設計中建立有意的區隔和邊界,以及平台上工作負載的佔用空間。 分段策略必須包括網路、角色和責任、工作負載身分識別和資源組織。 |
|---|
區段是解決方案的邏輯區段,需要保護為一個單位。 分段策略定義了一個單元應如何與其他單元分開,並具有自己的一組安全要求和措施。
本指南說明 建立統一區段策略的建議。 在工作負載中使用周邊和隔離界限,您可以設計適合您的安全方法。
定義
| 術語 | Definition |
|---|---|
| Containment | 一種技術,用於在攻擊者獲得對區段的訪問權限時控制爆炸半徑。 |
| 最低權限存取 | 零信任原則,旨在最大限度地減少一組權限以完成工作職能。 |
| 周界 | 區段周圍的信任界限。 |
| 資源組織 | 依區段內的流程將相關資源分組的策略。 |
| Role | 完成工作職能所需的一組權限。 |
| 客戶細分 | 與其他實體隔離並受到一組安全措施保護的邏輯單元。 |
分段的概念通常用於網路。 不過,可以在整個解決方案中使用相同的基本原則,包括分割資源以進行管理目的和存取控制。
分段可協助您 設計一種安全方法,根據 零信任模型的原則套用深度防禦。 確保破壞一個網路區段的攻擊者無法透過分割具有不同身分識別控制的工作負載來存取另一個網路區段。 在安全系統中,身分和網路屬性會阻止未經授權的存取並隱藏資產不被暴露。 以下是一些區段範例:
- 隔離組織工作負載的訂用帳戶
- 隔離工作量資產的資源群組
- 依階段隔離部署的部署環境
- 隔離與工作負載開發和管理相關的工作職能的團隊和角色
- 依工作負載公用程式隔離的應用程式層
- 將一個服務與另一個服務隔離的微服務
考慮細分的這些關鍵要素,以確保您正在建立全面的縱深防禦策略:
邊界或周邊是套用安全性控制的區段的入口邊緣。 周邊控制項應該封鎖對區段的存取,除非明確允許。 目標是防止攻擊者突破邊界並獲得對系統的控制權。 例如,應用程式層在處理請求時可能會接受終端使用者的存取權杖。 但 資料 層可能需要具有特定權限的不同存取權杖,只有應用程式層可以要求。
遏制 是區段的出口邊緣,可防止系統中的橫向移動。 遏制的目標是將違規的影響降到最低。 例如,Azure 虛擬網路可用來設定路由和網路安全性群組,以只允許您預期的流量模式,避免流量流向任意網路區段。
隔離 是將具有類似保證的實體分組在一起以使用邊界保護它們的做法。 目標是易於管理和遏制環境中的攻擊。 例如,您可以將與特定工作負載相關的資源分組到一個 Azure 訂用帳戶中,然後套用存取控制,以便只有特定工作負載小組可以存取訂用帳戶。
重要的是要注意邊界和隔離之間的區別。 周長是指應檢查的位置點。 隔離是關於分組的。 同時使用這些概念,主動遏制攻擊。
隔離並不意味著在組織中建立孤島。 統一的細分策略可在技術團隊之間保持一致,並設定明確的責任範圍。 Clarity 可降低人為錯誤和自動化失敗的風險,這些錯誤和自動化故障可能導致安全漏洞、營運停機或兩者兼而有之。 假設在複雜企業系統的元件中偵測到安全漏洞。 重要的是,每個人都要了解誰負責該資源,以便將適當的人員納入分類團隊。 組織和利害關係人可以透過建立和記錄良好的細分策略來快速確定如何回應不同類型的事件。
取捨:細分引入了複雜性,因為管理中存在開銷。 成本也需要權衡。 例如,當並存執行的部署環境被分割時,會佈建更多資源。
風險:超出合理限度的微分段會失去隔離的好處。 當您建立太多區段時,就很難識別通訊點或允許區段內的有效通訊路徑。
將身分識別建立為主要安全性邊界
各種身分識別 (例如人員、軟體元件或裝置) 會存取工作負載區段。 身分識別是一條邊界,應該是跨 隔離界限驗證和授權存取的主要防線,無論存取要求來自何處。 使用身分識別作為周邊,以:
依角色指派存取權。 身分只需要存取執行其工作所需的區段。 透過了解請求身分的角色和職責,將匿名存取降到最低,以便您知道請求存取區段的實體以及目的。
身分識別在不同的區段中可能具有不同的存取範圍。 考慮一個典型的環境設置,每個階段都有單獨的區段。 與開發人員角色相關聯的身分識別具有開發環境的讀寫存取權。 當部署移至預備時,這些權限會受到限制。 當工作負載升級至生產環境時,開發人員的範圍會減少為唯讀存取。
請分別考慮應用程式和管理身分識別。 在大多數解決方案中,使用者的存取層級與開發人員或操作員不同。 在某些應用程式中,您可能會針對每種身分類型使用不同的身分識別系統或目錄。 請考慮使用存取範圍,並為每個身分建立個別的角色。
指派最低權限存取權。 如果身分識別允許存取,請決定存取層級。 從每個區段的最低權限開始,並僅在需要時擴大該範圍。
透過套用最低權限,您可以限制身分遭到入侵時的負面影響。 如果存取受到時間限制,則受攻擊面會進一步減少。 限時存取特別適用於重要帳戶,例如身分已受損的管理員或軟體元件。
取捨:工作負載的效能可能會受到身分識別周邊的影響。 明確驗證每個請求需要額外的計算週期和額外的網路 IO。
角色型存取控制 (RBAC) 也會導致管理額外負荷。 在角色指派中,追蹤身分及其存取範圍可能會變得複雜。 因應措施是將角色指派給安全性群組,而不是個別身分識別。
風險:身分識別設定可能很複雜。 組態錯誤可能會影響工作負載的可靠性。 例如,假設有設定錯誤的角色指派,拒絕存取資料庫。 要求開始失敗,最終導致可靠性問題,否則在執行階段之前無法偵測到。
如需身分控制的相關資訊,請參閱 身分識別和存取管理。
與網路存取控制相反,身分會在存取時驗證存取控制。 強烈建議定期進行存取檢閱,並需要核准工作流程,才能取得重大影響帳戶的許可權。 例如,請參閱 身分分割模式。
以網路為邊界進行增強
身分識別邊界與網路無關,而網路邊界會增強身分識別,但永遠不會取代它。 建立網路邊界是為了控制爆炸半徑、封鎖意外、禁止和不安全的存取,以及模糊化工作負載資源。
雖然身分識別周邊的主要焦點是最低許可權,但您應該假設在設計網路周邊時會發生外洩。
使用 Azure 服務和功能,在網路使用量中建立軟體定義周邊。 當工作負載 (或指定工作負載的一部分) 放入個別區段時,您可以控制進出這些區段的流量,以保護通訊路徑。 如果區段遭到入侵,則會受到控制,並防止該區段橫向傳播到網路的其餘部分。
像攻擊者一樣思考,在工作負載中站穩腳跟,並建立控制措施以盡量減少進一步的擴展。 控制項應該偵測、遏制及阻止攻擊者取得整個工作負載的存取權。 以下是作為周邊的網路控制的一些範例:
- 定義公用網路與放置工作負載的網路之間的邊緣周邊。 盡可能限制公用網路到您網路的視線。
- 在應用程式前面實施非軍事區 (DMZ),並透過防火牆進行適當的控制。
- 透過將部分工作負載分組到單獨的區段中,在專用網路內建立微分段。 在它們之間建立安全的通訊路徑。
- 根據意圖建立邏輯界限。 例如,將參與相同使用者流程的服務放置在具有傳入和傳出流量規則的界限中。 或者,將工作負載功能網路與作業網路分段。
如需與網路分割相關的常見模式,請參閱 網路分割模式。
取捨:網路安全性控制通常很昂貴,因為它們包含在進階 SKU 中。 在防火牆上設定規則通常會導致極其複雜,需要廣泛的例外。
專用連線會變更架構設計,通常會新增更多元件,例如用於私有存取計算節點的跳轉方塊。
因為網路邊界是以網路上的控制點或躍點為基礎,所以每個躍點都可能是潛在的失敗點。 這些要點會影響系統的可靠性。
風險:網路控制是以規則為基礎的,而且設定錯誤的可能性很大,這是可靠性問題。
如需網路控制的相關資訊,請參閱網路和連線。
定義角色並明確職責範圍
防止混淆和安全風險的分段是透過明確定義工作負載團隊內的 責任線 來實現的。
記錄和共享角色和職能,以創造一致性並促進溝通。 指定負責關鍵職能的群組或個人角色。 在建立物件的自訂角色之前,請先考慮 Azure 中的內建角色。
在為區段指派許可權時,請考慮一致性,同時容納數個組織模型。 這些模型的範圍可以從單一集中式 IT 群組到大部分獨立的 IT 和 DevOps 團隊。
風險:群組的成員資格可能會隨著員工加入或離開小組或變更角色而變更。 跨區段管理角色可能會導致管理額外負荷。
整理資源促進細分
分段可讓您 將工作負載資源與組織的其他部分 甚至團隊內部隔離。 Azure 建構,例如管理群組、訂用帳戶、環境和資源群組,是組織促進區段的資源的方式。 以下是資源層級隔離的一些範例:
- 多語言持久性涉及資料儲存技術的組合,而不是單一資料庫系統來支援分段。 使用多語言持續性來依各種資料模型進行分隔、資料儲存和分析等功能分隔,或按存取模式分隔。
- 組織運算時,為每部伺服器配置一個服務。 這種隔離級別可將複雜性降至最低,並有助於遏制攻擊。
- Azure 為某些服務提供內建隔離,例如計算與儲存體的分離。 如需其他範例,請參閱 Azure 公用雲端中的隔離。
取捨:資源隔離可能會導致總擁有成本 (TCO) 增加。 對於資料存放區,在災難復原期間可能會增加複雜性和協調性。
Azure 支援服務
某些 Azure 服務可用於實作分割策略,如下列各節所述。
身份
Azure RBAC 藉由依工作職能隔離存取來支援分割。 特定角色和範圍只允許執行特定動作。 例如,只需觀察系統的工作職能可以獲指派讀取者權限,而不是允許身分識別管理資源的參與者權限。
如需詳細資訊,請參閱 RBAC 的最佳做法。
網路
虛擬網路:虛擬網路提供資源的網路層級內含,而不會在兩個虛擬網路之間新增流量。 虛擬網路是在訂用帳戶內的私人位址空間中建立
網路安全性群組 (NSG):一種存取控制機制,用於控制虛擬網路中資源與外部網路 (例如因特網) 之間的流量。 實作使用者定義路由 (UDR) 來控制流量的下一個躍點。 NSG 可以為子網路、虛擬機器 (VM) 或 VM 群組建立周邊,將您的分割策略提升至細微層級。 如需 Azure 中子網路可能作業的相關資訊,請參閱 子網路。
應用程式安全群組 (ASG):ASG 可讓您將一組 VM 分組到應用程式標籤下,並定義流量規則,然後將其套用至每個基礎 VM。
Azure 防火牆:雲端原生服務,可部署在您的虛擬網路或 Azure 虛擬 WAN 中樞部署中。 使用 Azure 防火牆來篩選雲端資源、因特網和內部部署資源之間流轉的流量。 使用 Azure 防火牆或 Azure 防火牆管理員 來建立規則或原則,以允許或拒絕使用第 3 層到第 7 層控制項的流量。 透過第三方安全性提供者導向流量,以使用 Azure 防火牆和第三方來篩選網際網路流量,以進行進階篩選和使用者保護。 Azure 支援網路虛擬設備部署,這有助於從第三方防火牆進行分段。
流量分析:流量分析是 Azure 網路監看員的一項功能,可藉由分析和擴充虛擬網路流程記錄,持續檢視網路分割。 這種可見性可讓團隊驗證分段原則。 它還確保流量僅限於預期的路段,並能夠快速檢測任何違規或意外的橫向移動。 透過使用網路組態和安全控制的內容來豐富流量資料,您可以更深入地了解網路行為。 整合流量分析有助於主動監控和執行分段邊界、完善微分段策略並維護最低權限存取。 此整合可強化零信任部署。
Example
以下是在 Azure 中分割工作負載的一些常見模式。 根據您的需求選擇模式。
此範例建立在 安全性基準 (SE:01) 中建立的資訊科技 (IT) 環境。 下圖顯示組織在管理群組層級完成的分割。
身分分割模式
模式 1:以職稱為基礎的分組
組織安全群組的一種方法是按職位名稱,例如軟體工程師、資料庫管理員、網站可靠性工程師、品質保證工程師或安全分析師。 此方法牽涉到根據 工作負載小組的角色建立安全群組 ,而不考慮需要完成的工作。 根據安全性群組在工作負載中的職責,授與安全性群組 RBAC 許可權,常設或及時 (JIT)。 根據安全群組的視需要存取權,將人員和服務原則指派給安全群組。
成員資格在角色指派層級非常明顯,因此可以輕鬆查看 角色 可以存取的內容。 每個人通常只有一個安全組的成員,這使得入職和離職變得容易。 不過,除非職稱與職責完全重疊,否則職稱型群組並不適合最低許可權實作。 您最終可能會將實作與函式型群組結合。
模式 2:以函數為基礎的分組
功能型群組是一種安全群組組織方法,可反映需要完成的離散工作,而不考慮您的小組結構。 使用此模式,您可以根據工作負載中所需的功能,視 需要授予安全群組 RBAC 權限、常設或 JIT。
根據安全群組的視需要存取權,將人員和服務原則指派給安全群組。 可能的話,請使用現有的同質群組作為功能型群組的成員,例如型樣 1 中的那些群組。 功能型群組的範例包括:
- 生產資料庫操作員
- 生產前資料庫運算子
- 生產證書輪換操作員
- 生產前憑證輪替操作員
- 生產即時站台/分級
- 預製作所有訪問權限
此方法會維護最嚴格的最低許可權存取,並提供範圍明顯的安全群組,這可讓您輕鬆稽核與已執行工作職責相關的成員資格。 通常內建的 Azure 角色會存在,以符合此工作職能。
不過,成員資格至少抽象化一層,迫使您在從資源觀點查看時,必須移至身分識別提供者,以瞭解群組中的人員。 此外,一個人需要擁有多個會員資格才能獲得完整覆蓋。 重疊安全組的矩陣可能很複雜。
建議使用模式 2 來讓存取模式成為焦點,而不是組織圖。 組織結構圖和成員角色有時會改變。 從功能觀點擷取工作負載的身分識別和存取管理,可讓您從工作負載的安全管理中抽象化團隊組織。
網路分割模式
模式 1:工作負載內的分割 (軟性界限)
在此模式中,工作負載會使用子網路來標記界限,放置在單一虛擬網路中。 分段是使用兩個子網路來達成,一個用於資料庫,一個用於Web工作負載。 您必須設定 NSG,讓子網路 1 只與子網路 2 通訊,而子網路 2 只與網際網路通訊。 此模式提供第 3 層層級控制。
模式 2:工作負載內的分段
此模式是平台層級區段的範例。 工作負載組件分佈在多個網路上,而不在它們之間進行對等互連。 所有通訊都透過作為公共存取點的中介進行路由。 工作負載團隊擁有所有網路。
模式 2 提供內含,但增加了虛擬網路管理和大小調整的複雜性。 兩個網路之間的通訊是透過公用網際網路進行的,這可能存在風險。 公共連接也存在延遲。 但是,這兩個網路可以對等互連,透過連接它們來建立更大的區段來破壞分段。 當不需要其他公用端點時,應該執行對等互連。
| 考慮事項 | 模式 1 | 模式 2 |
|---|---|---|
| 連線和路由:每個區段的通訊方式 | 系統路由提供工作量元件的預設連線功能。 任何外部元件都無法與工作負載通訊。 | 在虛擬網路內,與模式 1 相同。 在網路之間,流量會透過公用網際網路。 網路之間沒有直接連線。 |
| 網路層級流量過濾 | 預設允許區段之間的流量。 使用 NSG 或 ASG 來篩選流量。 | 在虛擬網路內,與模式 1 相同。 在網路之間,您可以透過防火牆過濾輸入和輸出流量。 |
| 非預期的開放公用端點 | 網路介面卡 (NIC) 不會取得公用 IP。 虛擬網路不會公開給因特網 API 管理。 | 與模式 1 相同。 一個虛擬網路上預期的開放公用端點,可能會錯誤設定為接受更多流量。 |
模式 3:PaaS 隔離
請考慮使用 Azure 網路安全性周邊 ,以具有嚴格規則的傳入和傳出流量,圍繞 PaaS 服務建立邏輯界限。 此模式可防止資料外流至未經授權的目的地,而不需要每個服務個別的私人端點。
資源組織
根據擁有權責任組織 Azure 資源
請考慮包含多個工作負載和共用服務元件的 Azure 資產,例如中樞虛擬網路、防火牆、身分識別服務,以及 Microsoft Sentinel 等安全性服務。 整個資產的元件應根據其功能區域、工作負載和所有權進行分組。 例如,共用網路資源應該分組成單一訂用帳戶,並由網路小組管理。 專用於個別工作負載的元件應該位於自己的區段中,並且可能會根據應用程式層或其他組織原則進一步劃分。
透過建立 RBAC 角色指派,授與管理個別區段內資源的存取權。 例如,雲端網路小組可能會被授與包含其資源之訂用帳戶的管理存取權,但不會授與個別工作負載訂用帳戶的管理存取權。
良好的細分策略可以輕鬆識別每個細分的所有者。 請考慮使用 Azure 資源標籤,以擁有者小組批註資源群組或訂用帳戶。
設定和檢閱存取控制
透過明確定義資源的區段,根據需求授予適當的存取權。
定義存取控制原則時,請考慮最低權限原則。 區分 控制平面作業 (資源本身的管理) 和 資料平面作業 (存取資源所儲存的資料) 非常重要。 例如,假設您的工作負載包含包含員工敏感資訊的資料庫。 您可以將管理存取權授與某些需要配置設定的使用者,例如資料庫備份,或監視資料庫伺服器效能的使用者。 不過,這些使用者不應該能夠查詢儲存在資料庫中的敏感性資料。 選取授與使用者執行其職責所需的最小範圍的權限。 定期檢閱每個區段的角色指派,並移除不再需要的存取權。
備註
某些高權限角色 (例如 RBAC 中的擁有者角色) 可讓使用者授與其他使用者存取資源的權限。 限制指派擁有者角色的使用者或群組數量,並定期檢閱稽核記錄,以確保它們只執行有效的作業。
相關連結
安全性檢查清單
請參閱一組完整的建議。