配置kube-apiserver基於token的認證機制

Kubernetes除了提供了基於CA證書的認證方式,也提供了基於HTTP Token的簡單認證方式。各客戶端組件與API Server之間的通信方式仍然採用HTTPS,但不採用CA數字證書。這種認證機制與CA證書相比,安全性很低,在生產環境不建議使用。

採用基於HTTP Token的簡單認證方式時,API Server對外暴露HTTPS端口,客戶端攜帶Token來完成認證過程。
需要說明的是,kubectl命令行工具比較特殊,它同時支持CA證書簡單認證兩種方式與API Server通信,其他客戶端組件只能配置基於CA證書的認證方式或者非安全方式與API Server通信。

再添加Token認證之前訪問apiserver提示未授權:

[root@192 ~]# curl -k --header "Authorization:Bearer admin" https://192.168.3.135:6443/version
{
  "kind": "Status",
  "apiVersion": "v1",
  "metadata": {
    
  },
  "status": "Failure",
  "message": "Unauthorized",
  "reason": "Unauthorized",
  "code": 401
}

基於Token認證的配置過程如下。

(1)創建包括用戶名、密碼和UID的文件token_auth_file,將其放置在合適的目錄下,例如/etc/kuberntes目錄。需要注意的是,這是一個純文本文件,用戶名、密碼都是明文。

$ cat /etc/kubernetes/token_auth_file
admin,admin,1
system,system,2

(2)設置kube-apiserver的啓動參數“--token-auth-file”,使用上述文件提供安全認證,然後重啓API Server服務。

在配置文件/etc/kubernetes/apiserver中添加如下參數:

--secure-port=6443
--token-auth-file=/etc/kubernetes/token_auth_file

重啓kube-apiserver:systemctl restart kube-apiserver

(3)用curl客戶端工具通過token訪問API Server:

# 給apiserver添加Token認證之後,再次訪問apiserver就正常了
[root@192 ~]# curl -k --header "Authorization:Bearer admin" https://192.168.3.135:6443/version
{
  "major": "1",
  "minor": "19",
  "gitVersion": "v1.19.0",
  "gitCommit": "e19964183377d0ec2052d1f1fa930c4d7575bd50",
  "gitTreeState": "clean",
  "buildDate": "2020-08-26T14:23:04Z",
  "goVersion": "go1.15",
  "compiler": "gc",
  "platform": "linux/amd64"
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章