Aller au contenu principal

Permissions (ReBAC)

L'écran Permissions (ReBAC) permet de lister, d'écrire et de supprimer les tuples de relation du tenant : qui (sujet) détient quelle relation sur quel objet, par exemple user:alice can_assume service_identity:billing. Chemin dans le portail : /security/permissions, menu Sécurité et gouvernance > Permissions (ReBAC). Il sert aux administrateurs de tenant et aux responsables sécurité qui accordent des accès fins, et à tout utilisateur du tenant qui vérifie une relation.

Ce que montre l'écran​

L'écran (Permissions dans portal/src/screens/security-kit.tsx) comporte deux sections.

  • Tableau Tuples de relation, lu dans GET /v1/authz/tuples (jusqu'à 1000 lignes, triées par objet, relation, sujet) : colonnes Sujet, Relation, Objet, Créé. Filtres Sujet (exemple user:alice) et Objet (exemple service_identity:billing), correspondance exacte. Un clic sur une ligne affiche la ligne.
  • Formulaire Supprimer un tuple : « Retire une relation du moteur de relations ; le changement est audité. », avec Sujet, Relation et Objet (tous obligatoires).

Tableau vide : « Aucun tuple », « Écrivez une relation, par exemple can_assume sur une identité de service, pour un utilisateur ou un groupe nommé. »

Actions​

Bouton ou actionEffetAppel APIRôles
Nouveau tuple (puis Créer)Écrit un tuple Sujet, Relation, Objet dans le moteur de relations (OpenFGA s'il est configuré, sinon les tuples intégrés) ; audité sous authz.write.POST /v1/authz/tuplestenant_admin, security_officer (bouton masqué pour les autres)
Exécuter (Supprimer un tuple)Après une confirmation, supprime le tuple ; le résultat montre deleted (0 si le tuple n'existe pas) et le moteur ; audité sous authz.delete.DELETE /v1/authz/tuplestenant_admin, security_officer (formulaire masqué pour les autres)
FiltrerApplique les filtres Sujet et Objet.GET /v1/authz/tuples (paramètres subject, object)Tout utilisateur du tenant
Clic sur une ligne ou Voir le détailAffiche la ligne.AucunTout utilisateur du tenant
Icône d'actualisationRelit la liste.GET /v1/authz/tuplesTout utilisateur du tenant

Le corps d'une écriture ou d'une suppression est un tuple :

{"subject": "user:alice", "relation": "can_assume", "object": "service_identity:billing"}

Rôles​

Le portail affiche Nouveau tuple et le formulaire de suppression à ROLES.delegationAdmins (tenant_admin, security_officer, portal/src/lib/kit.ts) ; les autres utilisateurs voient « Nécessite l'un de ces rôles » à la place du formulaire. Le Control Plane (services/control-plane/src/eai/domains/authz/__init__.py) liste les tuples pour tout utilisateur du tenant et exige tenant_admin ou security_officer pour écrire ou supprimer ; platform_admin passe tous les contrôles de rôle. La relation can_assume n'est accordée qu'à des sujets nommés : un sujet générique tel que user:* est refusé.

Tâches courantes​

Permettre à un utilisateur d'endosser une identité de service​

  1. Ouvrir le formulaire. La relation can_assume permet à un utilisateur nommé d'agir comme une identité de service. Cliquez Nouveau tuple. Résultat attendu : un panneau latéral avec Sujet, Relation, Objet. En cas d'échec : sans bouton, vous n'êtes ni tenant_admin ni security_officer.
  2. Remplir le tuple. Sujet user:alice, Relation can_assume, Objet service_identity:billing. Résultat attendu : les trois champs remplis. En cas d'échec : rien à relancer à cette étape.
  3. Créer. Cliquez Créer. Résultat attendu : le message Créé et le tuple dans le tableau. En cas d'échec : authz_wildcard_not_allowed (HTTP 422) pour un sujet finissant par :* ; authz_backend_error (HTTP 502) quand OpenFGA est injoignable.
  4. Vérifier. Filtre Sujet user:alice, Filtrer. Résultat attendu : le nouveau tuple. En cas d'échec : un tableau vide signifie que le texte du sujet diffère (la correspondance est exacte).

Retirer un accès​

  1. Trouver le tuple. Filtre Objet avec l'objet, Filtrer. Résultat attendu : les tuples sur cet objet. En cas d'échec : un tableau vide signifie qu'aucune relation n'y est accordée.
  2. Le supprimer. Formulaire Supprimer un tuple : recopiez Sujet, Relation, Objet depuis la ligne, Exécuter, acceptez la confirmation. Résultat attendu : le résultat montre deleted: 1 ; cliquez l'icône d'actualisation pour mettre à jour le tableau. En cas d'échec : deleted: 0 signifie que les trois valeurs ne correspondent pas exactement à un tuple.

Dépannage​

SymptômeCauseCorrection
authz_wildcard_not_allowed (HTTP 422)La relation n'est accordée qu'à des sujets nommés : un sujet générique est refusé.Nommez l'utilisateur ou le groupe dans Sujet.
authz_backend_error (HTTP 502)Le service d'autorisation (OpenFGA) a échoué.Vérifiez OpenFGA, puis réessayez ; l'écran Politiques montre son état sous Moteurs de politiques.
forbidden (HTTP 403) avec required_rolesL'écriture et la suppression exigent tenant_admin ou security_officer.Demandez l'un de ces rôles.
« Nécessite l'un de ces rôles »Le portail masque le formulaire de suppression pour vos rôles.Utilisez un compte avec l'un des rôles listés.
validation_error (HTTP 422)Un champ du tuple manque ou est mal formé.Remplissez Sujet, Relation et Objet.
tenant_required (HTTP 403)Le compte agit sans tenant.Connectez-vous avec un compte du tenant.

Pages liées​