Aller au contenu principal

Studio de politiques

L'écran Studio de politiques vous permet d'écrire une politique Rego ou intégrée (builtin), de tester une requête Policy Contract avec les politiques actives, de simuler la politique modifiée, et de comparer les champs et les décisions de deux révisions. Chemin dans le portail : /studio/policies. Il sert aux responsables sécurité et aux administrateurs du tenant qui écrivent les politiques, et aux développeurs qui les testent.

Ce que montre l'écran​

  • À gauche, la liste des politiques (GET /v1/policies), paginée, avec Nouveau en haut. Une liste vide affiche Aucune politique pour l'instant.
  • Les onglets Éditeur, Requête de test et, une fois une politique enregistrée ouverte, Révisions (avec leur nombre).
  • Éditeur : Nom, Moteur (opa (Rego) ou builtin), Statut (Brouillon, Active, Désactivée), Version, puis l'éditeur Rego (moteur opa) ou Règles (JSON) (moteur builtin). La politique de départ new-policy refuse par défaut et autorise model.invoke quand le sujet possède la portée models:invoke.
  • Requête de test : un éditeur JSON vérifié selon la partie requête du contrat policy-contract, prérempli avec une requête d'exemple (sujet agent, ressource modèle, action model.invoke, contexte). Le résultat de l'évaluation affiche Autorisé ou Refusé et son JSON ; la simulation affiche les badges Entrées, Modifiées, Autorisé vers refusé, Refusé vers autorisé.
  • Révisions : un tableau avec Révision, Modification, Version, Statut, Date (GET /v1/policies/{policy_id}/revisions). Cliquez sur deux lignes : la ligne De la révision a à la révision b, la différence des champs (GET /v1/policies/{policy_id}/revisions/diff) et le tableau de comparaison des décisions (#, Première révision, Seconde révision, Modification avec Modifiée ou Identique).

Actions​

Bouton ou actionCe qu'il faitAppel APIRôles
NouveauCharge la politique de départ new-policy.AucunTout le monde
Clic sur une politique de la listeL'ouvre dans l'éditeur.Aucun (ligne de GET /v1/policies)Tout utilisateur connecté du tenant
CréerCrée la politique.POST /v1/policiestenant_admin, security_officer
Enregistrer comme nouvelle révisionRemplace la politique ; une révision immuable est ajoutée.PUT /v1/policies/{policy_id}tenant_admin, security_officer
Évaluer avec les politiques activesÉvalue la requête avec les politiques actives du tenant.POST /v1/policies/evaluateTout utilisateur connecté du tenant
Simuler la politique modifiéeExécute la requête avec la politique modifiée comme candidate (et jusqu'à 20 décisions enregistrées).POST /v1/policies/simulatetenant_admin, security_officer, developer
Clic sur une ligne de RévisionsLe premier clic fixe la première révision, le second la seconde ; la différence des champs est lue.GET /v1/policies/{policy_id}/revisions/difftenant_admin, security_officer, auditor, developer
Comparer les décisions des deux révisionsSimule les deux révisions sur la même requête et compare les décisions.POST /v1/policies/simulate (deux fois)tenant_admin, security_officer, developer

Rôles​

Le portail active le bouton d'enregistrement pour POLICY_WRITERS (tenant_admin, security_officer) et affiche L'enregistrement nécessite le rôle tenant_admin ou security_officer. sinon ; il active la simulation et la comparaison pour POLICY_SIMULATORS (tenant_admin, security_officer, developer, aussi ROLES.policySimulators dans portal/src/lib/kit.ts). Le Control Plane contrôle les mêmes listes dans services/control-plane/src/eai/domains/policies/__init__.py : ADMIN_ROLES pour la création et la mise à jour, ADMIN_ROLES plus developer pour la simulation, ADMIN_ROLES plus auditor et developer pour les révisions et la différence.

Tâches courantes​

Écrire et tester une nouvelle politique Rego​

  1. Partir du modèle de départ. Cliquez sur Nouveau. Résultat attendu : new-policy, moteur opa, statut Brouillon. En cas d'échec : rechargez la page.
  2. Écrire la règle. Gardez le refus par défaut. Modifiez l'éditeur Rego. Résultat attendu : le texte Rego. En cas d'échec : rien n'est vérifié avant l'enregistrement.
  3. Simuler. Vous voyez l'effet avant l'activation. Ouvrez Requête de test, adaptez la requête d'exemple et cliquez sur Simuler la politique modifiée. Résultat attendu : les badges avec les décisions modifiées. En cas d'échec : simulation_engine_unsupported signifie que le moteur ne peut pas être simulé.
  4. Créer en brouillon. Cliquez sur Créer. Résultat attendu : le message Politique enregistrée : une nouvelle révision a été créée. En cas d'échec : validation_error indique la ligne Rego.
  5. Activer. Mettez Statut sur Active et cliquez sur Enregistrer comme nouvelle révision. Résultat attendu : une nouvelle révision. En cas d'échec : vérifiez votre rôle.

Comparer deux révisions​

  1. Ouvrir les révisions. Ouvrez la politique, puis Révisions. Résultat attendu : le tableau des révisions. En cas d'échec : Aucune version pour l'instant signifie qu'il n'y a aucune révision.
  2. Choisir deux lignes. Cliquez sur la révision la plus ancienne puis sur la plus récente. Résultat attendu : la ligne De la révision a à la révision b et la différence des champs. En cas d'échec : un troisième clic recommence la sélection.
  3. Comparer les décisions. Cliquez sur Comparer les décisions des deux révisions. Résultat attendu : les compteurs et une ligne par entrée. En cas d'échec : vérifiez que la requête de Requête de test est un JSON valide.
attention

Une politique Active s'applique immédiatement à chaque requête du tenant. Simulez-la et gardez-la en Brouillon tant que la simulation montre un changement Refusé vers autorisé inattendu.

Dépannage​

SymptômeCauseCorrection
L'enregistrement nécessite le rôle tenant_admin ou security_officer.Vos rôles ne permettent pas d'écrire des politiques.Demandez le rôle security_officer.
Erreur validation_error (422)Rego invalide, requête invalide ou entrées invalides.Corrigez la ligne ou le champ cité dans errors.
Erreur policy_engine_unavailable (503)Le moteur OPA est injoignable.Vérifiez le service OPA, puis enregistrez de nouveau.
Erreur simulation_engine_unsupported (422)Le moteur de la candidate ne peut pas être simulé.Changez de moteur ou testez avec Évaluer avec les politiques actives.
Aucune entrée à comparer.La requête est vide.Remplissez Requête de test.

Pages liées​