Zum Hauptinhalt springen

Hilfsfunktionen

InfraGuard bietet Hilfsfunktionen, um das Schreiben von Richtlinien zu vereinfachen.

Importieren Sie sie mit:

import data.infraguard.helpers

Verfügbare Funktionen

FunktionBeschreibung
resources_by_type(type)Alle Ressourcen eines Typs als {name: resource}-Map abrufen
resource_names_by_type(type)Alle Ressourcennamen eines Typs als Liste abrufen
count_resources_by_type(type)Ressourcen eines Typs zählen
resource_exists(type)Prüfen, ob Ressourcentyp existiert
has_property(resource, prop)Prüfen, ob Eigenschaft existiert und nicht null ist
get_property(resource, prop, default)Eigenschaft mit Standardwert abrufen
is_true(v) / is_false(v)Booleschen Wert prüfen (behandelt String "true"/"false")
is_public_cidr(cidr)Prüfen, ob CIDR 0.0.0.0/0 oder ::/0 ist
includes(list, elem)Prüfen, ob Element in Liste ist

Beispiele

# Alle ECS-Instanzen abrufen
deny contains result if {
some name, resource in helpers.resources_by_type("ALIYUN::ECS::Instance")
# Prüflogik hier
}

# Prüfen, ob Eigenschaft existiert
deny contains result if {
some name, resource in helpers.resources_by_type("ALIYUN::ECS::Instance")
not helpers.has_property(resource, "SecurityGroupId")
# Verstoßlogik
}

# Öffentliches CIDR prüfen
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)
# Verstoßlogik
}

Für weitere Beispiele siehe Regeln Schreiben.