Aller au contenu principal

Fonctions Auxiliaires

InfraGuard fournit des fonctions auxiliaires pour simplifier l'écriture de politiques.

Importez-les avec :

import data.infraguard.helpers

Fonctions Disponibles

FonctionDescription
resources_by_type(type)Obtenir toutes les ressources d'un type comme carte {name: resource}
resource_names_by_type(type)Obtenir tous les noms de ressources d'un type comme liste
count_resources_by_type(type)Compter les ressources d'un type
resource_exists(type)Vérifier si le type de ressource existe
has_property(resource, prop)Vérifier si la propriété existe et n'est pas null
get_property(resource, prop, default)Obtenir la propriété avec valeur par défaut
is_true(v) / is_false(v)Vérifier booléen (gère string "true"/"false")
is_public_cidr(cidr)Vérifier si CIDR est 0.0.0.0/0 ou ::/0
includes(list, elem)Vérifier si l'élément est dans la liste

Exemples

# Obtenir toutes les instances ECS
deny contains result if {
some name, resource in helpers.resources_by_type("ALIYUN::ECS::Instance")
# Logique de vérification ici
}

# Vérifier si la propriété existe
deny contains result if {
some name, resource in helpers.resources_by_type("ALIYUN::ECS::Instance")
not helpers.has_property(resource, "SecurityGroupId")
# Logique de violation
}

# Vérifier CIDR public
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)
# Logique de violation
}

Pour plus d'exemples, consultez Écrire des Règles.