security-policies/bundle/compliance/policy/aws_elb/ensure_certificates.rego (30 lines of code) (raw):
package compliance.policy.aws_elb.ensure_certificates
import future.keywords.every
import future.keywords.if
import data.compliance.lib.common as lib_common
import data.compliance.policy.aws_elb.data_adapter
default rule_evaluation := false
rule_evaluation if {
all_https
not any_null_certificate
}
# Verify that all listeners has an SSL Certificate
any_null_certificate if {
data_adapter.listener_descriptions[_].Listener.SSLCertificateId == null
}
# Verify that all listeners use https protocoal
all_https if {
every description in data_adapter.listener_descriptions {
description.Listener.Protocol == "HTTPS"
}
}
finding := result if {
data_adapter.is_aws_elb
result := lib_common.generate_result_without_expected(
lib_common.calculate_result(rule_evaluation),
{
"load_balancer_name": data_adapter.load_balancer_name,
"listener_descriptions": data_adapter.listener_descriptions,
},
)
}