跳至主要内容

使用者

使用者資源​

User 資源 (users.management.cattle.io) 代表 Rancher 中的使用者帳戶。

要取得 User 資源的欄位和結構的描述,請執行:

kubectl explain users.management.cattle.io

建立使用者​

建立本機使用者是一個兩步驟的過程:您必須建立 User 資源,然後透過 Kubernetes Secret 提供密碼。

只有具有足夠權限的使用者才能建立 User 資源。

kubectl create -f -<<EOF
apiVersion: management.cattle.io/v3
kind: User
metadata:
name: testuser
displayName: "Test User"
username: "testuser"
EOF

使用者的密碼必須在 cattle-local-user-passwords 命名空間內的 Secret 物件中提供。Rancher webhook 將自動雜湊密碼並更新 Secret。

important

重要: Secret 必須與 User 資源的 metadata.name (和 username) 同名。

kubectl create -f -<<EOF
apiVersion: v1
kind: Secret
metadata:
name: testuser
namespace: cattle-local-user-passwords
type: Opaque
stringData:
password: Pass1234567!
EOF

提交明文密碼後,Rancher-Webhook 會自動將其雜湊,替換 Secret 的內容,確保永遠不會儲存明文密碼:

apiVersion: v1
data:
password: 1c1Y4CdjlehGWFz26F414x2qoj4gch5L5OXsx35MAa8=
salt: m8Co+CfMDo5XwVl0FqYzGcRIOTgRrwFSqW8yurh5DcE=
kind: Secret
metadata:
annotations:
cattle.io/password-hash: pbkdf2sha3512
name: testuser
namespace: cattle-local-user-passwords
ownerReferences:
- apiVersion: management.cattle.io/v3
kind: User
name: testuser
uid: 663ffb4f-8178-46c8-85a3-337f4d5cbc2e
uid: bade9f0a-b06f-4a77-9a39-4284dc2349c5
type: Opaque

更新使用者密碼​

要變更使用者的密碼,請使用 PasswordChangeRequest 資源,它處理安全的密碼更新。

kubectl create  -f -<<EOF
apiVersion: ext.cattle.io/v1
kind: PasswordChangeRequest
spec:
userID: "testuser"
currentPassword: "Pass1234567!"
newPassword: "NewPass1234567!"
EOF

列出使用者​

列出叢集中的所有 User 資源:

kubectl get users
NAME AGE
testuser 3m54s
user-4n5ws 12m

檢視使用者​

依名稱檢視特定的 User 資源:

kubectl get user testuser
NAME AGE
testuser 3m54s

刪除使用者​

刪除使用者將自動刪除對應的密碼 Secret。

kubectl delete user testuser
user.management.cattle.io "testuser" deleted

取得目前使用者的資訊​

客戶端使用 SelfUser 資源來擷取當前已認證使用者的資訊,而無需知道其 ID。使用者 ID 會在 .status.userID 欄位中回傳。

kubectl create -o jsonpath='{.status.userID}'  -f -<<EOF
apiVersion: ext.cattle.io/v1
kind: SelfUser
EOF

testuser

重新整理使用者的群組成員資格​

使用者群組成員資格的更新由 GroupMembershipRefreshRequest 資源觸發。

備註

群組成員資格僅支援外部認證提供者。

針對單一使用者​

kubectl create -o jsonpath='{.status}'  -f -<<EOF
apiVersion: ext.cattle.io/v1
kind: GroupMembershipRefreshRequest
spec:
userId: testuser
EOF

{
"conditions": [
{
"lastTransitionTime": "2025-11-10T12:01:03Z",
"message": "",
"reason": "",
"status": "True",
"type": "UserRefreshInitiated"
}
],
"summary": "Completed"
}

針對所有使用者​


kubectl create -o jsonpath='{.status}' -f -<<EOF
apiVersion: ext.cattle.io/v1
kind: GroupMembershipRefreshRequest
spec:
userId: "*"
EOF

{
"conditions": [
{
"lastTransitionTime": "2025-11-10T12:01:59Z",
"message": "",
"reason": "",
"status": "True",
"type": "UserRefreshInitiated"
}
],
"summary": "Completed"
}