Depuración de Políticas Rego
Hay dos formas de depurar sus políticas Rego: usando declaraciones print o usando el depurador de VSCode.
Método 1: Usar Declaraciones Print
Uso Básico
Agregue declaraciones print() en cualquier lugar de su política 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 := {...}
}
Formato de Salida
Las declaraciones print envían salida a stderr con ubicación de archivo:
/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
Ejemplos de Uso Común
Inspeccionar Datos de Entrada:
print("Input keys:", object.keys(input))
print("Template version:", input.ROSTemplateFormatVersion)
print("Number of resources:", count(input.Resources))
Depurar Iteración de Recursos:
some name, resource in helpers.resources_by_types(rule_meta.resource_types)
print("Resource:", name)
print("Properties:", object.keys(resource.Properties))
Verificar Condiciones:
condition1 := some_check(resource)
print("Condition 1 result:", condition1)
Inspeccionar Variables:
property := helpers.get_property(resource, "SomeProperty", null)
print("Property value:", property)
print("Property type:", type_name(property))
Método 2: Usar Depurador de VSCode
VSCode proporciona una experiencia de depuración más potente con puntos de interrupción, inspección de variables y ejecución paso a paso.
Prerrequisitos
-
Instalar OPA
Descargue e instale OPA desde el sitio web oficial:
-
Instalar Regal
Instale Regal para desarrollo mejorado de Rego:
https://www.openpolicyagent.org/projects/regal#download-regal
-
Instalar Extensión OPA de VSCode
Instale la extensión oficial de OPA desde el marketplace de VSCode:
https://marketplace.visualstudio.com/items?itemName=tsandall.opa
Pasos de Configuración
-
Preparar Entrada de Prueba
Cree un archivo llamado
input.jsonen su directorio de políticas con sus datos de prueba:{
"ROSTemplateFormatVersion": "2015-09-01",
"Resources": {
"MyBucket": {
"Type": "ALIYUN::OSS::Bucket",
"Properties": {
"BucketName": "test-bucket",
"AccessControl": "private"
}
}
}
} -
Establecer Puntos de Interrupción
Abra su archivo de política
.regoen VSCode y haga clic en el margen izquierdo para establecer puntos de interrupción donde desee pausar la ejecución. -
Iniciar Depuración
- Presione
F5o vaya a Ejecutar → Iniciar Depuración - El depurador se pausará en sus puntos de interrupción
- Puede inspeccionar variables, ejecutar paso a paso y evaluar expresiones
- Presione
Elegir un Método
- Declaraciones Print: Rápido y simple, funciona en cualquier entorno, útil para depuración en producción
- Depurador de VSCode: Más potente, depuración interactiva con inspección completa de variables, mejor para desarrollo
Puede usar ambos métodos juntos: use declaraciones print para verificaciones rápidas y el depurador para investigación profunda.