IT 服務(wù)運(yùn)維中的安全管理
作者 | 趙佩
ITIL 是一套 ITSM 最佳實(shí)踐體系,能夠提高 IT 部門用戶滿意度和運(yùn)行效率。它提供了針對(duì) IT 活動(dòng)的實(shí)踐,可以被組織應(yīng)用于戰(zhàn)略、價(jià)值交付和能力維持。它允許組織建立一個(gè)基線,用于計(jì)劃、實(shí)施和測(cè)量,證明合規(guī)性和衡量改進(jìn)。雖然 ITIL 建立了 ITSM 的“游戲規(guī)則”,但它只告訴你最好做什么事,具體落地層面的流程實(shí)踐需要根據(jù)不同的組織進(jìn)行定制化和優(yōu)化。
本系列 IT 運(yùn)維服務(wù)管理的文章,基于我們過(guò)去在不同項(xiàng)目背景下總結(jié)出來(lái)的實(shí)踐經(jīng)驗(yàn),具有運(yùn)維服務(wù)管理落地指導(dǎo)性質(zhì)。它為項(xiàng)目穩(wěn)定運(yùn)營(yíng)提供奠項(xiàng)目運(yùn)維開(kāi)展計(jì)劃的基礎(chǔ),為進(jìn)一步的工程實(shí)踐和持續(xù)優(yōu)化奠定良好的基礎(chǔ),同時(shí)可以幫助運(yùn)維項(xiàng)目中的人員完善和提升項(xiàng)目運(yùn)維過(guò)程中的服務(wù)管理能力。
本系列文章的主題包括運(yùn)維安全管理、事件管理、變更管理、應(yīng)急預(yù)案、自動(dòng)化效率化運(yùn)維。本文為第一篇:運(yùn)維中的安全管理。
在企業(yè)的 IT 服務(wù)運(yùn)維管理中,安全管理是一個(gè)非常重要的問(wèn)題。在產(chǎn)品運(yùn)維過(guò)程中,不僅需要管理、維護(hù)和監(jiān)控 IT 系統(tǒng)的可靠性,同時(shí)系統(tǒng)的安全性也是非常重要的。當(dāng)談到運(yùn)維安全管理時(shí),我們最容易想到的是保護(hù)敏感信息和數(shù)據(jù)安全。然而,隨著信息技術(shù)的進(jìn)步,敏感信息和數(shù)據(jù)安全的威脅也變得越來(lái)越復(fù)雜。
想象一個(gè)場(chǎng)景,你所運(yùn)維的系統(tǒng)中,有一個(gè)比較重要的服務(wù)因?yàn)榘踩┒磫?wèn)題需要被隔離甚至關(guān)停,這可能會(huì)引發(fā)一系列緊急舉措和挑戰(zhàn)。在現(xiàn)實(shí)中,我們?cè)?jīng)就遇到過(guò)這樣的情況。由于一個(gè)重大的系統(tǒng)漏洞,服務(wù)器被攻擊并受到了破壞。在恢復(fù)服務(wù)之后,我們又發(fā)現(xiàn)了應(yīng)用程序中的軟件包存在漏洞,必須在緊急的時(shí)間內(nèi)進(jìn)行修復(fù)才能重新上線。最終,我們花費(fèi)了將近兩天的時(shí)間才讓應(yīng)用程序恢復(fù)至可用狀態(tài)。如果我們定期進(jìn)行漏洞掃描并及時(shí)修復(fù)任何漏洞,或許就能夠避免這樣的情況再次發(fā)生。
再想象一個(gè)場(chǎng)景,你所運(yùn)維的一個(gè)線上服務(wù)昨天還正常提供服務(wù),但是今天突然所有用戶都在抱怨不能用了,你查看了監(jiān)控后發(fā)現(xiàn)系統(tǒng)的指標(biāo)都沒(méi)有問(wèn)題,最終才發(fā)現(xiàn)居然是應(yīng)用證書過(guò)期了。這樣一個(gè)看似簡(jiǎn)單的問(wèn)題卻造成了如此大的影響,不僅僅可能涉及金錢損失,還很可能影響到公司的聲譽(yù)。如果在日常運(yùn)維中我們注重證書的安全管理,就不會(huì)發(fā)生這樣低級(jí)的錯(cuò)誤,從而避免無(wú)法挽回的損失。
除了上述提到的軟件依賴包的安全管理和證書的安全管理,運(yùn)維團(tuán)隊(duì)還需要考慮權(quán)限管理、 CI/CD(Continuous Integration/Continuous Delivery) 流水線(Pipeline)安全檢查、個(gè)人隱私數(shù)據(jù)信息管理、Web 應(yīng)用防火墻管理、威脅建模等方面。這些措施都可以有效地減少惡意攻擊和數(shù)據(jù)泄漏的風(fēng)險(xiǎn),并保護(hù)企業(yè)的業(yè)務(wù)穩(wěn)定性和可持續(xù)性。
當(dāng)然,在運(yùn)維階段中涉及的安全管理問(wèn)題是多方面的,需要我們根據(jù)具體項(xiàng)目情況進(jìn)行綜合考慮和解決。下面我們會(huì)基于運(yùn)維項(xiàng)目上所涉及的安全領(lǐng)域來(lái)具體分享運(yùn)維項(xiàng)目上的一些安全實(shí)踐。
一、權(quán)限管理
(圖片來(lái)源:https://arxall.io/news/wp-content/uploads/2022/02/access-rwr-600x400.jpg)
1.概念
在運(yùn)維項(xiàng)目中,很多場(chǎng)景下,我們需要與多個(gè)系統(tǒng)進(jìn)行交互,這給我們的系統(tǒng)和人員帶來(lái)了許多權(quán)限管理的挑戰(zhàn)和要求。例如,我們需要確保管理員擁有足夠的權(quán)限來(lái)完成必要的任務(wù),但又不能賦予過(guò)多的權(quán)限,以避免安全風(fēng)險(xiǎn)。我們還需要確保所有操作都有明確的記錄和審計(jì),以便在發(fā)生問(wèn)題時(shí)進(jìn)行追蹤和分析。另外,我們還需要使用適當(dāng)?shù)恼J(rèn)證和授權(quán)措施,以防止未經(jīng)授權(quán)的訪問(wèn)和操作。
為了滿足這些要求,我們需要實(shí)施一套完整的運(yùn)維權(quán)限管理方案,包括對(duì)管理員帳戶、角色、權(quán)限、認(rèn)證和授權(quán)、審計(jì)和監(jiān)控等方面的管理。這樣,我們才能確保管理員只能訪問(wèn)他們所需的資源,并且他們的操作都能夠被準(zhǔn)確記錄和審計(jì)。此外,我們還需要定期審查和更新權(quán)限,以確保系統(tǒng)和數(shù)據(jù)的安全性和完整性得到保障。
在運(yùn)維項(xiàng)目中,權(quán)限管理是保護(hù)系統(tǒng)和數(shù)據(jù)安全的關(guān)鍵環(huán)節(jié),它不僅是技術(shù)上的問(wèn)題,更是一個(gè)管理流程上的問(wèn)題,所以需要管理員的合作和配合。只有全面而有效的運(yùn)維權(quán)限管理方案,才能確保系統(tǒng)的穩(wěn)定性和安全性,為企業(yè)的發(fā)展提供有力的支持。
2.權(quán)限管理在運(yùn)維中的重要性
權(quán)限管理在運(yùn)維中具有非常重要的作用,它可以確保系統(tǒng)和數(shù)據(jù)的安全性和完整性,避免未經(jīng)授權(quán)的訪問(wèn)和操作,同時(shí)也可以提高運(yùn)維效率和降低風(fēng)險(xiǎn)。
- 保護(hù)系統(tǒng)和數(shù)據(jù)安全:通過(guò)運(yùn)維權(quán)限管理,可以對(duì)管理員的操作進(jìn)行授權(quán)和控制,避免未經(jīng)授權(quán)的訪問(wèn)和操作,確保系統(tǒng)和數(shù)據(jù)的安全性和完整性。
- 降低安全風(fēng)險(xiǎn):通過(guò)限制管理員的權(quán)限,可以避免他們誤操作或惡意操作系統(tǒng)和數(shù)據(jù),從而降低安全風(fēng)險(xiǎn)。
- 提高運(yùn)維效率:通過(guò)權(quán)限管理,可以使管理員擁有足夠的權(quán)限來(lái)完成必要的任務(wù),從而提高運(yùn)維效率。
- 精細(xì)化的權(quán)限控制:通過(guò)將管理員分配到不同的角色中,可以實(shí)現(xiàn)權(quán)限的精細(xì)化控制,使管理員只能訪問(wèn)和操作其所需的資源,從而避免權(quán)限過(guò)度賦予導(dǎo)致的安全問(wèn)題。
- 審計(jì)和監(jiān)控:通過(guò)對(duì)管理員操作的審計(jì)和監(jiān)控,可以及時(shí)發(fā)現(xiàn)和處理安全問(wèn)題,從而進(jìn)一步提高系統(tǒng)和數(shù)據(jù)的安全性和完整性。
運(yùn)維權(quán)限管理在保障系統(tǒng)和數(shù)據(jù)安全、降低安全風(fēng)險(xiǎn)、提高運(yùn)維效率、精細(xì)化權(quán)限控制以及審計(jì)和監(jiān)控等方面發(fā)揮著至關(guān)重要的作用。
3.權(quán)限管理在運(yùn)維中如何落地
- 最小權(quán)限原則:在運(yùn)維過(guò)程中,應(yīng)該遵循最小權(quán)限原則,即只賦予必要的權(quán)限,以最大限度地減少安全漏洞的風(fēng)險(xiǎn)。
- 群組權(quán)限:所以的策略都不應(yīng)該直接分配給用戶,應(yīng)該分配給用戶組,再把用戶添加到用戶組中,降低管理成本。
- 定期修改密碼:所有的賬戶應(yīng)該有一定的密碼復(fù)雜度策略和定期修改密碼的策略。
- 細(xì)粒度的訪問(wèn)控制:細(xì)粒度的訪問(wèn)控制可以更好地管理運(yùn)維權(quán)限,例如對(duì)特定的服務(wù)器、應(yīng)用程序或服務(wù)進(jìn)行授權(quán)。
- 審計(jì)和監(jiān)控:對(duì)所有運(yùn)維操作進(jìn)行審計(jì)和監(jiān)控,以檢測(cè)異常行為并及時(shí)采取措施。
- 多因子認(rèn)證 MFA:使用多因子認(rèn)證可以增加帳戶的安全性,避免帳戶被非法使用,即使密碼被泄露也可以在一定程度上保證賬戶的安全。
- 定期審查權(quán)限:定期審查權(quán)限,及時(shí)刪除無(wú)用的帳戶和權(quán)限,防止因?yàn)槿藛T變動(dòng)導(dǎo)致的權(quán)安全問(wèn)題。
4.如何度量
要度量運(yùn)維項(xiàng)目上權(quán)限管理的成熟度,可以考慮以下幾個(gè)方面:
(1) 權(quán)限分配和授權(quán):
- 權(quán)限準(zhǔn)確性:衡量權(quán)限是否正確地分配給了合適的用戶或角色。
- 權(quán)限完整性:評(píng)估系統(tǒng)中是否存在未分配或遺漏的權(quán)限。
- 權(quán)限一致性:檢查權(quán)限授權(quán)是否符合組織內(nèi)部的標(biāo)準(zhǔn)和規(guī)范。
(2) 權(quán)限審計(jì)和監(jiān)測(cè):
- 審計(jì)合規(guī)性:評(píng)估權(quán)限審計(jì)的合規(guī)性,包括審計(jì)日志的記錄、保留和保護(hù)。
- 異常權(quán)限活動(dòng)檢測(cè):監(jiān)測(cè)和評(píng)估系統(tǒng)中的異常權(quán)限請(qǐng)求和活動(dòng),包括超出正常權(quán)限范圍的請(qǐng)求和異常的權(quán)限使用模式。
(3) 權(quán)限變更管理:
- 變更記錄和追蹤:確保權(quán)限變更的記錄和審計(jì)跟蹤能力,包括變更的原因、執(zhí)行者和時(shí)間戳等信息。
- 變更時(shí)效性:衡量權(quán)限變更請(qǐng)求的響應(yīng)時(shí)間和處理效率。
(4) 權(quán)限撤銷和失效:
- 撤銷時(shí)效性:評(píng)估權(quán)限撤銷的及時(shí)性和有效性,特別是在員工離職或角色變更時(shí)。
- 失效權(quán)限管理:確保不再需要的權(quán)限被及時(shí)撤銷或失效,避免未經(jīng)授權(quán)的訪問(wèn)風(fēng)險(xiǎn)。
(5) 權(quán)限請(qǐng)求和批準(zhǔn)流程:
- 請(qǐng)求時(shí)效性:衡量權(quán)限請(qǐng)求的響應(yīng)時(shí)間,確保團(tuán)隊(duì)成員能夠及時(shí)獲得適當(dāng)?shù)臋?quán)限。
- 批準(zhǔn)流程效率:評(píng)估權(quán)限批準(zhǔn)流程的效率和準(zhǔn)確性,包括審批者的響應(yīng)時(shí)間和批準(zhǔn)決策的一致性。
二、密鑰和證書管理
(圖片來(lái)源:https://www.sectigo.com/uploads/images/Key.png)
1.概念
密鑰是一種在明文轉(zhuǎn)換為密文或?qū)⒚芪霓D(zhuǎn)換為明文的算法中輸入的參數(shù)。具體來(lái)說(shuō),密鑰是一組信息編碼,它參與密碼的“運(yùn)算”,并對(duì)密碼的“運(yùn)算”起特定的控制作用。
數(shù)字證書是一種可以在互聯(lián)網(wǎng)通訊中唯一地標(biāo)識(shí)身份的一個(gè)權(quán)威文件。數(shù)字證書是由證書認(rèn)證機(jī)構(gòu) (以下簡(jiǎn)稱 CA) 對(duì)證書申請(qǐng)者真實(shí)身份驗(yàn)證之后,用 CA 的根證書對(duì)申請(qǐng)人的一些基本信息以及申請(qǐng)人的公鑰進(jìn)行簽名(相當(dāng)于加蓋發(fā)證書機(jī)構(gòu)的公章)后形成的一個(gè)數(shù)字文件??梢哉J(rèn)為,數(shù)字證書就是經(jīng)過(guò) CA 認(rèn)證過(guò)的公鑰,和公鑰一樣是公開(kāi)的。
(1) 密鑰的分類
一般情況下,密鑰分為對(duì)稱密鑰與非對(duì)稱密鑰。
- 對(duì)稱密鑰:對(duì)稱密鑰一般是用對(duì)稱加密算法,而對(duì)稱密鑰加密又稱私鑰加密或會(huì)話密鑰加密算法,即信息的發(fā)送方和接收方使用同一個(gè)密鑰去加密和解密數(shù)據(jù)。它的最大優(yōu)勢(shì)是加/解密速度快,適合于對(duì)大數(shù)據(jù)量進(jìn)行加密,但密鑰的管理與分配困難。
- 非對(duì)稱密鑰:使用非對(duì)稱密鑰的加密方式又稱為公鑰加密。它需要使用一對(duì)不同的密鑰來(lái)分別完成加密和解密操作,一個(gè)是公開(kāi)發(fā)布的公鑰,另一個(gè)為用戶保存的私鑰。信息發(fā)送者用公鑰去加密,而信息接收者則用私鑰去解密。公鑰加密機(jī)制靈活,但加密和解密速度卻比對(duì)稱密鑰加密慢得多。
(2) 證書的分類
證書的種類較多,這里列舉幾種常見(jiàn)的證書分類:TLS/SSL 客戶端證書,郵件證書、iOS 和安卓證書,自簽名證書等等。
- TLS/SSL 客戶端證書:TLS/SSL 客戶端證書是一種數(shù)字證書,基于公鑰加密體系,用于在 TLS/SSL 協(xié)議中對(duì)客戶端進(jìn)行身份驗(yàn)證。它是由受信任的證書頒發(fā)機(jī)構(gòu) CA 簽發(fā)的,并包含了客戶端的公鑰、相關(guān)身份信息以及由 CA 簽名的數(shù)字簽名。TLS/SSL 客戶端證書用于驗(yàn)證客戶端的身份。服務(wù)器可以通過(guò)驗(yàn)證客戶端證書的有效性、簽名和證書鏈,確認(rèn)客戶端的真實(shí)性和完整性,從而確保只有合法的客戶端能夠建立安全的連接。TLS/SSL 客戶端證書在保障通信安全和進(jìn)行雙向身份驗(yàn)證方面發(fā)揮著重要的作用。
- 郵件證書:S/MIME(Secure/Multipurpose Internet Mail Extensions)是一種安全電子郵件標(biāo)準(zhǔn),它使用郵件證書來(lái)實(shí)現(xiàn)電子郵件的加密和身份驗(yàn)證。S/MIME 通過(guò)在電子郵件中添加數(shù)字簽名和加密功能,提供了保護(hù)郵件機(jī)密性和完整性的安全層。通過(guò)使用 S/MIME 郵件證書,電子郵件的發(fā)件人和收件人可以實(shí)現(xiàn)電子郵件的身份驗(yàn)證、機(jī)密性和完整性驗(yàn)證。S/MIME 提供了一種可靠的方法,使電子郵件在傳輸過(guò)程中免受竊聽(tīng)和篡改,增強(qiáng)了電子郵件通信的安全性和隱私保護(hù)。
- iOS 證書:iOS 開(kāi)發(fā)者證書是一種代碼簽名證書,是一種將個(gè)人、個(gè)人數(shù)字身份和應(yīng)用程序關(guān)聯(lián)起來(lái)的數(shù)字簽名。開(kāi)發(fā)者可以從蘋果的官方網(wǎng)站申請(qǐng)?zhí)O果開(kāi)發(fā)者賬號(hào),方便 iOS 證書的申請(qǐng)與使用。iOS 證書主要包括:開(kāi)發(fā)者證書、分發(fā)證書、推送證書。開(kāi)發(fā)者證書用于驗(yàn)證 iOS 應(yīng)用程序的開(kāi)發(fā)者身份,分發(fā)證書用于驗(yàn)證 iOS 應(yīng)用程序的發(fā)布者身份,推送證書用于實(shí)現(xiàn) iOS 設(shè)備上的遠(yuǎn)程通知功能。
- 自簽名證書:自簽名證書是一種發(fā)行者通過(guò)自己私鑰簽署的數(shù)字證書,一般由一些公司或軟件開(kāi)發(fā)商創(chuàng)建、頒發(fā)和簽名。但由于證書未經(jīng)過(guò)證書頒發(fā)機(jī)構(gòu)簽名,因此這種自簽名證書通常不會(huì)被廣泛信任,使用時(shí)可能會(huì)遇到電腦軟件的安全警告。自簽名證書特別適用于內(nèi)部環(huán)境或僅用于測(cè)試目的,對(duì)于公共網(wǎng)絡(luò)和與外部系統(tǒng)交互的場(chǎng)景,建議使用由受信任的第三方證書頒發(fā)機(jī)構(gòu) CA 簽發(fā)的證書,以確??尚哦群桶踩?。
2.密鑰和證書管理在運(yùn)維中的重要性
在運(yùn)維的過(guò)程中,如果我們對(duì)密鑰管理不當(dāng),密鑰的泄露會(huì)導(dǎo)致密碼系統(tǒng)失效,信息出現(xiàn)泄漏,系統(tǒng)出現(xiàn)安全問(wèn)題。如果沒(méi)能及時(shí)檢查證書的過(guò)期時(shí)間,導(dǎo)致證書過(guò)期,不僅使得用戶的通信得不到保護(hù),泄漏用戶的安全和隱私,也會(huì)使得用戶在使用服務(wù)時(shí),出現(xiàn)網(wǎng)頁(yè)無(wú)法打開(kāi)等情況。這些情況在運(yùn)維中都會(huì)是非常嚴(yán)重的生產(chǎn)安全事故。
3.密鑰和證書管理在運(yùn)維中如何落地
在運(yùn)維的過(guò)程中,密鑰和證書的管理包含生成、更新、存儲(chǔ)與備份、有效期及銷毀。具體內(nèi)容如下:
- 密鑰生成和存儲(chǔ):使用安全的方法生成密鑰對(duì),并確保私鑰的保密性。私鑰應(yīng)存儲(chǔ)在受控的、加密的環(huán)境中,只有授權(quán)人員可以訪問(wèn)。
- 證書申請(qǐng)和簽發(fā):對(duì)于需要使用由受信任的第三方證書頒發(fā)機(jī)構(gòu) CA 簽發(fā)的證書,按照 CA 的要求生成證書簽名請(qǐng)求 CSR,并提交給 CA 進(jìn)行簽發(fā)。確保證書的簽發(fā)過(guò)程符合安全最佳實(shí)踐。
- 建立清單并監(jiān)控:建立一個(gè)密鑰和證書清單,記錄所有系統(tǒng)中使用的密鑰和證書的詳細(xì)信息,包括類型、用途、到期日期等,并在證書到期前自動(dòng)發(fā)送提醒。
- 定期輪換:定期進(jìn)行密鑰更新,刪除和銷毀過(guò)期密鑰。
- 密鑰和證書保護(hù):采取適當(dāng)?shù)拇胧┍Wo(hù)密鑰和證書的機(jī)密性和完整性。使用加密算法保護(hù)密鑰的傳輸和存儲(chǔ),并使用訪問(wèn)控制和權(quán)限管理措施限制對(duì)密鑰和證書的訪問(wèn)。
針對(duì)運(yùn)維團(tuán)隊(duì)所運(yùn)維的服務(wù),服務(wù)的證書可能是由專門的團(tuán)隊(duì)管理,也可能是直接托管在云服務(wù)上。針對(duì)不同的情況,有如下內(nèi)容:
(1) 如果證書不在云上托管,而是公司有專門的團(tuán)隊(duì)負(fù)責(zé):
- 建議運(yùn)維初期在我們服務(wù)側(cè)配置專門的報(bào)警,例如提前一個(gè)月發(fā)郵件通知即將到期的證書。
- 在收到通知后過(guò)期前兩周聯(lián)系該團(tuán)隊(duì)生成新的證書,并計(jì)劃證書替換事項(xiàng)。
- 記錄替換的步驟,以便在團(tuán)隊(duì)內(nèi)部進(jìn)行知識(shí)沉淀和傳遞。
(2) 如果證書是云服務(wù)自動(dòng)生成和托管,例如 AWS ACM,建議開(kāi)啟云服務(wù)端自動(dòng)更新。這樣運(yùn)維人員不需要有額外的工作量。
4.如何度量
要度量運(yùn)維項(xiàng)目上密鑰和證書管理做得好不好,一般通過(guò)查看因證書密鑰導(dǎo)致的安全事故數(shù)量作為度量準(zhǔn)則,可以考慮以下幾個(gè)方面:
- 證書的統(tǒng)一管理文檔是否更新的及時(shí),內(nèi)容更新是否準(zhǔn)確。
- 在定期針對(duì)事故查看與分析時(shí),統(tǒng)計(jì)因證書密鑰導(dǎo)致的事故數(shù)量,是否因證書和密鑰導(dǎo)致了較多的事故。如果統(tǒng)計(jì)的數(shù)量較高,則代表團(tuán)隊(duì)針對(duì)證書和密鑰的管理方式需要改進(jìn)。
三、代碼依賴安全管理
(圖片來(lái)源:https://d2h1bfu6zrdxog.cloudfront.net/wp-content/uploads/2022/03/OpenSource-Security-Blog-image.png)
1.概念
對(duì)于軟件的代碼依賴包,我們都不陌生。為了避免重復(fù)編寫某個(gè)公用代碼,我們都傾向于去在代碼里引用軟件依賴包來(lái)提高交付效率。將外部軟件作為依賴包意味著我們需要信賴這個(gè)依賴包,但是這些依賴包中可能存在安全漏洞,它們還可能過(guò)時(shí),可能存在影響應(yīng)用程序性能和風(fēng)險(xiǎn)狀況的錯(cuò)誤或安全問(wèn)題,從而導(dǎo)致我們的應(yīng)用質(zhì)量下降,安全性無(wú)法得到保障。因此在享用依賴包所帶來(lái)的便利性的同時(shí),我們需要去定期掃描和升級(jí)依賴包,做好安全管理,以防止任何安全漏洞趁虛而入。
關(guān)于依賴包的安全漏洞,我們往往需要特別關(guān)注和及時(shí)升級(jí)涉及 Critical 極危級(jí)別漏洞和 High 高危級(jí)別漏洞的依賴包:
- Critical 極危級(jí)別漏洞意味著我們的服務(wù)或者網(wǎng)站隨時(shí)有被黑客入侵的風(fēng)險(xiǎn)。需要將立即修復(fù)這些漏洞作為最高優(yōu)先級(jí)。
- High 高危級(jí)別漏洞意味著我們的服務(wù)或網(wǎng)站可能被黑客入侵,并可能導(dǎo)致黑客找到其他影響更大的漏洞。因此也需要即修復(fù)這些類型的漏洞。
2.代碼依賴的安全管理在運(yùn)維中的重要性
保證軟件系統(tǒng)的安全性:依賴包中可能存在的安全漏洞和問(wèn)題可能會(huì)被黑客利用,導(dǎo)致軟件系統(tǒng)被攻擊或被破壞。運(yùn)維的項(xiàng)目中,其中有一大部分是遺留的服務(wù),因?yàn)檫@些系統(tǒng)不需要開(kāi)發(fā)新功能了,維護(hù)者往往不想在上面投入過(guò)多精力的,只想讓他能工作就行,因此大家會(huì)常常忽視這些系統(tǒng)的網(wǎng)絡(luò)安全問(wèn)題,比如過(guò)期不維護(hù)的有安全漏洞的依賴包。只要我們不主動(dòng)識(shí)別并消除來(lái)自這些的潛在威脅,就始終存在安全漏洞的可能性。如果我們能正確管理好依賴包,可以發(fā)現(xiàn)這些安全漏洞和問(wèn)題,并及時(shí)采取措施加以修復(fù)。
- 遵循合規(guī)要求:一些行業(yè)或法規(guī)要求必須對(duì)軟件代碼進(jìn)行安全審計(jì)和檢查,以確保其符合安全標(biāo)準(zhǔn)。在運(yùn)維階段,依然做好依賴包安全管理可以幫助我們的組織遵循這些合規(guī)要求,并確保軟件系統(tǒng)的安全性。
- 保護(hù)品牌聲譽(yù):一旦軟件系統(tǒng)被攻擊或破壞,會(huì)給我們的公司帶來(lái)財(cái)務(wù)和聲譽(yù)損失。運(yùn)維階段持續(xù)做好依賴包安全管理,可以發(fā)現(xiàn)潛在的安全風(fēng)險(xiǎn),避免因安全問(wèn)題導(dǎo)致的損失。
因此,在運(yùn)維項(xiàng)目上,我們不應(yīng)該忽視對(duì)軟件代碼依賴的管理,定期去掃描和更新依賴包,確保依賴包沒(méi)有安全漏洞,直到這個(gè)服務(wù)的生命周期結(jié)束,我們都應(yīng)該對(duì)這些進(jìn)行負(fù)責(zé)。
3.代碼依賴的安全管理在運(yùn)維中如何落地
(1) 選擇合適的依賴掃描工具:
如果當(dāng)前的運(yùn)維項(xiàng)目上沒(méi)有集成,我們可以考慮根據(jù)項(xiàng)目所使用的編程語(yǔ)言和依賴庫(kù),選擇適合的依賴掃描工具。依賴掃描工具的主要目的是檢測(cè)和識(shí)別項(xiàng)目中的依賴項(xiàng),以便在需要更新時(shí)通知開(kāi)發(fā)人員。掃描工具可以幫助開(kāi)發(fā)人員確定項(xiàng)目中使用的依賴項(xiàng)版本是否過(guò)時(shí)或具有安全漏洞,從而確保項(xiàng)目的安全性和穩(wěn)定性。常見(jiàn)的依賴掃描工具包括:
- * Snyk:是一個(gè)用于檢測(cè)和修復(fù)開(kāi)源軟件中的漏洞的云掃描工具。它支持多種編程語(yǔ)言,包括 Java、JavaScript、Python、Ruby 等。
- * OWASP Dependency Check:是一個(gè)開(kāi)源的工具,可用于檢測(cè) Java、.NET、Node.js 和 Python 應(yīng)用程序中的漏洞和漏洞。
- * Dependency Track:是一個(gè)開(kāi)源的軟件組件分析平臺(tái),可以檢測(cè)并跟蹤應(yīng)用程序中的組件漏洞和依賴關(guān)系。
- * Mend:是一個(gè)用于管理開(kāi)源組件和依賴關(guān)系的云掃描工具。它支持多種編程語(yǔ)言,包括 Java、.NET、Node.js、Python 等。
- * Nexus IQ:是一個(gè)用于檢測(cè)和管理應(yīng)用程序依賴關(guān)系和組件漏洞的工具。它提供了一個(gè)集中式的平臺(tái),可以幫助用戶分析和管理所有組件的安全和許可證問(wèn)題。
(2) 集成依賴掃描工具:
可以將依賴掃描工具集成到 CI/CD 工作流程中,以便在每次構(gòu)建和部署時(shí)都自動(dòng)運(yùn)行依賴掃描工具。這可以幫助確保每個(gè)版本都經(jīng)過(guò)安全審查。
(3) 代碼倉(cāng)庫(kù)集成依賴升級(jí)工具并自動(dòng)更新依賴包:
依賴升級(jí)工具可以幫助開(kāi)發(fā)人員和團(tuán)隊(duì)更輕松地管理其項(xiàng)目的依賴項(xiàng)。這些工具可以定期掃描項(xiàng)目的依賴項(xiàng),并自動(dòng)提供更新版本的建議,甚至可以自動(dòng)提交更新請(qǐng)求和合并請(qǐng)求。如果在開(kāi)發(fā)階段在代碼倉(cāng)庫(kù)沒(méi)有集成依賴掃描工具,那么在運(yùn)維階段,我們應(yīng)盡可能地集成這樣的工具。 這里我們推薦兩種和 Github 集成的工具:Dependabot 和 Renovate。它們可以輕松自動(dòng)更新依賴項(xiàng),提高項(xiàng)目的安全性和可維護(hù)性。這兩個(gè)工具都能很好的跟 Github 集成,不管是有成百上千的代碼倉(cāng)庫(kù)的大型企業(yè)還是個(gè)人的代碼倉(cāng)庫(kù),都可以使用這兩個(gè)工具去進(jìn)行定期代碼依賴包掃描,并自動(dòng)創(chuàng)建拉取請(qǐng)求。 對(duì)于大型項(xiàng)目公司,也可以創(chuàng)建自建的 Dependabot 和 Renovate 實(shí)例去進(jìn)行依賴包的安全掃描,并且定制公司項(xiàng)目?jī)?nèi)部的規(guī)則:
- 了解依賴包的來(lái)源和信譽(yù):我們運(yùn)維中,難免要涉及到改代碼,如果我們要引入新的開(kāi)源依賴包時(shí),應(yīng)該了解其來(lái)源和信譽(yù),并確保它們不會(huì)帶來(lái)安全風(fēng)險(xiǎn)或法律問(wèn)題。例如:可以查看其 Github 頁(yè)面或其他社區(qū)網(wǎng)站來(lái)評(píng)估其質(zhì)量和活躍度。
- 實(shí)行最小依賴原則:為了減少安全風(fēng)險(xiǎn)和復(fù)雜性,可以使用最小依賴原則,只引入必要的依賴包。在運(yùn)維過(guò)程中,我們每次的代碼改動(dòng),要小心引入不必要的依賴包,除此之外,我們也可以定期 Review 依賴包列表,及時(shí)移出不必要的依賴。這樣可以盡量減少依賴包中可能存在的安全問(wèn)題,同時(shí)也可以減少軟件系統(tǒng)的復(fù)雜性。
- 限制依賴包的版本范圍:限制依賴包的版本范圍可以減少依賴包中可能存在的安全問(wèn)題。可以使用 SemVer 規(guī)范來(lái)定義版本,并確保所有依賴包的版本都是兼容的。
- 開(kāi)啟安全漏洞的告警通知:這樣在運(yùn)維階段可以第一時(shí)間發(fā)現(xiàn)項(xiàng)目依賴包里的 Critical 或者 High 級(jí)別的安全漏洞。
- 制定策略和流程:根據(jù)當(dāng)前運(yùn)維階段的項(xiàng)目需要,制定適合的策略和流程,以確保依賴庫(kù)的安全性得到持續(xù)的管理和審查。例如,制定規(guī)則和標(biāo)準(zhǔn)(比如大家要堅(jiān)持最小依賴原則),以確保在開(kāi)發(fā)新功能或更新依賴關(guān)系時(shí)遵循最佳安全實(shí)踐。
4.如何度量
要度量運(yùn)維項(xiàng)目上軟件代碼依賴包的安全管理做得好不好,可以考慮以下幾個(gè)方面:
- 依賴掃描覆蓋率:度量依賴掃描工具掃描項(xiàng)目依賴的覆蓋率。較高的覆蓋率表示掃描工具可以發(fā)現(xiàn)更多的漏洞和安全問(wèn)題,這有助于提高項(xiàng)目的安全性。
- 安全漏洞修復(fù)時(shí)間:度量漏洞修復(fù)時(shí)間,即從掃描發(fā)現(xiàn)漏洞到修復(fù)漏洞所需的時(shí)間。較短的漏洞修復(fù)時(shí)間意味著團(tuán)隊(duì)更加重視安全,并且能夠快速響應(yīng)漏洞。
- 安全漏洞數(shù)量:度量掃描出的安全漏洞的數(shù)量,較少的漏洞數(shù)量通常意味著項(xiàng)目的安全性較好。
- 依賴升級(jí)的頻率和成功率:度量依賴升級(jí)的頻率和成功率。較高的依賴升級(jí)頻率和成功率意味著團(tuán)隊(duì)能夠及時(shí)升級(jí)依賴以解決漏洞和安全問(wèn)題。
- 安全策略的執(zhí)行情況:度量團(tuán)隊(duì)在實(shí)踐安全策略方面的執(zhí)行情況,如是否定期審查代碼、定期進(jìn)行安全測(cè)試等。較好的安全策略執(zhí)行情況可以幫助確保項(xiàng)目的安全性。
這些度量指標(biāo)可以幫助我們了解運(yùn)維項(xiàng)目上軟件代碼依賴包的安全管理做得好不好,以評(píng)估我們運(yùn)維項(xiàng)目的安全實(shí)踐和改進(jìn)方向。
四、CI/CD(Continuous Integration/Continuous Delivery) 流水線(Pipeline)的安全管理
(圖片來(lái)源:https://www.preemptive.com/wp-content/uploads/2022/06/PreEmptive-icons-10.png)
1.概念
在軟件行業(yè)中,CI/CD 流水線是加速軟件開(kāi)發(fā)和集成、快速上線產(chǎn)品的關(guān)鍵工具。然而,在 CI/CD 流水線的自動(dòng)化過(guò)程中,安全問(wèn)題往往容易被忽視,CI/CD 流水線的安全對(duì)于確保整個(gè)軟件系統(tǒng)的安全和可靠性至關(guān)重要。CI/CD 流水線安全管理涉及到的方面眾多,包括但不限于:
- 對(duì) CI/CD 系統(tǒng)本身的安全檢查
- 對(duì) CI/CD 流水線操作權(quán)限的檢查
- 對(duì) CI/CD 流水線的執(zhí)行日志安全檢查
- 對(duì)生成產(chǎn)物(Artifacts)的安全檢查
- 對(duì)程序代碼的檢查
- 對(duì)第三方依賴的檢查
- 對(duì)容器鏡像的檢查
- 對(duì)部署環(huán)境的檢查等
2.流水線的管理在運(yùn)維中的重要性
在運(yùn)維項(xiàng)目中,CI/CD 流水線安全管理至關(guān)重要。由于它涉及到公司業(yè)務(wù)的正常運(yùn)行以及用戶數(shù)據(jù)的安全,因此對(duì) CI/CD 流水線進(jìn)行安全管理可以確保整個(gè) CI/CD 過(guò)程的可靠性和安全,并為維護(hù)軟件系統(tǒng)的穩(wěn)定性和企業(yè)的口碑提供保障。具體來(lái)說(shuō),CI/CD 流水線安全管理在運(yùn)維中能發(fā)揮以下作用:
- 幫助防止?jié)撛诘陌踩┒矗篊I/CD 流水線安全檢查可以幫助開(kāi)發(fā)團(tuán)隊(duì)發(fā)現(xiàn)可能存在的安全漏洞,并及時(shí)修復(fù),從而減少黑客攻擊和數(shù)據(jù)泄露等安全問(wèn)題的風(fēng)險(xiǎn)。
- 幫助確保整個(gè) CI/CD 過(guò)程的安全:CI/CD 流水線安全檢查可以確保 CI/CD 系統(tǒng)本身的安全,包括對(duì)流水線操作權(quán)限的檢查、對(duì)程序代碼的檢查、對(duì)第三方依賴的檢查、對(duì)容器鏡像的檢查、對(duì)部署環(huán)境的檢查等,從而確保整個(gè) CI/CD 過(guò)程的安全。
- 提高安全意識(shí):CI/CD 流水線安全檢查可以幫助開(kāi)發(fā)團(tuán)隊(duì)了解軟件安全的重要性,并提高安全意識(shí),從而有助于改善整個(gè)組織的安全文化。
3.流水線的管理在運(yùn)維中如何落地
(1) CI/CD 系統(tǒng)的安全
除第三方所提供的 CI/CD 系統(tǒng)外,對(duì)于自建的 CI/CD 系統(tǒng)和它所真正執(zhí)行任務(wù)的 Agent/Runner(構(gòu)建、部署任務(wù)執(zhí)行程序)我們都需要確保它自身的安全。在允許的前提下,確保使用的 CI/CD 及其 Agent 所在的操作系統(tǒng)是最新版本,且已安裝最新的安全補(bǔ)丁,以防止已知的漏洞被利用。在大型公司中對(duì)于操作系統(tǒng)的安全性一般有安全團(tuán)隊(duì)專門負(fù)責(zé)。
對(duì)于 CI/CD 服務(wù)器系統(tǒng)本身我們需要做到的有:
- 定期更新系統(tǒng)所使用的插件和組件,例如:Jenkins 中的各類第三方插件。
- 對(duì)于報(bào)出的安全漏洞需要及時(shí)做出響應(yīng)和修復(fù),例如 2023 年初發(fā)生的 CircleCI secrets 泄漏事件。
- 確保其使用了 TLS 加密,避免中間人攻擊竊取訪問(wèn)權(quán)限。
對(duì) CI/CD 系統(tǒng)及其數(shù)據(jù)定期進(jìn)行備份,做好災(zāi)難恢復(fù)計(jì)劃。對(duì)于 Agent(構(gòu)建、部署任務(wù)執(zhí)行程序)我們需要做到的有:
- 及時(shí)更新 Agent 的系統(tǒng)鏡像和依賴,以確保安全和可靠性。
- 對(duì) Agent 所能訪問(wèn)的網(wǎng)絡(luò)進(jìn)行限制,以防止未經(jīng)授權(quán)的訪問(wèn)和數(shù)據(jù)泄露。
- 堅(jiān)持最小權(quán)限原則,盡量不使用 root 用戶運(yùn)行 Agent。
- 給各個(gè)項(xiàng)目使用專屬的 Agent,避免來(lái)自其他項(xiàng)目的未授權(quán)操作。
(2) CI/CD 流水線訪問(wèn)控制
流水線中未授權(quán)的部署操作會(huì)影響線上系統(tǒng)的穩(wěn)定性,攻擊者也可以通過(guò)流水線的部署操作將線上版本替換為老版本而制造漏洞。部分流水線可能可以直接下載項(xiàng)目所構(gòu)建的中間產(chǎn)物或是項(xiàng)目編譯后的二進(jìn)制文件,被未授權(quán)的人員獲取可能會(huì)有安全風(fēng)險(xiǎn)。由此可見(jiàn),對(duì)流水線訪問(wèn)權(quán)限的檢查尤為重要。我們需要確保項(xiàng)目的流水線只能由團(tuán)隊(duì)成員所訪問(wèn),并要求團(tuán)隊(duì)成員啟用多因子驗(yàn)證 MFA 提高安全性。對(duì)于存儲(chǔ)在 CI/CD 系統(tǒng)中的密鑰,我們需要及時(shí)的了解是否已對(duì)其進(jìn)行了加密,這樣有利于避免其他人獲取敏感信息。
(3) 編寫安全的 CI/CD 流水線代碼
雖然很多場(chǎng)景下我們運(yùn)維團(tuán)隊(duì)所維護(hù)的都是一些老的服務(wù)或系統(tǒng),但我們?cè)谶\(yùn)維過(guò)程中可能會(huì)對(duì)現(xiàn)有的 CI/CD 流水線進(jìn)行一些修改加固。在編寫流水線代碼時(shí),我們應(yīng)該注意的點(diǎn)有:
- 不使用未經(jīng)授權(quán)的庫(kù)和組件。
- 不使用硬編碼的密碼和敏感信息。
- 不將敏感信息輸出在流水線日志中。
- 不將生產(chǎn)數(shù)據(jù)作為流水線的測(cè)試輸入。
在常見(jiàn)的 CI/CD 流水線中也應(yīng)該包含以下步驟:
- 對(duì)源代碼進(jìn)行掃描:源代碼可能存在 SQL 注入、跨站攻擊、內(nèi)存溢出等常見(jiàn)安全漏洞,因此可以使用 SonarQube 等工具進(jìn)行掃描,以控制源代碼的質(zhì)量。
- 對(duì)依賴版本進(jìn)行掃描:依賴庫(kù)的版本可能存在安全漏洞,因此需要掃描依賴庫(kù)的版本,并及時(shí)升級(jí)版本以獲得最新的安全修復(fù)。
- 對(duì)基礎(chǔ)容器鏡像的掃描:容器鏡像中可能存在弱密碼訪問(wèn)權(quán)限、不安全的軟件包或內(nèi)嵌遠(yuǎn)程控制程序等問(wèn)題,因此掃描基礎(chǔ)容器鏡像也很重要,以此避免此類供應(yīng)鏈攻擊。
4.如何度量
要度量運(yùn)維項(xiàng)目上 CI/CD 流水線是否安全,可以考慮以下幾個(gè)方面:
- 漏洞發(fā)現(xiàn)和修復(fù)速度:好的流水線應(yīng)該能夠及時(shí)發(fā)現(xiàn)漏洞和及時(shí)更新和修復(fù)系統(tǒng)級(jí)別的漏洞,以最小化安全漏洞帶來(lái)的風(fēng)險(xiǎn)。
- 訪問(wèn)控制的完整性:好的流水線應(yīng)該遵守最小權(quán)限原則,能夠避免未經(jīng)授權(quán)的訪問(wèn)和數(shù)據(jù)泄露,提高整個(gè)系統(tǒng)的安全性。
- 代碼質(zhì)量的合規(guī)性:好的流水線應(yīng)該能及時(shí)通過(guò)自動(dòng)化工具發(fā)現(xiàn)硬編碼的密碼和敏感信息,確保高質(zhì)量的代碼,符合安全標(biāo)準(zhǔn)和最佳實(shí)踐。
五、個(gè)人隱私數(shù)據(jù)管理
(圖片來(lái)源:https://www.cyberark.com/wp-content/uploads/2020/04/Laptop-with-Fingerprint-Icon-scaled.jpg)
1.概念
個(gè)人身份信息(Personal Identifiable Information,后文簡(jiǎn)稱 PII)是指單獨(dú)使用或與其他相關(guān)數(shù)據(jù)一起使用時(shí)可以識(shí)別個(gè)人身份的信息。
PII 按照識(shí)別類型可以分為:
- 唯一識(shí)別一個(gè)人的直接標(biāo)識(shí)符(例如,護(hù)照號(hào)碼,身份證號(hào)碼,社會(huì)安全號(hào)碼等)。
- 與其他準(zhǔn)標(biāo)識(shí)符組合以成功識(shí)別一個(gè)人的準(zhǔn)標(biāo)識(shí)符(例如,姓名,出生日期,種族,宗教信仰等)。
PII 按照敏感類型可以分為:
- 敏感的標(biāo)識(shí)符(身份證號(hào)碼,社會(huì)安全號(hào)碼 SSN、駕照號(hào)碼、財(cái)務(wù)信息和醫(yī)療記錄等)。
- 非敏感的標(biāo)識(shí)符(郵政編碼、種族、性別和出生日期等)。
2.個(gè)人隱私數(shù)據(jù)管理在運(yùn)維中的重要性
在運(yùn)維的過(guò)程中,工程師和支持團(tuán)隊(duì)經(jīng)常需要排查線上的問(wèn)題,不可避免的需要查看系統(tǒng)日志,服務(wù)日志,數(shù)據(jù)庫(kù)數(shù)據(jù)等信息。而這些信息中經(jīng)常會(huì)出現(xiàn) PII,這使得 PII 很容易泄漏,而 PII 的泄露可能會(huì)違反當(dāng)?shù)氐姆桑部赡鼙缓诳屠?,給用戶帶來(lái)潛在的威脅。
3.個(gè)人隱私數(shù)據(jù)管理在運(yùn)維中如何落地
根據(jù)公司所在國(guó)家的法律和公司本身的業(yè)務(wù),定義出 PII 的列表。
在運(yùn)維的初始階段,需要依據(jù) PII 列表識(shí)別項(xiàng)目中的 PII 并進(jìn)行隱藏。 因?yàn)槿罩局械?PII 的數(shù)據(jù)有時(shí)候?qū)ε挪閱?wèn)題時(shí)非常重要,所以在隱藏 PII 的時(shí)候,可以采取部分隱藏的策略,既可以達(dá)到隱藏 PII 的目的,又可以使用部分 PII 數(shù)據(jù)對(duì)問(wèn)題進(jìn)行調(diào)查。
在開(kāi)發(fā)產(chǎn)品功能時(shí),避免暴露或者輸出任何 PII 。在運(yùn)維過(guò)程中,如果發(fā)現(xiàn) PII,也需要及時(shí)的隱藏。
在日常運(yùn)維開(kāi)發(fā)中,設(shè)立項(xiàng)目中的 PII 檢查規(guī)則,并且及時(shí)和團(tuán)隊(duì)進(jìn)行同步:
(1) 代碼中的 PII
不能使用真實(shí)用戶的 PII 數(shù)據(jù)作為測(cè)試數(shù)據(jù)提交到代碼倉(cāng)庫(kù),因?yàn)橐话闱闆r下,代碼的讀取權(quán)限是被很多人擁有的,這樣很容易泄漏 PII。
(2) 數(shù)據(jù)庫(kù)中的 PII1
- 對(duì)于敏感的 PII 數(shù)據(jù),在數(shù)據(jù)庫(kù)中需要加密存儲(chǔ),這樣可以進(jìn)一步保證客戶的數(shù)據(jù)安全。
- 對(duì)于生產(chǎn)的數(shù)據(jù)庫(kù),也需要通過(guò)權(quán)限控制來(lái)嚴(yán)格控制訪問(wèn)的權(quán)限,確保最小權(quán)限原則。
- 對(duì)于生產(chǎn)環(huán)境數(shù)據(jù)庫(kù)的備份庫(kù),也同樣要注意訪問(wèn)權(quán)限的嚴(yán)格控制。
- 在對(duì)生產(chǎn)環(huán)境數(shù)據(jù)庫(kù)進(jìn)行拷貝時(shí),也要注意安全的方式,避免數(shù)據(jù)的泄露,尤其是包含 PII 的數(shù)據(jù)。
- 如果有從生產(chǎn)環(huán)境刷庫(kù)到測(cè)試環(huán)境的需求時(shí),一定要有對(duì)應(yīng)的清除數(shù)據(jù)庫(kù)中 PII 的腳本,確保用戶數(shù)據(jù)的安全。
(3) 日志中的 PII
在代碼中隱藏日志輸出的 PII,日志系統(tǒng)是我們定位問(wèn)題使用最多的工具,支持團(tuán)隊(duì)或者開(kāi)發(fā)人員大多都有查看日志的權(quán)限,因此隱藏日志中的 PII 十分重要。我們可以在 Pipeline 中配置檢查 PII 日志的插件,并配置告警,便于我們及時(shí)發(fā)現(xiàn)。
在運(yùn)維過(guò)程中如果有新需求進(jìn)行產(chǎn)品功能開(kāi)發(fā)時(shí),避免暴露 PII:
- 添加故事卡 PII 檢查點(diǎn),在創(chuàng)建故事卡和需求梳理時(shí),需要盡量識(shí)別出是否有 PII 泄漏的風(fēng)險(xiǎn)并添加檢查點(diǎn)。
- 代碼評(píng)審環(huán)節(jié),確認(rèn)代碼的改動(dòng)是否會(huì)給日志中引入 PII。
發(fā)現(xiàn) PII 相關(guān)的泄露問(wèn)題及時(shí)通知公司的安全部門,采取相應(yīng)的措施。
4.如何度量
要度量運(yùn)維項(xiàng)目個(gè)人隱私數(shù)據(jù)的管理做得好不好,可以考慮以下幾個(gè)方面:
根據(jù)公司或項(xiàng)目上記錄的 PII 泄露事故數(shù)量作為我們度量運(yùn)維團(tuán)隊(duì)是否做好了 PII 保護(hù)的一個(gè)指標(biāo)。
當(dāng)發(fā)現(xiàn) PII 泄露之后,團(tuán)隊(duì)的應(yīng)對(duì)和處理措施更能反映出大家的信息安全的意識(shí),因此這一點(diǎn)也是一個(gè)重要的度量指標(biāo)。
六、威脅建模
(圖片來(lái)源:https://www.guidepointsecurity.com/wp-content/uploads/2020/09/service-icon-threat-model.svg)
1.概念
威脅建模是一種結(jié)構(gòu)化的分析和解決安全問(wèn)題的方法,用來(lái)識(shí)別、量化威脅,并且有助于思考如何應(yīng)對(duì)威脅。在公司的安全部門一般會(huì)每年定期開(kāi)展威脅建?;顒?dòng),除此之外,威脅建模還會(huì)發(fā)生在項(xiàng)目前期,以及每當(dāng)業(yè)務(wù)或者技術(shù)有較大變更的時(shí)候開(kāi)展。
2.威脅建模在運(yùn)維中的重要性
在運(yùn)維的過(guò)程中,威脅建模可以為運(yùn)維團(tuán)隊(duì)提供清晰的安全視野,最大限度的預(yù)防生產(chǎn)的安全事故。尤其是在運(yùn)維團(tuán)隊(duì)剛?cè)雸?chǎng)接手項(xiàng)目時(shí),威脅建模有助于團(tuán)隊(duì)梳理清楚所有安全方面的威脅,及時(shí)去發(fā)現(xiàn)和修復(fù)已有的安全威脅。比如說(shuō)通過(guò)威脅建模明確人員的權(quán)限,最大防止數(shù)據(jù)庫(kù)、服務(wù)器被不應(yīng)該接觸權(quán)限的人誤刪除或者惡意刪除等。
3.威脅建模在運(yùn)維中如何落地
(1) 確定運(yùn)維項(xiàng)目威脅建模的時(shí)間
- 運(yùn)維團(tuán)隊(duì)從其他團(tuán)隊(duì)(交付團(tuán)隊(duì)或者此前的運(yùn)維團(tuán)隊(duì))開(kāi)始接收項(xiàng)目的運(yùn)維工作時(shí)。
- 在運(yùn)維過(guò)程中發(fā)生重大變更時(shí),比如項(xiàng)目架構(gòu)的調(diào)整,引入新的組件等。
- 運(yùn)維過(guò)程中有新的發(fā)現(xiàn)時(shí)。(交付時(shí)上一個(gè)團(tuán)隊(duì)沒(méi)有告知到的或者因?yàn)槟承┰蚪唤訄F(tuán)隊(duì)也不是很清楚,交接時(shí)間短暫,沒(méi)有能在交接時(shí),對(duì)項(xiàng)目有完整的、徹底的認(rèn)知)。
- 團(tuán)隊(duì)可以也可以定期去開(kāi)展威脅建模。
(2) 準(zhǔn)備最新的、準(zhǔn)確的架構(gòu)圖和數(shù)據(jù)流圖
運(yùn)維項(xiàng)目即意味著項(xiàng)目主要功能已經(jīng)完成并且已經(jīng)在線上運(yùn)行,那么也就意味著在這個(gè)時(shí)刻,項(xiàng)目的架構(gòu)、數(shù)據(jù)流都已經(jīng)固定下來(lái)。但是每個(gè)項(xiàng)目實(shí)際產(chǎn)出的各有差異,將有三種情況:
第一種情況,那么運(yùn)維團(tuán)隊(duì)只需要簡(jiǎn)單驗(yàn)證架構(gòu)圖和數(shù)據(jù)流圖的準(zhǔn)確性即可。
第二種情況,則需要結(jié)合代碼、現(xiàn)存文檔以及過(guò)期的架構(gòu)圖重新完成最新的、準(zhǔn)確的架構(gòu)圖和數(shù)據(jù)流圖的繪制。出現(xiàn)第二種情況的原因有很多,比較常見(jiàn)的是在某個(gè)時(shí)刻退役了某些功能但是并沒(méi)有刪除代碼,或者是第三方服務(wù)發(fā)生了改變,但并沒(méi)有及時(shí)更新架構(gòu)圖等。
第三種情況,在文檔嚴(yán)重缺失的情況下,只能通過(guò)閱讀代碼的方式來(lái)重新繪制。
- 項(xiàng)目有最新的、準(zhǔn)確的架構(gòu)圖和數(shù)據(jù)流圖。
- 項(xiàng)目的架構(gòu)圖和數(shù)據(jù)流圖過(guò)期,不一定準(zhǔn)確。
- 由于某些原因沒(méi)有架構(gòu)圖和數(shù)據(jù)流圖。
(3) 根據(jù) STRIDE 識(shí)別圖中每一個(gè)元素的威脅
團(tuán)隊(duì)成員分別扮演不同的角色,包括從用戶、開(kāi)發(fā)人員、運(yùn)維人員、競(jìng)爭(zhēng)者以及黑客組織。從他們的行為習(xí)慣或者目的出發(fā),以 STRIDE 為攻擊的角度去思考如果你是這類用戶,你會(huì)怎么做威脅系統(tǒng)安全的事情。
- Spoofing 欺騙
- Tampering 篡改
- Repudiation 否認(rèn)、抵賴
- Information disclosure 信息泄露
- Deny of service 拒絕服務(wù)
- Elevation of privilege 特權(quán)提升
(4) 根據(jù) DREAD 對(duì)威脅進(jìn)行風(fēng)險(xiǎn)評(píng)估
對(duì)第二步識(shí)別出來(lái)的風(fēng)險(xiǎn)從以下幾個(gè)緯度進(jìn)行打分,確定風(fēng)險(xiǎn)等級(jí)。
- Damage potential 潛在損失
- Reproducibility 重現(xiàn)性
- Exploitability 利用難度
- Affected users 受影響用戶數(shù)量
- Discoverability 是否容易被發(fā)現(xiàn)
(5) 設(shè)置應(yīng)對(duì)措施
風(fēng)險(xiǎn)評(píng)估完成后,團(tuán)隊(duì)便會(huì)獲取到一個(gè)按照優(yōu)先級(jí)排序的風(fēng)險(xiǎn)列表 。那么這一步就需要按照優(yōu)先級(jí)制定相關(guān)的措施 。例如在做完某次威脅建模后發(fā)現(xiàn)有SQL 注入威脅和發(fā)現(xiàn)有用戶權(quán)限提升為管理員權(quán)限。那么此時(shí)根據(jù)這兩種威脅帶來(lái)的影響排出優(yōu)先級(jí),并且制定相對(duì)應(yīng)的措施(如下表):
威脅 | 措施 |
SQL 注入威脅(高風(fēng)險(xiǎn)) | 更改相關(guān) SQL,并且讓 DBA 團(tuán)隊(duì)進(jìn)行評(píng)審 |
用戶權(quán)限提升為管理員權(quán)限(中風(fēng)險(xiǎn)) | 由運(yùn)維人員收回用戶的管理員權(quán)限 |
4.如何度量
要度量運(yùn)維項(xiàng)目上威脅建模做得好不好,可以考慮以下幾個(gè)方面:
- 團(tuán)隊(duì)是否有基于運(yùn)維項(xiàng)目時(shí)間(新的交接,重大變更,新的發(fā)現(xiàn))進(jìn)行威脅建模。
- 每一次進(jìn)行威脅建模后生成的措施是否都完成。
- 團(tuán)隊(duì)是否及時(shí)對(duì)數(shù)據(jù)流圖進(jìn)行了更新,并根據(jù)新的數(shù)據(jù)流圖更新來(lái)完成威脅建模。
七、Web 應(yīng)用防火墻
(圖片來(lái)源:https://encrypted-tbn1.gstatic.com/images?q=tbn:ANd9GcTEe9BAIoNTetWZ7EJgxbd99eXdXOoLza26MqwnTiwoZ8fOi-52)
1.概念
Web 應(yīng)用程序防火墻(后文簡(jiǎn)稱 WAF),通過(guò)過(guò)濾和監(jiān)控 Web 應(yīng)用程序與互聯(lián)網(wǎng)之間的 HTTP 流量來(lái)幫助保護(hù) Web 應(yīng)用程序。它是一種反向代理,引導(dǎo)客戶端通過(guò) WAF 到達(dá)服務(wù)器,從而防止暴露服務(wù)器。WAF 可以快速簡(jiǎn)便地修改規(guī)則,因而可以更迅速地響應(yīng)不同的攻擊手段。例如,當(dāng)發(fā)生拒絕服務(wù)攻擊(DDoS) 攻擊時(shí),可通過(guò)修改 WAF 規(guī)則快速實(shí)施速率限制。
2.WAF 和普通防火墻的區(qū)別
WAF 和普通網(wǎng)絡(luò)防火墻之間的關(guān)鍵技術(shù)區(qū)別在于 WAF 保護(hù) OSI 模型第 7 層應(yīng)用層的攻擊。而網(wǎng)絡(luò)防火墻在 OSI 模型第 3 層網(wǎng)絡(luò)層和第 4 層傳輸層運(yùn)行,保護(hù)數(shù)據(jù)傳輸和網(wǎng)絡(luò)流量。WAF 位于外部用戶和 Web 應(yīng)用程序之間,用于分析所有 HTTP 通信。然后,它會(huì)在惡意請(qǐng)求到達(dá)用戶或 Web 應(yīng)用程序之前檢測(cè)并阻止它們。網(wǎng)絡(luò)防火墻主要目標(biāo)是將安全區(qū)域與不太安全的區(qū)域分開(kāi),并控制兩者之間的通信。
3.Web 應(yīng)用防火墻在運(yùn)維中的重要性
WAF 保護(hù)著網(wǎng)站的應(yīng)用程序,在網(wǎng)站的安全維護(hù)上扮演著重要角色。從實(shí)際運(yùn)維經(jīng)驗(yàn)中,我們發(fā)現(xiàn)許多網(wǎng)站在搭建完成后就由不同人管理,這樣會(huì)造成網(wǎng)站上存著不同程序員的管理風(fēng)格,一旦疏于管理或是在缺失上下文的情況下依循不同邏輯擴(kuò)增網(wǎng)站的架構(gòu),在新舊架構(gòu)并存、語(yǔ)法混亂的狀態(tài)下,網(wǎng)站其實(shí)很容易就會(huì)出現(xiàn)安全漏洞,但團(tuán)隊(duì)往往不自知而讓黑客有機(jī)可趁,因此就會(huì)需要 WAF 為網(wǎng)站筑起防護(hù)墻,保障網(wǎng)站安全。
4.Web 應(yīng)用防火墻在運(yùn)維中如何落地
(1) 準(zhǔn)備工作
首先對(duì)需接入 WAF 進(jìn)行防護(hù)的網(wǎng)站的業(yè)務(wù)情況進(jìn)行全面梳理,幫助我們了解當(dāng)前業(yè)務(wù)狀況和具體數(shù)據(jù),為后續(xù)配置 WAF 的防護(hù)策略提供依據(jù)。主要梳理的內(nèi)容包括:
- 網(wǎng)站/應(yīng)用業(yè)務(wù)每天的流量峰值情況,包括 Mbps、QPS。
- 業(yè)務(wù)的主要用戶群體(例如,訪問(wèn)用戶的主要來(lái)源地區(qū))。
- 明確架構(gòu),是否有 App 端、Windows 端、Linux 端、代碼回調(diào)或其他環(huán)境的客戶端。
- 源站服務(wù)器的網(wǎng)絡(luò)配置和業(yè)務(wù)端口。
- 源站服務(wù)器的請(qǐng)求處理性能,判斷需要的 DDoS 防護(hù)規(guī)格。
(2) 實(shí)現(xiàn)
- 硬件 WAF 串行或旁路部署在網(wǎng)絡(luò)上,通過(guò)網(wǎng)頁(yè)界面進(jìn)行管理和規(guī)則配置,價(jià)格較高,但部署方便,運(yùn)維管理比較省心。
- 軟件 WAF 以 ModSecurity、Naxsi、Wazuh 等免費(fèi)開(kāi)源軟件為代表,部署在每一臺(tái) Web 服務(wù)器上,需要網(wǎng)絡(luò)安全人員熟悉其配置規(guī)則,但服務(wù)器數(shù)量多了之后,這種模式安裝的軟件,維護(hù)管理很快就會(huì)變得不太方便,因?yàn)椴煌姆?wù)器可能使用不同的規(guī)則。
- 以各類云加速 + CDN 類產(chǎn)品為代表,如國(guó)外的 CloudFlare、國(guó)內(nèi)的各種云加速等,對(duì)用戶隱藏真實(shí)服務(wù)器地址,云 WAF 作為反向代理執(zhí)行安全控制,是用戶瀏覽器和真實(shí)服務(wù)器之間的中間人。但要注意對(duì)于涉及商業(yè)秘密等場(chǎng)景,要謹(jǐn)慎選擇。
- 對(duì)于自研發(fā)的方式,目前 Nginx 配合 Lua 搭建簡(jiǎn)易的黑名單式 WAF 較為常見(jiàn)。
(3) 產(chǎn)品選擇
目前 WAF 的產(chǎn)品形態(tài)主要有硬件 WAF、軟件 WAF、云 WAF 服務(wù)和自研發(fā)方式,我們可以項(xiàng)目的實(shí)際情況,去選擇一款合適的進(jìn)行部署:
(4) 策略配置
根據(jù)應(yīng)用程序的需求,配置 WAF 策略,包括白名單、黑名單、訪問(wèn)控制規(guī)則、SQL 注入防御、跨站點(diǎn)腳本 XSS 防御等。
(5) 性能測(cè)試
在部署完 WAF 之后,比較容易忽視一點(diǎn)的是,我們需要對(duì)其進(jìn)行性能測(cè)試。與服務(wù)的性能測(cè)試相同,旨在確保 WAF 的加入不會(huì)影響服務(wù)正常的性能指標(biāo)。
(6) 日志監(jiān)控
有了 WAF 之后,最重要的一點(diǎn)是要進(jìn)行數(shù)據(jù)的采集,監(jiān)控和智能攔截。將 WAF 的日志和性能指標(biāo)與現(xiàn)有日志監(jiān)控系統(tǒng)集成,便于時(shí)刻監(jiān)控 WAF 狀態(tài),定期檢查 WAF 的日志,監(jiān)控應(yīng)用程序的安全狀況,發(fā)現(xiàn)異常行為需要告警并采取必要的措施,以及及時(shí)升級(jí)和修復(fù) WAF。
5.如何度量
要度量運(yùn)維項(xiàng)目上 WAF 的效果,可以先進(jìn)行威脅建模,根據(jù)可能會(huì)受到的攻擊,制定 WAF 的測(cè)試方案。主要可能包含以下方面:
- 模擬黑客攻擊看是否阻斷生效。
- 模擬災(zāi)難發(fā)生(WAF 宕機(jī)或網(wǎng)絡(luò)波動(dòng)等)看是否切換備用 WAF 正常工作。
- 若無(wú)備用 WAF,服務(wù)是否能正常訪問(wèn)到源服務(wù)器。
- 模擬大流量并發(fā)看是否 WAF 能抗壓正常工作。
- WAF 是否支持調(diào)整策略。
這些度量指標(biāo)可以幫助我們了解 WAF 功能是否正常,幫助我們運(yùn)維項(xiàng)目的安全實(shí)踐和改進(jìn)方向。
八、總結(jié)
當(dāng)談到運(yùn)維中安全管理時(shí),我們不僅僅在維護(hù)和管理IT系統(tǒng),更是在守護(hù)企業(yè)的核心利益。無(wú)論是保護(hù)敏感信息免受黑客威脅,還是確保系統(tǒng)的連續(xù)可用性,安全管理都不容忽視。通過(guò)對(duì)權(quán)限控制,密鑰和證書的妥善管理,代碼依賴的安全管理,CICD 流水線的安全檢查,敏感信息的保護(hù),以及建立有效的 Web 應(yīng)用防火墻和及時(shí)進(jìn)行威脅建模,我們可以建立起一道堅(jiān)固的安全屏障,以抵御各種內(nèi)外部風(fēng)險(xiǎn)。
然而,安全管理不僅僅是一項(xiàng)任務(wù),更是一種文化。它需要貫穿于運(yùn)維的始終,貫徹于每個(gè)細(xì)節(jié)。通過(guò)在運(yùn)維階段進(jìn)行全面的安全管理,能夠確保業(yè)務(wù)的可持續(xù)性,維護(hù)客戶的信任,以幫助我們?cè)诟?jìng)爭(zhēng)激烈的市場(chǎng)中脫穎而出。因此,我們應(yīng)始終牢記,在運(yùn)維中,安全是不可或缺的基石。