爲Kubernetes中任意應用添加基於oauth2的認證保護 (上)

企業隨着業務的發展,必然會部署各種各樣的IT系統。出於安全性的考慮,一些系統僅可企業內部使用,甚至僅開放給企業部分部門員工使用。

這些IT系統大致可分爲兩類,

  1. 系統本身不支持任何認證機制,例如資訊或文檔類系統。需要增加認證保護,能夠限制非企業員工訪問即可。系統運維通常的做法是,爲站點設置HTTP Basic認證保護。由於HTTP Basic認證是通過預設的用戶、密碼認證,認證信息比較容易泄露。即使定期更換密碼,但需要額外的機制通知用戶密碼的變更,用戶體驗也不好。
  2. 系統自身支持認證,甚至支持多種認證機制。比如最常用的開源CI/CD工具,Jenkins內置支持本地數據庫認證、通過插件支持多種第三方系統集成認證。如果大量的IT系統都有一套獨立的用戶管理,隨着企業的員工的變更,用戶的增刪等操作對系統管理員來說是不小的工作量。同時,也很容易由於人爲疏忽,造成資產、數據的安全隱患。

假設企業自身已經有了一套OA系統包含員工、組織結構管理,例如,國內目前最爲普及流行的釘釘企業微信。我們完全可以提供一套基於oauth 2.0協議的認證方式,讓以上兩類IT系統使用企業已有的OA系統(釘釘企業微信)來實現登錄認證。做到這一點後,企業無論有多少IT系統都不再需要額外管理用戶的成本,並且也避免了數據安全隱患。

釘釘通過釘釘開放平臺提供的API開放了許多釘釘內部的能力,例如,身份驗證通訊錄管理等等。然而釘釘的三方網站登錄接口並不是標準的oauth 2.0協議實現,我們需要通過一個oauth2 proxy代理工具實現將釘釘的三方網站登錄兼容oauth2協議。同理,使用這個oauth2代理工具,可以使用GoogleFacebook等三方網站作爲統一認證方式。

有了基於釘釘的oauth2代理作爲企業統一登錄方式,對於上面兩大類系統的認證需求解決方案分別如下,

  1. 部署在Kubernetes中無內置認證機制的Web應用,通過nginx-ingress外部OAUTH認證實現基於oauth2的安全認證。
  2. Jenkins可以通過反向代理插件實現使用oauth2認證登錄。

下篇中,我們將圖文詳解如何一步步實現爲一個無認證的企業文檔Web應用添加基於釘釘的統一認證

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章