Débogage de Politiques Rego
Il existe deux façons de déboguer vos politiques Rego : utiliser des instructions print ou utiliser le débogueur VSCode.
Méthode 1 : Utiliser des Instructions Print
Utilisation de Base
Ajoutez des instructions print() n'importe où dans votre politique Rego :
package infraguard.rules.aliyun.my_rule
import rego.v1
import data.infraguard.helpers
deny contains result if {
print("Starting policy evaluation")
some name, resource in helpers.resources_by_types(rule_meta.resource_types)
print("Checking resource:", name)
print("Resource type:", resource.Type)
not is_compliant(resource)
print("Found violation for resource:", name)
result := {...}
}
Format de Sortie
Les instructions print envoient la sortie vers stderr avec l'emplacement du fichier :
/path/to/policy.rego:42: Starting policy evaluation
/path/to/policy.rego:45: Checking resource: MyBucket
/path/to/policy.rego:46: Resource type: ALIYUN::OSS::Bucket
/path/to/policy.rego:49: Found violation for resource: MyBucket
Exemples d'Utilisation Courants
Inspecter les Données d'Entrée :
print("Input keys:", object.keys(input))
print("Template version:", input.ROSTemplateFormatVersion)
print("Number of resources:", count(input.Resources))
Déboguer l'Itération de Ressources :
some name, resource in helpers.resources_by_types(rule_meta.resource_types)
print("Resource:", name)
print("Properties:", object.keys(resource.Properties))
Vérifier les Conditions :
condition1 := some_check(resource)
print("Condition 1 result:", condition1)
Inspecter les Variables :
property := helpers.get_property(resource, "SomeProperty", null)
print("Property value:", property)
print("Property type:", type_name(property))
Méthode 2 : Utiliser le Débogueur VSCode
VSCode fournit une expérience de débogage plus puissante avec des points d'arrêt, l'inspection de variables et l'exécution pas à pas.
Prérequis
-
Installer OPA
Téléchargez et installez OPA depuis le site web officiel :
-
Installer Regal
Installez Regal pour un développement Rego amélioré :
https://www.openpolicyagent.org/projects/regal#download-regal
-
Installer l'Extension OPA VSCode
Installez l'extension OPA officielle depuis le marketplace VSCode :
https://marketplace.visualstudio.com/items?itemName=tsandall.opa
Étapes de Configuration
-
Préparer l'Entrée de Test
Créez un fichier nommé
input.jsondans votre répertoire de politiques avec vos données de test :{
"ROSTemplateFormatVersion": "2015-09-01",
"Resources": {
"MyBucket": {
"Type": "ALIYUN::OSS::Bucket",
"Properties": {
"BucketName": "test-bucket",
"AccessControl": "private"
}
}
}
} -
Définir des Points d'Arrêt
Ouvrez votre fichier de politique
.regodans VSCode et cliquez sur la marge gauche pour définir des points d'arrêt où vous voulez mettre en pause l'exécution. -
Démarrer le Débogage
- Appuyez sur
F5ou allez dans Exécuter → Démarrer le Débogage - Le débogueur s'arrêtera à vos points d'arrêt
- Vous pouvez inspecter les variables, exécuter pas à pas et évaluer des expressions
- Appuyez sur
Choisir une Méthode
- Instructions Print : Rapides et simples, fonctionnent dans n'importe quel environnement, utiles pour le débogage en production
- Débogueur VSCode : Plus puissant, débogage interactif avec inspection complète des variables, meilleur pour le développement
Vous pouvez utiliser les deux méthodes ensemble : utilisez les instructions print pour des vérifications rapides et le débogueur pour une investigation approfondie.