現今社會中,人們在日常生活或工作中都離不開網路的應用,常見的像是社群媒體、網路銀行、第三方的應用軟體...等,每一種平台服務通常都會需要用戶註冊全新的帳號登入,這導致人們會需要管理各種服務平台的帳號和密碼。除了增加管理上的困難,同時用戶為了方便記憶各種的網路服務帳戶,常常使用相同的帳號和密碼或是使用強度較弱的密碼複雜度,這間接也造成了許多安全性的問題。
因此,目前大多數的社群網站或是手機軟體都開始提供可以讓使用者藉由像是 Google 或 Facebook 等可靠的第三方的驗證方式進行平台的註冊及登入,這樣一來使用者既可不用管理多組帳號密碼,同時也可以擁有更多安全性防護的保障。
這樣便利的第三方驗證及授權流程其實是藉由 OAuth2.0 機制訂定出一套標準流程框架,但 OAuth 本身只具備了授權功能,並沒有驗證機制,所以進而衍生出 OIDC (OpenID Connect) 機制使其可以用來進行認證的功能。而 GKE (Google Kubernetes Engine) 服務實際上也可以藉由 OIDC 的機制來進行第三方授權。
什麼是 OIDC
OIDC (OpenID Connect) 是常見提供身份驗證和授權的機制,我們常聽到的 Okta, Azure Active Directory 及 Microsoft Active Directory Federation service (ADFS) 等都可以是 OIDC 的身份驗證提供者 (IdP, Identity Provider),這些 IdP 在進行使用者身份認證及授權後會回傳像是 Access Token的授權訊息,ID Token 的認證訊息和 Refresh Token等內容。
GKE 為何要使用 OIDC
雖然在 Google Cloud Platform 中也可以使用 Cloud Identity 的服務搭配 GCDS (Google Cloud Directory Sync) 的方式進行 GKE 的認證和授權,但這樣的做法會讓我們必須將使用者的資訊及權限都同步到 Cloud Identity 上,對於部分的系統管理者不想將這些使用者的權限資訊上傳到雲端平台中就不是一個理想的解決方案。
相對 OIDC 進行授權認證的過程中,並不需要同步或上傳使用者目錄資料,所有的驗證行為皆在 IdP 端完成,並且等待認證完後 IdP 則會以回傳 Access Token 及 Id Token 等內容讓 GKE 可以確認合法的使用者並給予相對應管控權限登入 GKE 服務,因此 OIDC 對使用 GCDS 服務來的更有彈性的應用。
GKE 如何利用 OIDC 進行認證及授權
GKE 在使用 OIDC 進行認證及授權前須先啟用 identity-service
請先執行以下指令,進行 identity-service 啟用