CSSLP 學習筆記
保護軟體的核心觀念 Part 2– IAM
前言
今年希望能學會資安相關知識,但因為學習經費不足,所以希望透過寫部落格直接讓社群上的專家驗證我的筆記是否正確,來完成取得認證的里程碑。
閱讀 Part 1:保護軟體的核心觀念 Part 1 — CIA triad
IAM
應用程式負責控制存取權限,對於整個業務流程來說,應用程式通常是通往資料調用的最前線,也是最主要存取任何資訊與其他系統的主要進入點。 但這也代表著風險,因為是主要的進入點,只要是任何未經授權的存取或是活動對於安全性來說都是一種威脅。因此我們會希望限制強大又穩定的存取權限控制系統給應用程式,通常我們稱這種為 IAM(Identification and Acess Management)。
IAM 由四個部分組成,Identification、Authorization、Accounting(或是 Auditing)。
Identification
身份證明是用來幫助我們辨識,是誰正在試圖獲得權限存取系統、網路、資料或是設施。這個身份可以是一個人、一個系統處理(System process),當辨識到身份後,依據設置好的規則或是相關安全政策,給予這個身份適當的存取與控制權限,或是拒絕相關操作。
身份一定得要是獨特的,而非共享的身份,這樣才能知道相關的存取請求是人還是系統處理發起。如果今天這個存取請求是共享的,很難審查實際是哪個身份對這個操作發出請求。
在建立身份時,要確保註冊流程是安全的,這意思是當某人想要建立一個存取的 ID 時,我們知道它確實是此人來申辦。如同開銀行戶頭一樣,銀行都會確認是本人親自進行開護,而非機器代理或是其他有心人士申請。防止偽造身份除了確保擁有者的身份外,我們可以透過 CAPTCHA 來防止機器人代為申請。
驗證身份也可以透過某人擁有知識來達到證明所有權(Proof of possession),通常是透過該位使用者只會知道某個答案來證明,以便我們可以確定或驗證那個人的身份。過去,我們透過多種方法來識別人員或實體,但如果要實行安全性的問責制(Accountability),也就是知道哪些人在系統上進行活動,我們可以透過像是使用者 ID,員工編號,使用者帳號等等來辨識。我們通常使用使用者 ID 做為辨識,因為使用者名稱不是唯一的識別碼。我們可能有幾個實際上共享相同名稱的人同時使用同個系統,這將使得問責活動會變得困難。
一旦確認了身份,例如有人說:「嗨,我是冠融」,下一步就是對這人進行身份驗證或證明。
Authentication
我們針對「嗨,我是冠融」這句話進行驗證或是證明身份的過程稱之為認證。我們透過通過驗證、確認或證明 ID 執行認證,這過程有助於我們確保只有合法的使用者可以動用所提供的身份。我們通常有三種身份驗證方法,首先是透過使用者提供所知道的知識進行認證;二是透過擁有的東西進行所有權的認證;或是透過個人特徵進行身份驗證。
幾個常見透過知識進行認證如:使用密碼、 PIN 碼、或是機密性的問答可以辨識欲取得認證的人是否擁有該知識,但知識驗證的弱點在於,例如密碼是個靜態的值,如果我們沒有定期更新密碼,一旦駭客取得密碼,就可以利用該密碼登入系統進行攻擊,這也是為什麼現在很常見到系統要求使用者過陣子就要更新密碼。
幾個常見透過所有權進行認證如透過 Smart Card,ID Card 進行刷卡驗證,或是鑰匙,對的鑰匙才能進入對的建築。
Biometrics
相較於傳統的密碼或PIN碼,生物辨識提供了一種更安全且便利的方式來確認個人身份。生物辨識技術的基本原理是基於每個人獨有的生理或行為特徵,例如指紋、虹膜、臉部特徵或聲音等等。這些特徵幾乎不可能被複製或偽造,從而為使用者的身份驗證提供了更高層次的安全保護。
一個常見的生物辨識驗證範例是指紋辨識技術。以前的 iPhone 和 Macbook Pro 就有所謂的「指紋解鎖」的功能,允許使用者簡單地觸摸一個感應器來解鎖設備或驗證身份。這種方法不僅迅速而且方便,還大大降低了密碼被猜測或盜用的風險。在企業環境中,指紋辨識也被廣泛用於控制對敏感區域或資訊的訪問,從而確保只有正確身份及獲得授權人員能夠進入或存取這些資源。
除了指紋辨識,虹膜辨識也是一種生物辨識技術。虹膜是眼球中具有獨特圖案的部分,由於其複雜性和唯一性,它提供了一種高度安全的身份驗證方式。航空業是虹膜辨識技術應用的一個典型範例,許多國際機場使用虹膜辨識系統來加快旅客通過安全檢查和邊境控制的速度。
Single Sign-on (SSO)
SSO 是一個讓使用者可以透過一組憑證來存取多個相關但獨立的應用程式或服務。早期最有名的 SSO 就是 Google Login, Facebook Login。這樣的好處在於使用者不再需要記住多個不同的登入的帳號密碼,也減少了密碼外洩的風險。
在企業應用中,公司採用SSO系統,使員工能夠通過一次登入就可以存取企業內的各種應用程式,如電子郵件、文件共享服務和內部溝通工具等等。
Authorization
在資訊安全的世界裡,授權某人做某事,這樣的概念是用以給某個使用者或系統是否有權存取特定的資源或進行特定的操作。在使用者驗明正身(AuthN)之後,接下來就是決定這個使用者能夠做什麼事。一般我們會透過 RBAC 或 ABAC 的概念來決定使用者的存取權限。
在企業中,最常見的授權策略通常通過權限管理系統來實施,確保員工根據其角色和職責獲得相應的存取權限。例如,人力資源部門的員工可能有權存取員工的個人資料和薪酬記錄,而其他部門的員工則無法存取這些較為機密的資訊。
RBAC
角色基礎的存取控制(RBAC)是一種廣泛使用的授權管理方法,它根據使用者的角色在組織中分配對應的存取權限。在RBAC系統中,權限不是直接分配給個別使用者,而是關聯到特定的角色上。使用者可以被分配一到多個角色上,這樣的做法讓存取控制的管理變得較為簡單,有需要更新權限時,只需要更新角色的權限設置而不是一一修改每個使用者。
舉例來說,在學校的系統上,角色可以分為教師與學生。教師可能有權存取和更新課程內容和學生評分系統,而學生則可能只能存取課程資料和自己的成績記錄,不能做任何編輯。
ABAC
相較於 RBAC,屬性基礎的存取控制(ABAC)是一種比較細節的授權管理策略,不只根據使用者的狀態,也會考慮像是資源和環境的屬性來做出存取控制決策。在 ABAC 模型中,授權決策不僅僅基於使用者的角色,還考慮了其他屬性,如使用者的位置、時間、任務的機敏程度等。
例如雲端服務中,我們可以運用 ABAC 的概念,允許從不同地理位置和不同設備和不同時間才能存取特定的雲端服務。現在遠端工作依舊是一種工作模式,在細緻化的控制對於保護敏感資源非常重要。
Accounting
這個我覺得翻譯得很有趣,就是叫會計,我本來以為應該會是什麼其他的名詞。
在資訊安全的領域中,會計(Accounting)是指追蹤和記錄使用者的存取和系統使用情況的過程。這不僅包括記錄誰在何時存取了哪些資源,還包括監控和記錄系統操作的詳細情況,如使用者的登入和登出時間、執行的操作、存取的資訊以及任何變更等等。越精確的追蹤就會需要保存越多的 log。
Log 保存
Log 通常記錄了系統、應用程式和使用者活動的詳細資訊,這些資訊對於排錯、性能監測、安全稽核和合規性檢查來說很重要。
一般我們會定期審查和維護 Log 內容,確保它們的完整性和準確性。我們會透過多種的策略來確保 log 的完整性,包括對 Log 做異地備份保存還有 hash 檢查。同時針對 log 進行適當的加密措施等等。一個好的做法是中央的系統有 log 之外,我們也在另外一台 read-only, write-once 的機器上備份這些 log。
風險管理
我們可以透過這些紀錄或報告來辨識潛在的風險跟採取行動。透過 log 的分析,安全專家可以識別和評估不尋常的行為模式,並迅速回應潛在的資安事件。
另外這些紀錄有可能變成是法院的證據,在保存方面可以參考上面小節的一些建議。
效能的影響
看起來 log 很重要,但過度的記錄可能對系統效能產生負面影響,例如過度記錄會占用大量的儲存空間,特別如果使用的流量很大的時候,log 的大小可能迅速膨脹到超出預算的成本。另外是如果要即時的做資料分析與檢索,過度的 log 會導致所需的時間和計算資源大幅增加。
為了避免 logging 對系統效能的負面影響,我們應該先辨識像是重要的錯誤資訊、系統警告、交易紀錄等對資料或系統執行影響的事件進行紀錄。另外定期評估和調整系統的指標等等,來確保只需紀錄足夠的資訊即可。