openshift4 使用 HTPasswd 方式管理用戶

使用 HTPasswd 方式管理用戶

當我們用默認的 kubadmin 進入平臺的時候,會有一行提示信息,告訴我們可以配置用戶管理,來允許其他用戶登入。
這也是一個平臺使用過程中的必備步驟,openshift 支持 htpasswd, ldap, github, google 等用戶系統(tǒng)對接。
最常用的還是 htpasswd 和 ldap

本節(jié)介紹 htpasswd 方式配置用戶登錄,此方式用戶和密碼將由 openshift 自身來管理。 與ocp v3 的差異有兩點

  1. 支持頁面導入了
  2. 密碼文件不再是以文件方式保存在虛機上,而是以 secret 保存 ocp etcd 中

登錄的提示信息
You are logged in as a temporary administrative user. Update the cluster OAuth configuration to allow others to log in.

使用 oc 命令管理 htpasswd 作為 ocp 用戶管理

首先創(chuàng)建密碼文件

第一個用戶參數需要帶 -c 創(chuàng)建文件,后面添加用戶不要帶c,不然會覆蓋文件。

# 生成一個 htpasswd.txt 文件,用戶名user1,密碼:123456
# 并添加兩個用戶 user1 user2 ,完成后看下文件,確認有這三個用戶
htpasswd -c -B -b htpasswd.txt user1 123456
htpasswd -B -b htpasswd.txt user2 123456
htpasswd -B -b htpasswd.txt user3 123456

創(chuàng)建密鑰導入上述 htpasswd 密碼文件

把密碼文件導入到 openshift-config project 中,secret 名稱 htpass-secret 可以自定義, --from-file 后面的 htpasswd 必須是這個字段,不能修改。

oc create secret generic htpass-secret --from-file=htpasswd=htpasswd.txt -n openshift-config

[root@bastion install]# oc get secret -n openshift-config htpass-secret
NAME            TYPE     DATA   AGE
htpass-secret   Opaque   1      25s

創(chuàng)建 oauth CR

創(chuàng)建一個 oauth Custom Resource (CR) ,使用上面的 htpasswd

cat oauth-htpasswd.yaml

apiVersion: config.openshift.io/v1
kind: OAuth
metadata:
  name: cluster
spec:
  identityProviders:
  - name: my_htpasswd_provider  #1 
    mappingMethod: claim 
    type: HTPasswd
    htpasswd:
      fileData:
        name: htpass-secret  #2
  1. 這是顯示在登錄頁面的字段
  2. 這個要和上一步得 secret 名稱匹配

導入文件,可以會有個 warning,可忽略

oc apply -f oauth-htpasswd.yaml

# 忽略 warning
Warning: oc apply should be used on resources created by either oc create --save-config or oc apply.

測試新用戶登錄

通過命令或者 web 頁面登錄測試新用戶。 這些用戶進去之后都只能自己新建 projecct 操作,沒有賦權全局。

oc login -u user1
或
oc login https://api.ocp4.example.com:6443

這邊 oc 命令登錄出現(xiàn)了一些問題,頁面是可以的,oc 命令不行。

oc login error: x509: certificate signed by unknown authority
解決方法:
mv ~/.kube/config /tmp/

Login failed (401 Unauthorized)
解決方法:
這個應該 user1 用戶之前登錄過,參照下一步的特別注意,清除之前的 user1 用戶。注意別刪錯了,secret 不能刪。

增刪用戶

如果要增刪用戶,修改之前創(chuàng)建的 secret

# 先把 secret 導出來,轉成明文
oc get secret htpass-secret -ojsonpath={.data.htpasswd} -n openshift-config | base64 -d > users.htpasswd

# 針對密碼文件增刪用戶
# 增加用戶
htpasswd -bB users.htpasswd <username> <password>
# 刪除已有用戶
htpasswd -D users.htpasswd <username>

# 覆蓋之前的 secret
oc create secret generic htpass-secret --from-file=htpasswd=users.htpasswd --dry-run -o yaml -n openshift-config | oc replace -f -

特別注意
如果移除了用戶,以下兩處已存在的資源也需要刪除。如果修改了 identityProviders,這兩處的用戶信息也需要刪除,不然登錄會出錯

  1. 刪除 user
    oc delete user <username>
    不刪除 user 的話,后續(xù)這個用戶還可以登錄。

  2. 刪除 identity 中的 user
    oc delete identity my_htpasswd_provider:<username>

用戶權限設置

給 user1 集群管理員權限,這是最大權限
給 user2 cluster-reader 權限,可以查看所有 project 下的資源
給 user3 賦予 openshift-monitoring project 管理員權限

需要user2, user3 先登錄過一次,不然 ocp 的 user 資源對象里找不到他,加不上權限

oc adm policy add-cluster-role-to-user cluster-admin user1
oc adm policy add-cluster-role-to-user cluster-reader user2
oc adm policy add-role-to-user admin user3 -n openshift-monitoring

通過 web 頁面配置 oauth 采用 htpasswd 認證

除了通過命令導入也可以通過頁面,前提是先創(chuàng)建好 htpasswd 文件,等于說 secret 和 oauth 的資源是web 頁面幫助創(chuàng)建的。

通過上面的提示信息跳轉,或者 Administrator 角色,進入菜單 Administration--Cluster Settings--Global Configuration--Oauth

在 Identity Providers 的 Add 下拉菜單找到 HTPasswd

進入配置頁面,name自定義,可不改。
HTPasswd File 上傳我們剛剛生成的 htpasswd.txt 文件,完成后點擊 Add 即完成。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。