API Administration
Gérer les utilisateurs, les rôles, les unités organisationnelles, les fournisseurs d'identité et les politiques d'accès via l'API de gestion propre à un tenant.
L'API Administration fait partie de l'API de gestion authentifiée (/api/…). Chaque requête est propre à un tenant : le tenant est extrait du jeton porteur, jamais passé explicitement, et un appelant ne voit et ne modifie jamais que les identités et la configuration de son propre tenant. Voir Authentification pour savoir comment obtenir un jeton.
Chaque route est soumise aux permissions d'administration — Users.*, Roles.*, OrganizationUnits.*, IdentityProviders.* et AccessPolicies.*. Les permissions sont des feuilles hiérarchiques en notation pointée (par exemple AccessPolicies.Create), et accorder un préfixe parent accorde implicitement chaque feuille en dessous. Un appelant dépourvu de la permission requise reçoit 403 Forbidden.
Tous les chemins sont relatifs à votre hôte Cockpit, par exemple https://cockpit.example.com. Les accolades telles que {id} désignent un paramètre de chemin de type UUID.
Utilisateurs
Les utilisateurs sont les identités qui se connectent à un tenant. Chacune porte un état d'authentification complet (mot de passe, TOTP, compteur de verrouillage, statut d'approbation) et peut se voir attribuer des rôles et des unités organisationnelles.
| Méthode + Chemin | Objet | Permission |
|---|---|---|
GET /api/users | Lister les utilisateurs | Users.Read |
POST /api/users | Créer un utilisateur | Users.Create |
POST /api/users/{id}/approve | Approuver un utilisateur en attente | Users.Approve |
POST /api/users/{id}/lock | Verrouiller un compte utilisateur | Users.Update |
POST /api/users/{id}/unlock | Déverrouiller un compte utilisateur | Users.Update |
POST /api/users/{id}/suspend | Suspendre un compte utilisateur | Users.Update |
POST /api/users/{id}/reset-password | Réinitialiser le mot de passe d'un utilisateur | Users.Update |
PUT /api/users/{id}/roles | Attribuer des rôles à un utilisateur | Users.Update |
Rôles et permissions
L'autorisation est basée sur les rôles. Un rôle est un ensemble nommé de permissions ; le jeton reçu par un utilisateur porte l'ensemble aplati des permissions issues de ses rôles. Les rôles peuvent être limités à une unité organisationnelle afin qu'un octroi ne s'applique qu'au sein de cette branche.
| Méthode + Chemin | Objet | Permission |
|---|---|---|
GET /api/roles | Lister les rôles | Roles.Read |
POST /api/roles | Créer un rôle | Roles.Create |
PUT /api/roles/{id} | Mettre à jour un rôle | Roles.Update |
DELETE /api/roles/{id} | Supprimer un rôle | Roles.Delete |
PUT /api/roles/{id}/permissions | Définir l'ensemble de permissions d'un rôle | Roles.Update |
GET /api/roles/permissions | Lister le catalogue hiérarchique des permissions | Roles.Read |
Unités organisationnelles
Les unités organisationnelles (OU) ajoutent un second niveau de délimitation au sein d'un tenant. Elles forment un arbre avec un code de chemin matérialisé (tel que 00001.00003.00007) ; des ressources comme les apps peuvent être rattachées à une OU, et des rôles peuvent être attribués au niveau de l'OU.
| Méthode + Chemin | Objet | Permission |
|---|---|---|
GET /api/org-units | Lister les unités organisationnelles | OrganizationUnits.Read |
POST /api/org-units | Créer une unité organisationnelle | OrganizationUnits.Create |
GET /api/org-units/selectable | Lister les OU sélectionnables pour attribution | OrganizationUnits.Read |
/api/org-units/{id}/roles | Attribuer des rôles délimités à une OU (administration déléguée) | OrganizationUnits.Update |
Fournisseurs d'identité
Les fournisseurs d'identité externes permettent aux utilisateurs de se connecter avec des identifiants d'entreprise (Azure AD / Entra ID, Okta, Keycloak). Les fournisseurs sont configurés avec des identifiants client, des URL d'autorité / métadonnées, des scopes et des correspondances de claims, et peuvent auto-provisionner des utilisateurs dans des rôles par défaut.
| Méthode + Chemin | Objet | Permission |
|---|---|---|
GET /api/identity-providers | Lister les fournisseurs d'identité configurés | IdentityProviders.Read |
POST /api/identity-providers | Créer un fournisseur d'identité | IdentityProviders.Create |
POST /api/identity-providers/discover | Découvrir les endpoints du fournisseur à partir d'une URL de métadonnées / autorité | IdentityProviders.Read |
POST /api/identity-providers/{id}/test-connection | Tester la connexion et les identifiants du fournisseur | IdentityProviders.Update |
POST /api/identity-providers/{id}/toggle | Activer ou désactiver le fournisseur | IdentityProviders.Update |
L'authentification unique est également régie par les indicateurs de fonctionnalité du fournisseur d'identité pour l'édition du tenant ; un fournisseur doit être activé pour l'édition avant de pouvoir être utilisé.
Politiques d'accès
Au-delà du RBAC, l'administration inclut le moteur de politiques d'accès ABAC Casbin, qui régit les opérations cryptographiques en temps réel selon l'utilisateur, l'IP, la localisation, l'heure et le groupe. Une politique est propre à un tenant et ne prend effet qu'une fois liée à une ressource (un service DKE, une app générique, ou un endpoint AWS XKS) via son access_policy_id. Le modèle complet est documenté sur la page Politiques d'accès.
| Méthode + Chemin | Objet | Permission |
|---|---|---|
GET /api/access-policies | Lister les politiques | AccessPolicies.Read |
POST /api/access-policies | Créer une politique | AccessPolicies.Create |
GET /api/access-policies/{id} | Obtenir une politique | AccessPolicies.Read |
PUT /api/access-policies/{id} | Mettre à jour une politique | AccessPolicies.Update |
DELETE /api/access-policies/{id} | Supprimer une politique | AccessPolicies.Delete |
POST /api/access-policies/validate | Valider une définition de politique avant enregistrement | AccessPolicies.Read |
GET /api/access-policies/capabilities | Matrice de capacités par type d'app (quelles dimensions parmi les cinq chaque type d'app respecte) | AccessPolicies.Read |
GET /api/access-policies/available-groups | Groupes disponibles pour les règles de groupe | AccessPolicies.Read |
GET /api/access-policies/audit · GET /api/access-policies/{id}/audit | Piste d'audit de l'application des politiques | AccessPolicies.Read |
Emprunt d'identité
L'emprunt d'identité (impersonation) permet à un administrateur autorisé d'agir en tant qu'un autre utilisateur à des fins de support et de dépannage. Démarrer une session émet un jeton limité dans le contexte de l'utilisateur cible ; l'arrêter ramène l'appelant à sa propre identité. Chaque emprunt d'identité est enregistré dans les journaux d'activité.
| Méthode + Chemin | Objet | Permission |
|---|---|---|
POST /api/impersonation/start | Démarrer l'emprunt d'identité d'un utilisateur cible | Users.Impersonate |
POST /api/impersonation/stop | Arrêter l'emprunt d'identité et restaurer l'identité de l'appelant | Users.Impersonate |
L'emprunt d'identité accorde à l'appelant les permissions effectives de l'utilisateur cible pendant la durée de la session. Réservez la permission d'emprunt d'identité aux administrateurs de confiance et examinez régulièrement la piste d'audit.