security-policies/bundle/compliance/lib/output_validations/output_validations.rego (55 lines of code) (raw):
package compliance.lib.output_validations
import data.compliance
import future.keywords.every
import future.keywords.if
validate_common_provider_metadata(metadata) if {
metadata.id
metadata.name
metadata.profile_applicability
metadata.description
metadata.rationale
metadata.audit
metadata.remediation
metadata.impact
metadata.default_value
metadata.references
metadata.section
metadata.version
metadata.tags
metadata.benchmark
metadata.benchmark.name
metadata.benchmark.version
metadata.benchmark.id
metadata.benchmark.rule_number
metadata.benchmark.posture_type
}
validate_metadata(metadata) if {
validate_common_provider_metadata(metadata)
} else := false
# validate every rule metadata
test_validate_rule_metadata if {
all_k8s_rules := [rule | rule := compliance.cis_k8s.rules[rule_id]]
all_eks_rules := [rule | rule := compliance.cis_eks.rules[rule_id]]
all_aws_rules := [rule | rule := compliance.cis_aws.rules[rule_id]]
all_gcp_rules := [rule | rule := compliance.cis_gcp.rules[rule_id]]
# regal ignore:print-or-trace-call
print("Validating K8s rules")
every k8s_rule in all_k8s_rules {
validate_metadata(k8s_rule.metadata)
}
# regal ignore:print-or-trace-call
print("Validating EKS rules")
every eks_rule in all_eks_rules {
validate_metadata(eks_rule.metadata)
}
# regal ignore:print-or-trace-call
print("Validating AWS rules")
every aws_rule in all_aws_rules {
validate_metadata(aws_rule.metadata)
}
# regal ignore:print-or-trace-call
print("Validating GCP rules")
every gcp_rule in all_gcp_rules {
validate_metadata(gcp_rule.metadata)
}
}