網路資安威脅
企業資安基本觀念:認證與授權
大多數的資安事件都是因為 DevOps 流程及工具的機密遭到外洩而引起,因此適當的認證和授權機制非常重要。本文說明一些可改善身分管理以提升應用程式安全的基本觀念。
何謂身分識別與存取管理 (Identity and access management,IAM)?
身分識別與存取管理 ( Identity and access management,IAM) 是為了確保唯有具備某些職務的人員可以存其工作上絕對必要的某些工具、系統與服務。這是實踐零信任資安的一項重要基礎,能幫助您回答您在開發應用程式時所必須面對的兩個基本問題,那就是:確認使用者身分,以及該賦予多少權限?
身分
所謂的「認證」就是確認使用者的身分。這是我們隨時都會經歷的過程,我們每次登入,就是在執行系統的認證程序。一般來說,我們都是透過使用者名稱和密碼來認證,為了進一步確保安全,建議您採用多重認證。
多重或雙重認證,是指除了使用者名稱和密碼之外,您還需要透過另一個管道來證明自己的身分,這通常是經由手機應用程式或簡訊所發送一的次性驗證碼。
這套方法的概念其實很單純,也就是,要想登入某個帳號,您必須:
- 知道使用者名稱。
- 知道密碼。
- 而且手上握有收到一次性驗證碼的裝置。
坦白講,使用者名稱基本上是公開資訊,因為它通常是使用者的電子郵件或公開顯示的資訊,這樣一來,能證明您身分的就只剩下您所知道的 (密碼) 以及您所擁有的 (一次性驗證碼送達裝置)。雖然您還可以增加一些其他的認證方法,例如您身上的東西 (生物特徵),但上述方法通常是安全性與實用性之間的最佳平衡點。
確認使用者的身分
當您在雲端開發應用程式時,您有兩種方法可以採用。第一種是讓使用者向雲端供應商證明自己的身分。
在雲端帳號上,強烈建議您使用多重認證,這樣有助於確保唯有合法的使用者才能存取您的雲端資源。
第二種是自己架設一種機制讓您的應用程式使用者登入。所幸,許多困難工作廠商都幫您打理好了。
每家大型雲端廠商都提供了各種使用者認證選項供您使用,包括使用您已經登入的帳號和身分來進行認證的單一簽入系統 。
該賦予多少權限?
現在您已知道使用者的身分,接下來的問題是:您該賦予使用者多少權限? 這就是所謂的「授權」。
授權就是提供使用者某些權限,此處最重要的概念就是最低授權原則。其主要想法是:只提供使用者工作上所必要的權限。直接開放系統管理員權限給每一位使用者當然比較容易,說不定您手上就擁有一些您不需要的系統管理員權限。但這樣做會帶來許多您不想面對的資安與隱私問題,使用最低授權原則是一種讓系統更安全、更穩定的作法。
好消息是,目前主流的三大雲端服務供應商都已提供了「預設拒絕」的環境。意思就是,在預設情況下,使用者 (或其他個體) 什麼也不能做。您必須明確地授予權限,如此可以更方便落實最低授權原則。
管理權限
隨著環境不斷成長,權限管理很可能變成需要耗費一整天的工作,這是誰都不樂見的情況。您可以直接將權限套用到使用者、角色或其他資源上,但您也可將權限集中到一個政策當中,然後將政策套用到使用者、角色和資源上。使用政策當然才是王道。
雖然將需要的權限直接套用到使用者或資源上看似比較方便,但卻是災難的開始。想像一下,如果您的團隊裡有三名成員同時負責某個資料庫。其中一名成員在發布最新版應用程式時遇到了權限上的問題。要解決這問題,需要額外增加資料庫權限。現在,您可以將該權限直接授予給該成員,但另外兩名也負責該資料庫的成員呢?他們也需要這項權限。此時政策就能派上用場,您可以將權限設定到政策當中,然後將政策套用到任何需要執行這項工作的人,這樣會更有效率。
就這個例子來說,我們應該對這三名成員都套用「資料庫負責人」政策,然後將必要的權限都設定到這個政策當中。未來權限若有任何變更,只要更新政策,套用該政策的三名成員都會自動獲得新的權限。
像這樣多一道機制的作法,可以讓權限管理變得容易許多。而且,您還可以在使用者和資源身上套用一種以上的政策。
下一步
有關認證 (您是誰) 和授權 (您可以做什麼) 還有一些其他比較高階的觀念,不過本文只討論最基本的觀念。
看完這篇,請記住以下兩個要點:
- 盡可能使用多重認證。
- 在授權政策當中套用最低授權原則。
當您的應用程式越來越大,這兩項簡單的原則可幫您消除絕大部分認證與授權相關的頭痛問題。這又是另一個在應用程式開發設計前期就採取嚴格資安原則能為將來減少許多力氣和頭痛問題的最佳範例。