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)oubuiltin), Statut (Brouillon, Active, Désactivée), Version, puis l'éditeur Rego (moteur opa) ou Règles (JSON) (moteur builtin). La politique de départnew-policyrefuse par défaut et autorisemodel.invokequand le sujet possède la portéemodels: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, actionmodel.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 action | Ce qu'il fait | Appel API | Rôles |
|---|---|---|---|
| Nouveau | Charge la politique de départ new-policy. | Aucun | Tout le monde |
| Clic sur une politique de la liste | L'ouvre dans l'éditeur. | Aucun (ligne de GET /v1/policies) | Tout utilisateur connecté du tenant |
| Créer | Crée la politique. | POST /v1/policies | tenant_admin, security_officer |
| Enregistrer comme nouvelle révision | Remplace 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/evaluate | Tout utilisateur connecté du tenant |
| Simuler la politique modifiée | Exécute la requête avec la politique modifiée comme candidate (et jusqu'à 20 décisions enregistrées). | POST /v1/policies/simulate | tenant_admin, security_officer, developer |
| Clic sur une ligne de Révisions | Le 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/diff | tenant_admin, security_officer, auditor, developer |
| Comparer les décisions des deux révisions | Simule 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
- 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. - É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.
- 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_unsupportedsignifie que le moteur ne peut pas être simulé. - 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_errorindique la ligne Rego. - 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
- 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.
- 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.
- 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.
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ôme | Cause | Correction |
|---|---|---|
| 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. |