跳转到内容
开源

邀請成員並分配專案權限

用一次性設定連結邀請成員,再依專案分配開發者或檢視者權限。

打開 成員,按 邀請,選好對方能存取的專案,再把設定連結傳給對方。對方開啟連結、新增通行密鑰後,就能登入。

  • 叢集裝了 Zeabur Identity,而且 Zeabur Identity 以 --invitations 執行,設定連結才能使用。
  • 你用管理員帳號登入 Zeabur。變更成員會修改 Zeabur Identity 的使用者,以及 Kubernetes 的角色綁定。
  • 專案角色需要 Chart 的 memberRoles.enabled(預設開啟)。關閉時,邀請表單只能選要不要給 管理員。

在 成員 按 邀請。填入 使用者名稱,顯示名稱 可以不填。使用者名稱只能用小寫字母、數字、- 和 .,最多 63 個字元。

如果填的是既有成員的使用者名稱,這個連結會在他的帳號新增一把通行密鑰,原本的權限不變。

在 權限 選 管理員 或 指定專案。選 管理員,對方會拿到管理員帳號,可以完整控制整個叢集,包括所有專案、節點和成員。管理員帳號只能用通行密鑰登入,不能用 GitHub 或 Google,見管理員帳號和一般帳號。

選 指定專案 時,勾選專案,再為每個專案選角色。剛勾選時是 檢視者:

角色對方能做什麼
開發者部署、修改變數、重新啟動、讀取日誌、開啟終端機,也能讀取 Secret 的值。
檢視者看狀態和事件,不能讀取日誌、做任何修改、開啟終端機或讀取 Secret 的值。

同一位成員可以在不同專案擔任不同角色。一個專案都沒勾的成員也能登入,但只看得到節點和專案名稱。

按 檢查變更,確認新增的帳號和專案權限,再按 邀請 erin(erin 是使用者名稱)。

複製產生的連結,用只有對方拿得到的管道傳過去。

邀請連結 7 天內有效、只能用一次,完整連結只顯示這一次。對方設定好通行密鑰後,回到 成員 看他的 通行密鑰 欄有沒有數字,再請他登入、開啟分到的專案。

在成員列的動作選單選 變更權限,調整專案和角色,按 檢查變更 後按 儲存權限。權限立即生效,但對方已開啟的終端機會維持到關閉為止。

把成員改成 管理員,他的帳號就變成管理員帳號,之後只能用通行密鑰登入,用 GitHub 或 Google 登入的工作階段會結束。拿掉 管理員,帳號就改回一般帳號。

要替成員加一台備用裝置,選 新的設定連結。這個連結 24 小時內有效、只能用一次,原本的通行密鑰和工作階段都會保留。

裝置遺失或遭竊時,選 遺失裝置後重設,勾選 同時移除他的通行密鑰、連結的帳號和工作階段,再按 重設並產生連結。在對方開啟新連結之前,沒有人能用這個帳號登入。

成員是 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/v1alpha1
kind: User
metadata:
name: erin
namespace: zeabur-identity
labels:
app.kubernetes.io/managed-by: zeabur
spec:
username: erin
displayName: Erin Lin
groups: []
accountType: Regular
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: zeabur-member-erin
labels:
app.kubernetes.io/managed-by: zeabur
zeabur.com/member: erin
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: zeabur-member
subjects:
- apiGroup: rbac.authorization.k8s.io
kind: User
name: zeabur:erin
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: zeabur-member-erin
namespace: shop
labels:
app.kubernetes.io/managed-by: zeabur
zeabur.com/member: erin
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: zeabur-project-developer
subjects:
- 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=erin
kubectl -n zeabur-identity delete zbinvite,zbcred,zbgrant -l identity.zeabur.com/user=erin
kubectl -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:<使用者名稱> 的角色綁定也會保留,要由管理員另外檢查。