邀請成員並分配專案權限
用一次性設定連結邀請成員,再依專案分配開發者或檢視者權限。
打開 成員,按 邀請,選好對方能存取的專案,再把設定連結傳給對方。對方開啟連結、新增通行密鑰後,就能登入。
- 叢集裝了 Zeabur Identity,而且 Zeabur Identity 以
--invitations執行,設定連結才能使用。 - 你用管理員帳號登入 Zeabur。變更成員會修改 Zeabur Identity 的使用者,以及 Kubernetes 的角色綁定。
- 專案角色需要 Chart 的
memberRoles.enabled(預設開啟)。關閉時,邀請表單只能選要不要給 管理員。
邀請一位成員
Section titled “邀請一位成員”在 成員 按 邀請。填入 使用者名稱,顯示名稱 可以不填。使用者名稱只能用小寫字母、數字、- 和 .,最多 63 個字元。
如果填的是既有成員的使用者名稱,這個連結會在他的帳號新增一把通行密鑰,原本的權限不變。
選擇可存取的專案
Section titled “選擇可存取的專案”在 權限 選 管理員 或 指定專案。選 管理員,對方會拿到管理員帳號,可以完整控制整個叢集,包括所有專案、節點和成員。管理員帳號只能用通行密鑰登入,不能用 GitHub 或 Google,見管理員帳號和一般帳號。
選 指定專案 時,勾選專案,再為每個專案選角色。剛勾選時是 檢視者:
| 角色 | 對方能做什麼 |
|---|---|
| 開發者 | 部署、修改變數、重新啟動、讀取日誌、開啟終端機,也能讀取 Secret 的值。 |
| 檢視者 | 看狀態和事件,不能讀取日誌、做任何修改、開啟終端機或讀取 Secret 的值。 |
同一位成員可以在不同專案擔任不同角色。一個專案都沒勾的成員也能登入,但只看得到節點和專案名稱。
檢查後傳送連結
Section titled “檢查後傳送連結”按 檢查變更,確認新增的帳號和專案權限,再按 邀請 erin(erin 是使用者名稱)。
複製產生的連結,用只有對方拿得到的管道傳過去。
邀請連結 7 天內有效、只能用一次,完整連結只顯示這一次。對方設定好通行密鑰後,回到 成員 看他的 通行密鑰 欄有沒有數字,再請他登入、開啟分到的專案。
調整權限或處理遺失裝置
Section titled “調整權限或處理遺失裝置”在成員列的動作選單選 變更權限,調整專案和角色,按 檢查變更 後按 儲存權限。權限立即生效,但對方已開啟的終端機會維持到關閉為止。
把成員改成 管理員,他的帳號就變成管理員帳號,之後只能用通行密鑰登入,用 GitHub 或 Google 登入的工作階段會結束。拿掉 管理員,帳號就改回一般帳號。
要替成員加一台備用裝置,選 新的設定連結。這個連結 24 小時內有效、只能用一次,原本的通行密鑰和工作階段都會保留。
裝置遺失或遭竊時,選 遺失裝置後重設,勾選 同時移除他的通行密鑰、連結的帳號和工作階段,再按 重設並產生連結。在對方開啟新連結之前,沒有人能用這個帳號登入。
用 kubectl 做同樣的事
Section titled “用 kubectl 做同樣的事”成員是 Zeabur Identity 的 User,放在 zeabur-identity Namespace。權限是一般的角色綁定,名稱都是 zeabur-member-<使用者名稱>:一個 ClusterRoleBinding 綁到 zeabur-member,讓他能登入並看到節點和專案名稱;每個分到的專案再一個 RoleBinding,綁到 zeabur-project-developer 或 zeabur-project-viewer。Kubernetes 看到的使用者名稱是 zeabur:<使用者名稱>。
下面讓 erin 成為一般帳號,在 shop 擔任開發者:
apiVersion: identity.zeabur.com/v1alpha1kind: Usermetadata: name: erin namespace: zeabur-identity labels: app.kubernetes.io/managed-by: zeaburspec: username: erin displayName: Erin Lin groups: [] accountType: Regular---apiVersion: rbac.authorization.k8s.io/v1kind: ClusterRoleBindingmetadata: name: zeabur-member-erin labels: app.kubernetes.io/managed-by: zeabur zeabur.com/member: erinroleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: zeabur-membersubjects: - apiGroup: rbac.authorization.k8s.io kind: User name: zeabur:erin---apiVersion: rbac.authorization.k8s.io/v1kind: RoleBindingmetadata: name: zeabur-member-erin namespace: shop labels: app.kubernetes.io/managed-by: zeabur zeabur.com/member: erinroleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: zeabur-project-developersubjects: - apiGroup: rbac.authorization.k8s.io kind: User name: zeabur:erin要給管理員,把 accountType 改成 Admin,不用另外綁角色。groups 不能寫 admins,這個群組只從帳號類型來。
套用後,用 zeabur-identityctl invite 產生設定連結,傳給對方:
zeabur-identityctl invite --username erin改權限就改 RoleBinding 的 roleRef(roleRef 不能修改,要刪掉重建),或在其他專案建立同樣的 RoleBinding。移除成員時,先刪角色綁定,再刪他的設定連結、通行密鑰和工作階段,最後刪 User:
kubectl delete clusterrolebinding,rolebinding -A -l zeabur.com/member=erinkubectl -n zeabur-identity delete zbinvite,zbcred,zbgrant -l identity.zeabur.com/user=erinkubectl -n zeabur-identity delete zbuser erin其他做法,例如用群組授權、停用帳號,見 Zeabur Identity 的管理使用者。
- 成員 列出
erin,通行密鑰 欄在對方設定好後出現數字,權限欄寫出shop和角色。 kubectl get clusterrolebinding,rolebinding -A -l zeabur.com/member=erin列出一個 ClusterRoleBinding 和每個專案一個 RoleBinding。- 對方登入後,在他的電腦執行
kubectl auth whoami,使用者名稱是zeabur:erin。管理員可以用kubectl auth can-i --as zeabur:erin -n shop create deployments檢查,開發者印出yes,檢視者印出no。
- 沒有安裝 Zeabur Identity:請叢集管理員安裝 Zeabur Identity,或以它所在的 Namespace 啟動 Zeabur。
- 畫面說 Zeabur 不知道 Zeabur Identity 的網址:以
--issuer-url啟動 Zeabur。 - 畫面說 Zeabur Identity 目前不接受設定連結:以
--invitations執行 Zeabur Identity。 - 安裝 Zeabur 時沒有啟用成員角色:以
memberRoles.enabled=true升級 Chart,或把這位成員設為管理員。完整的權限對照見權限。 - 不能變更自己的權限、重設或移除自己:請另一位管理員處理。自己的備用通行密鑰可以從帳號頁新增。
- 變更已過期:重新 檢查變更。
先在 待使用的設定連結 撤銷沒用到的連結。要讓某位成員不能再登入,在該成員的動作選單選 移除成員,確認後移除。
移除會刪掉他的通行密鑰、連結的帳號、工作階段、設定連結,以及 Zeabur 建立的角色綁定。專案和服務都會保留。不是 Zeabur 建立、但指名 zeabur:<使用者名稱> 的角色綁定也會保留,要由管理員另外檢查。