今天將介紹身分驗證的三大步驟,分別為驗證(Authentication)、授權(Authorization)、稽核(Accounting),由於英文名詞皆為 A 開頭,因此也被稱為 AAA 或 3A 原則。
在提到 3A 前,還有稱為「識別」(Identification)的步驟,主要由使用者提出自己主張的身分,供系統「理解」使用者宣稱自己為何種身分,以便進行後續相對應的驗證與授權動作。
當使用者主張自己的身分後,系統應該確認使用者是否為所宣稱的合法身分擁有者,這個證明使用者身分的過程就被稱為「身分驗證」,常見的身分驗證方法可以分為三種類型:
身分驗證可分為單因子(Single-factor authentication,SFA)與多因子(Multi-factor authentication,MFA)驗證。所謂的「因子」(Factor)即為上面所提到的三種身分驗證類型(所知之事、所有之物、所具之形),由於單因子驗證只驗證一項資料,容易遭到外洩、獲得並突破,因此使用多因子驗證為較安全的方法。
兩階段驗證(Two-step verification)僅代表驗證分為兩個或多個階段,例如密碼 + OTP 就是最常見的兩階段驗證機制,但由於密碼與 OTP 皆屬於「所知之事」的類別,並不符合兩個「因子」的定義,所以不能被認為是雙因子驗證。
兩階段驗證流程範例(圖片來源:What’s the Difference Between 2FA and 2SV?)
雙因子驗證流程範例(圖片來源:What’s the Difference Between 2FA and 2SV?)
指可以跨系統共同使用經過授權的 Sessions,使用者只需要於一個系統登入後,其他系統即可使用相同的 Sessions 直到該 Sessions 過期,讓使用者不必重複登入或使用各種不同的帳號密碼,常見的範例為公司或學校經常將公務電腦的 Windows AD 帳號與內部系統整合。
通過前面的驗證步驟,確認使用者的身分後,此時即可依照使用者的身分授予相關的權限,讓使用者能執行經過授權的存取,讓使用者只能存取符合該身分的特定服務、系統或資訊,這個步驟就稱為「授權」,在實務上會透過存取控制列表(Access control lists,ACL)進行授權群組的分類,後續將會再詳細介紹。
系統應該留存所有使用者的登入、登出、存取等操作記錄(Log),以備未來隨時稽核使用。
由於使用者在使用各項服務前都經過了適當的身分驗證與授權,理論上在使用者沒有被假冒身分(不論是自願或非自願)的情況下,使用者不可以否認在系統內所做出的操作不是自己所進行的操作,確保所有的操作都能追溯到某一個使用者,才能達成可歸責性(Accountability)。
隱私即為保護個人資料,僅在必要的範圍內,蒐集、處理、使用個資,大多為法律要求,可參考去年鐵人賽的文章: