Il s'agit d'une documentation non publiée pour SUSE® Rancher Manager v2.15 (Unreleased).

Utilisateurs

Ressource utilisateur

La ressource User (users.management.cattle.io) représente un compte utilisateur dans Rancher.

Pour obtenir une description des champs et de la structure de la ressource User, exécutez :

kubectl explain users.management.cattle.io

Création d’un utilisateur

La création d’un utilisateur local est un processus en deux étapes : vous devez créer la ressource User, puis fournir un mot de passe via un Kubernetes Secret.

Seul un utilisateur disposant de permissions suffisantes peut créer une ressource User.

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

Le mot de passe de l’utilisateur doit être fourni dans un objet Secret au sein de l’espace de noms cattle-local-user-passwords. Le webhook Rancher hache automatiquement le mot de passe et met à jour le Secret.

Important : La Secret doit avoir le même nom que le metadata.name (et le nom d’utilisateur) de la ressource User.

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

Après la soumission du mot de passe en clair, le webhook Rancher le hache automatiquement, remplaçant le contenu de la Secret, garantissant que le mot de passe en clair n’est jamais stocké :

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

Mise à jour du mot de passe de l’utilisateur

Pour changer le mot de passe d’un utilisateur, utilisez la ressource PasswordChangeRequest, qui gère les mises à jour de mot de passe sécurisées.

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

Liste des utilisateurs

Listez toutes les ressources User dans le cluster :

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

Visualisation d’un utilisateur

Affichez une ressource User spécifique par nom :

kubectl get user testuser
NAME           AGE
testuser       3m54s

Suppression d’un utilisateur

La suppression d’un utilisateur supprime automatiquement le mot de passe correspondant Secret.

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

Obtenir les informations d’un utilisateur actuel

Un client utilise la ressource SelfUser pour récupérer des informations sur l’utilisateur actuellement authentifié sans connaître son ID. L’ID de l’utilisateur est renvoyé dans le champ .status.userID.

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

Rafraîchissement de l’appartenance à un groupe d’utilisateurs

Les mises à jour des appartenances aux groupes d’utilisateurs sont déclenchées par la ressource GroupMembershipRefreshRequest.

L’appartenance à un groupe n’est prise en charge que pour les fournisseurs d’authentification externes.

Pour un seul utilisateur

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"
}

Pour tous les utilisateurs

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"
}