Saltar al contenido principal

Funciones Auxiliares

InfraGuard proporciona funciones auxiliares para simplificar la escritura de políticas.

Impórtelas con:

import data.infraguard.helpers

Funciones Disponibles

FunciónDescripción
resources_by_type(type)Obtener todos los recursos de un tipo como mapa {name: resource}
resource_names_by_type(type)Obtener todos los nombres de recursos de un tipo como lista
count_resources_by_type(type)Contar recursos de un tipo
resource_exists(type)Verificar si existe el tipo de recurso
has_property(resource, prop)Verificar si la propiedad existe y no es null
get_property(resource, prop, default)Obtener propiedad con valor predeterminado
is_true(v) / is_false(v)Verificar booleano (maneja string "true"/"false")
is_public_cidr(cidr)Verificar si CIDR es 0.0.0.0/0 o ::/0
includes(list, elem)Verificar si el elemento está en la lista

Ejemplos

# Obtener todas las instancias ECS
deny contains result if {
some name, resource in helpers.resources_by_type("ALIYUN::ECS::Instance")
# Lógica de verificación aquí
}

# Verificar si la propiedad existe
deny contains result if {
some name, resource in helpers.resources_by_type("ALIYUN::ECS::Instance")
not helpers.has_property(resource, "SecurityGroupId")
# Lógica de violación
}

# Verificar CIDR público
deny contains result if {
some name, resource in helpers.resources_by_type("ALIYUN::ECS::SecurityGroup")
some rule in resource.Properties.SecurityGroupIngress
helpers.is_public_cidr(rule.SourceCidrIp)
# Lógica de violación
}

Para más ejemplos, consulte Escribir Reglas.