security-policies/bundle/compliance/cis_aws/rules/cis_4_2/rule.rego (31 lines of code) (raw):
package compliance.cis_aws.rules.cis_4_2
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,
)
}
required_patterns := [
# { ($.eventName = \"ConsoleLogin\") && ($.additionalEventData.MFAUsed != \"Yes\") }
pattern.complex_expression("&&", [
pattern.simple_expression("$.eventName", "=", "\"ConsoleLogin\""),
pattern.simple_expression("$.additionalEventData.MFAUsed", "!=", "\"Yes\""),
]),
# { ($.eventName = \"ConsoleLogin\") && ($.additionalEventData.MFAUsed != \"Yes\") && ($.userIdentity.type = \"IAMUser\") && ($.responseElements.ConsoleLogin = \"Success\") }
pattern.complex_expression("&&", [
pattern.simple_expression("$.eventName", "=", "\"ConsoleLogin\""),
pattern.simple_expression("$.additionalEventData.MFAUsed", "!=", "\"Yes\""),
pattern.simple_expression("$.userIdentity.type", "=", "\"IAMUser\""),
pattern.simple_expression("$.responseElements.ConsoleLogin", "=", "\"Success\""),
]),
]
rule_evaluation := trail.at_least_one_trail_satisfied(required_patterns)