當安裝完 Red Hat OpenShift 之後...
如果有朋友剛弄好 OpenShift 4 可能對於很多預設機制感到有點狐疑,這篇文章就是要來解釋,安裝完 OpenShift 4 後,最重要的小事 - 帳號權限認證 (Authentication)
Red Hat OpenShift 的權限認證一如繼往都是採用角色型存取控制 (Role Based Access Control, RBAC),這邊就要來準備開始務實一點的操作,本文先從簡單的把預設帳號置換開始做起
圖片出處: 【最終幻想7:重製版】4K電影剪輯版(後篇) - 零收集、電影式運鏡、完整劇情 - PS4 Pro增強模式 - Final Fantasy VII: REMAKE - 太空戰士7- Semenix出品
話說大家也可以多多支持一下 Semenix Gaming - 大大的影片,我的圖片都是截他的頻道,錄的影片相當有水準,最近都在看它的影片當作自己有在打太七 Q_Q
走馬看花之旅: 第五天
預設剛裝完 OpenShift 4,應該都會拿到 3 個資訊
- Web Console: https://console-openshift-console.apps.ocp4.internal/dashboards
- Username:
kubeadmin
- Password:
XXXX-XXXX-XXXX-XXXX
但因為預設帳號導致的資安議題,這個預設的 kubeadmin
及 XXXX-XXXX-XXXX-XXXX
不建議持續使用,建議是換成別的帳號替換它既有的角色 cluster-admin
,詳請可參考 Removing the kubeadmin user - OpenShift 4.3
準備 HTPasswd Identity Provider
預計將 kubeadmin
置換成 ocproot
,權限也要一併移轉,將透過 HTPasswd Identity Porvider
的方式將帳號設定好
設定 OAuth 資源
這邊先開啟一個檔案 oauth.yaml
,新增 identityProvider
名字為 local_htpasswd_provider
,形式為 HTPasswd
,帳號密碼對照表放在 local-htpasswd-secret
裡面。
當中的 local-htpasswd-secret
將之後再新增,所以不用這時候先準備
1 | apiVersion: config.openshift.io/v1 |
1 | # Update OAuth CRD |
設定新的最高權限帳號 - ocproot
這邊對照過往 Linux 操作系統的習慣,我自行取名 ocproot
,如果你想要取別的也可以,請自行修改沒問題
- 確保你有
htpasswd
可以使用
1 | # Make sure you have htpasswd |
- 新增
local-htpasswd-secret
檔案,新增ocproot/ocproot
進去
1 | # Create |
- 新增
HTpasswd
進去到 OpenShift 裡面
1 | $ oc create secret generic local-htpasswd-secret --from-file htpasswd=/root/user/localuser-htpasswd -n openshift-config |
- 新增叢集最高權限
cluster-admin
給ocproot
1 | $ oc adm policy add-cluster-role-to-user cluster-admin ocproot |
- 測試
ocproot
1
2
3
4
5
6
7
8
9
10
11
12
13$ oc login -u ocproot
oc login -u ocproot
Authentication required for https://api.ocp4.internal:6443 (openshift)
Username: ocproot
Password:
Login successful.
$ oc whoami
ocproot
$ oc get users
NAME UID FULL NAME IDENTITIES
ocproot 3635b015-3664-4836-a5a0-2aff1100d99c local_htpasswd_provider:ocproot
移除 kubeadmin
帳號
根據 Removing the kubeadmin user - OpenShift 4.3 來移除預設帳號 kubeadmin
,務必要記得,你的集群裡面一定要有
- 一個以上的
Identity Provider
,一般都是用HTpasswd
- 一個以上的帳號具備
cluster-admin
的權限
不然你會登不進去集群 = =,這是不可逆的指令
1 | # Remove it |
修改自動登出時間
根據 Configuring the internal OAuth server - OpenShift 4.3,跟 OpenShift 3 一樣,都是要修改 accessTokenMaxAgeSeconds
值,預設時間應該是 86400
,也就是 24 小時後登出,因為太長了,所以改為 3600
,也就是登入 1 小時後自動登出
1 | apiVersion: config.openshift.io/v1 |
如同修改 OAuth ㄧ樣,執行下列操作即可
1 | # Update OAuth CRD |
結語
做完上面的步驟,只是剛剛好準備開始以正確且安全的姿勢操作 OpenShift 4,下一篇會提到更複雜的 Users/Groups/Projects 的 RBAC 控制操作
對 我知道你的血條就跟下圖ㄧ樣
Appendix
Q: 登入時,遇到 error: x509: certificate signed by unknown authority
1 | $ oc login -u ocproot --insecure-skip-tls-verify=true |
這問題是因為預設是自簽憑證 (Self-Signed),系統沒有安裝這張自簽的 CA ,所以要特別拉出來安裝在系統或者是在你的筆電上
1 | $ oc project openshift-authentication |
切換回 system:admin
1 | $ oc whoami |