security-policies/bundle/compliance/cis_aws/rules/cis_4_8/rule.rego (32 lines of code) (raw):

package compliance.cis_aws.rules.cis_4_8 import data.compliance.lib.common import data.compliance.policy.aws_cloudtrail.data_adapter import data.compliance.policy.aws_cloudtrail.pattern import data.compliance.policy.aws_cloudtrail.trail import future.keywords.if default rule_evaluation := false finding := result if { # filter data_adapter.is_multi_trails_type # set result result := common.generate_result_without_expected( common.calculate_result(rule_evaluation), input.resource, ) } # { ($.eventSource = s3.amazonaws.com) && (($.eventName = PutBucketAcl) || ($.eventName = PutBucketPolicy) || ($.eventName = PutBucketCors) || ($.eventName = PutBucketLifecycle) || ($.eventName = PutBucketReplication) || ($.eventName = DeleteBucketPolicy) || ($.eventName = DeleteBucketCors) || ($.eventName = DeleteBucketLifecycle) || ($.eventName = DeleteBucketReplication)) } required_patterns := [pattern.complex_expression("&&", [ pattern.simple_expression("$.eventSource", "=", "s3.amazonaws.com"), pattern.complex_expression("||", [ pattern.simple_expression("$.eventName", "=", "PutBucketAcl"), pattern.simple_expression("$.eventName", "=", "PutBucketPolicy"), pattern.simple_expression("$.eventName", "=", "PutBucketCors"), pattern.simple_expression("$.eventName", "=", "PutBucketLifecycle"), pattern.simple_expression("$.eventName", "=", "PutBucketReplication"), pattern.simple_expression("$.eventName", "=", "DeleteBucketPolicy"), pattern.simple_expression("$.eventName", "=", "DeleteBucketCors"), pattern.simple_expression("$.eventName", "=", "DeleteBucketLifecycle"), pattern.simple_expression("$.eventName", "=", "DeleteBucketReplication"), ]), ])] rule_evaluation := trail.at_least_one_trail_satisfied(required_patterns)