gitextract_py6281yd/ ├── .devcontainer/ │ ├── Dockerfile │ ├── build/ │ │ ├── Dockerfile │ │ └── dockerhub.sh │ └── devcontainer.json ├── .dockerhub/ │ └── Dockerfile ├── .github/ │ └── workflows/ │ ├── build.yml │ ├── build_and_deploy.yml │ ├── bump_version.yml │ └── vscode_remote_development.yml ├── .gitignore ├── .goreleaser.yml ├── CONTRIBUTING.md ├── LICENSE.md ├── Makefile ├── README.md ├── assertion/ │ ├── compare.go │ ├── compare_test.go │ ├── contains.go │ ├── contains_test.go │ ├── expression.go │ ├── expression_test.go │ ├── has_properties.go │ ├── helper_test.go │ ├── invoke.go │ ├── invoke_test.go │ ├── ip_operations.go │ ├── ip_operations_test.go │ ├── log.go │ ├── match.go │ ├── match_test.go │ ├── rules.go │ ├── rules_test.go │ ├── search.go │ ├── testdata/ │ │ ├── collection-assertions.yaml │ │ ├── conditions.yaml │ │ ├── default-severity.yaml │ │ └── has-properties.yaml │ ├── types.go │ ├── util.go │ ├── util_test.go │ ├── value.go │ └── value_test.go ├── cli/ │ ├── app.go │ ├── app_test.go │ ├── assets/ │ │ ├── lint-rules.yml │ │ └── terraform/ │ │ └── aws/ │ │ ├── api_gateway/ │ │ │ └── api_gateway_domain_name/ │ │ │ └── security_policy/ │ │ │ ├── rule.yml │ │ │ └── tests/ │ │ │ ├── terraform12/ │ │ │ │ └── security_policy.tf │ │ │ └── test.yml │ │ ├── batch/ │ │ │ └── batch_job_definition/ │ │ │ ├── aws_secrets/ │ │ │ │ ├── rule.yml │ │ │ │ └── tests/ │ │ │ │ ├── terraform12/ │ │ │ │ │ └── aws_secrets.tf │ │ │ │ └── test.yml │ │ │ └── container_properties_privileged/ │ │ │ ├── rule.yml │ │ │ └── tests/ │ │ │ ├── terraform11/ │ │ │ │ └── container_properties_privileged.tf │ │ │ ├── terraform12/ │ │ │ │ └── container_properties_privileged.tf │ │ │ └── test.yml │ │ ├── cloudfront/ │ │ │ └── cloudfront_distribution/ │ │ │ ├── custom_origin_config/ │ │ │ │ ├── rule.yml │ │ │ │ └── tests/ │ │ │ │ ├── terraform11/ │ │ │ │ │ └── custom_origin_config.tf │ │ │ │ ├── terraform12/ │ │ │ │ │ └── custom_origin_config.tf │ │ │ │ └── test.yml │ │ │ ├── logging_config/ │ │ │ │ ├── rule.yml │ │ │ │ └── tests/ │ │ │ │ ├── terraform11/ │ │ │ │ │ └── logging_config.tf │ │ │ │ ├── terraform12/ │ │ │ │ │ └── logging_config.tf │ │ │ │ └── test.yml │ │ │ ├── minimum_ssl_protocol/ │ │ │ │ ├── rule.yml │ │ │ │ └── tests/ │ │ │ │ ├── terraform12/ │ │ │ │ │ └── minimum_ssl_protocol.tf │ │ │ │ └── test.yml │ │ │ └── viewer_protocol_policy/ │ │ │ ├── rule.yml │ │ │ └── tests/ │ │ │ ├── terraform11/ │ │ │ │ └── viewer_protocol_policy.tf │ │ │ ├── terraform12/ │ │ │ │ └── viewer_protocol_policy.tf │ │ │ └── test.yml │ │ ├── cloudtrail/ │ │ │ └── cloudtrail/ │ │ │ └── kms_key_id/ │ │ │ ├── rule.yml │ │ │ └── tests/ │ │ │ ├── terraform11/ │ │ │ │ └── kms_key_id.tf │ │ │ ├── terraform12/ │ │ │ │ └── kms_key_id.tf │ │ │ └── test.yml │ │ ├── cloudwatch/ │ │ │ └── cloudwatch_log_destination_policy/ │ │ │ └── wildcard_principal/ │ │ │ ├── rule.yml │ │ │ └── tests/ │ │ │ ├── terraform12/ │ │ │ │ └── wildcard_principal.tf │ │ │ └── test.yml │ │ ├── codebuild/ │ │ │ └── codebuild_project/ │ │ │ ├── artifact_encryption/ │ │ │ │ ├── rule.yml │ │ │ │ └── tests/ │ │ │ │ ├── terraform11/ │ │ │ │ │ └── artifact_encryption.tf │ │ │ │ ├── terraform12/ │ │ │ │ │ └── artifact_encryption.tf │ │ │ │ └── test.yml │ │ │ └── project_encryption/ │ │ │ ├── rule.yml │ │ │ └── tests/ │ │ │ ├── terraform11/ │ │ │ │ └── project_encryption.tf │ │ │ ├── terraform12/ │ │ │ │ └── project_encryption.tf │ │ │ └── test.yml │ │ ├── codepipeline/ │ │ │ └── codepipeline/ │ │ │ └── encryption_key/ │ │ │ ├── rule.yml │ │ │ └── tests/ │ │ │ ├── terraform11/ │ │ │ │ └── encryption_key.tf │ │ │ ├── terraform12/ │ │ │ │ └── encryption_key.tf │ │ │ └── test.yml │ │ ├── dms/ │ │ │ └── dms_endpoint/ │ │ │ └── endpoint_kms_key/ │ │ │ ├── rule.yml │ │ │ └── tests/ │ │ │ ├── terraform11/ │ │ │ │ └── kms_key.tf │ │ │ ├── terraform12/ │ │ │ │ └── kms_key.tf │ │ │ └── test.yml │ │ ├── documentdb/ │ │ │ └── docdb_cluster/ │ │ │ ├── audit_logs/ │ │ │ │ ├── rule.yml │ │ │ │ └── tests/ │ │ │ │ ├── terraform12/ │ │ │ │ │ └── audit_logs.tf │ │ │ │ └── test.yml │ │ │ └── storage_encryption/ │ │ │ ├── rule.yml │ │ │ └── tests/ │ │ │ ├── terraform12/ │ │ │ │ └── storage_encryption.tf │ │ │ └── test.yml │ │ ├── ec2/ │ │ │ ├── ami/ │ │ │ │ └── ebs_block_device_encrypted/ │ │ │ │ ├── rule.yml │ │ │ │ └── tests/ │ │ │ │ ├── terraform11/ │ │ │ │ │ └── ebs_block_device_encrypted.tf │ │ │ │ ├── terraform12/ │ │ │ │ │ └── ebs_block_device_encrypted.tf │ │ │ │ └── test.yml │ │ │ ├── ami_copy/ │ │ │ │ └── encrypted/ │ │ │ │ ├── rule.yml │ │ │ │ └── tests/ │ │ │ │ ├── terraform11/ │ │ │ │ │ └── encrypted.tf │ │ │ │ ├── terraform12/ │ │ │ │ │ └── encrypted.tf │ │ │ │ └── test.yml │ │ │ ├── ebs_volume/ │ │ │ │ └── encryption/ │ │ │ │ ├── rule.yml │ │ │ │ └── tests/ │ │ │ │ ├── terraform11/ │ │ │ │ │ └── encrypted.tf │ │ │ │ ├── terraform12/ │ │ │ │ │ └── encrypted.tf │ │ │ │ └── test.yml │ │ │ └── instance/ │ │ │ └── ebs_block_device_encrypted/ │ │ │ ├── rule.yml │ │ │ └── tests/ │ │ │ ├── terraform12/ │ │ │ │ └── ebs_block_device_encrypted.tf │ │ │ └── test.yml │ │ ├── ecr/ │ │ │ └── ecr_repository_policy/ │ │ │ └── wildcard_principal/ │ │ │ ├── rule.yml │ │ │ └── tests/ │ │ │ ├── terraform12/ │ │ │ │ └── wildcard_principal.tf │ │ │ └── test.yml │ │ ├── ecs/ │ │ │ └── ecs_task_definition/ │ │ │ └── task_definition_secrets/ │ │ │ ├── rule.yml │ │ │ └── tests/ │ │ │ ├── terraform11/ │ │ │ │ └── secrets.tf │ │ │ ├── terraform12/ │ │ │ │ └── secrets.tf │ │ │ └── test.yml │ │ ├── efs/ │ │ │ └── efs_file_system/ │ │ │ └── encryption/ │ │ │ ├── rule.yml │ │ │ └── tests/ │ │ │ ├── terraform11/ │ │ │ │ └── encrypted.tf │ │ │ ├── terraform12/ │ │ │ │ └── encrypted.tf │ │ │ └── test.yml │ │ ├── elastic_load_balancing/ │ │ │ ├── alb/ │ │ │ │ └── alb_access_logs_enabled/ │ │ │ │ ├── rule.yml │ │ │ │ └── tests/ │ │ │ │ ├── terraform11/ │ │ │ │ │ └── access_logs_enabled.tf │ │ │ │ ├── terraform12/ │ │ │ │ │ └── access_logs_enabled.tf │ │ │ │ └── test.yml │ │ │ ├── alb_listener/ │ │ │ │ └── alb_listener_https/ │ │ │ │ ├── rule.yml │ │ │ │ └── tests/ │ │ │ │ ├── terraform11/ │ │ │ │ │ └── https.tf │ │ │ │ ├── terraform12/ │ │ │ │ │ └── https.tf │ │ │ │ └── test.yml │ │ │ ├── elb/ │ │ │ │ └── access_logs_enabled/ │ │ │ │ ├── rule.yml │ │ │ │ └── tests/ │ │ │ │ ├── terraform11/ │ │ │ │ │ └── access_logs_enabled.tf │ │ │ │ ├── terraform12/ │ │ │ │ │ └── access_logs_enabled.tf │ │ │ │ └── test.yml │ │ │ ├── lb/ │ │ │ │ └── access_logs_enabled/ │ │ │ │ ├── rule.yml │ │ │ │ └── tests/ │ │ │ │ ├── terraform11/ │ │ │ │ │ └── access_logs_enabled.tf │ │ │ │ ├── terraform12/ │ │ │ │ │ └── access_logs_enabled.tf │ │ │ │ └── test.yml │ │ │ └── lb_listener/ │ │ │ ├── listener_https/ │ │ │ │ ├── rule.yml │ │ │ │ └── tests/ │ │ │ │ ├── terraform11/ │ │ │ │ │ └── https.tf │ │ │ │ ├── terraform12/ │ │ │ │ │ └── https.tf │ │ │ │ └── test.yml │ │ │ └── listener_ssl_policy/ │ │ │ ├── rule.yml │ │ │ └── tests/ │ │ │ ├── terraform11/ │ │ │ │ └── ssl_policy.tf │ │ │ ├── terraform12/ │ │ │ │ └── ssl_policy.tf │ │ │ └── test.yml │ │ ├── elasticache/ │ │ │ └── elasticache_replication_group/ │ │ │ ├── encryption_at_rest/ │ │ │ │ ├── rule.yml │ │ │ │ └── tests/ │ │ │ │ ├── terraform12/ │ │ │ │ │ └── encryption_at_rest.tf │ │ │ │ └── test.yml │ │ │ └── encryption_in_transit/ │ │ │ ├── rule.yml │ │ │ └── tests/ │ │ │ ├── terraform11/ │ │ │ │ └── encryption_in_transit.tf │ │ │ ├── terraform12/ │ │ │ │ └── encryption_in_transit.tf │ │ │ └── test.yml │ │ ├── elasticsearch/ │ │ │ ├── elasticsearch_domain/ │ │ │ │ ├── encryption_at_rest/ │ │ │ │ │ ├── rule.yml │ │ │ │ │ └── tests/ │ │ │ │ │ ├── terraform12/ │ │ │ │ │ │ └── encryption_at_rest.tf │ │ │ │ │ └── test.yml │ │ │ │ ├── encryption_node_to_node/ │ │ │ │ │ ├── rule.yml │ │ │ │ │ └── tests/ │ │ │ │ │ ├── terraform12/ │ │ │ │ │ │ └── encryption_node_to_node.tf │ │ │ │ │ └── test.yml │ │ │ │ └── vpc_subnets/ │ │ │ │ ├── rule.yml │ │ │ │ └── tests/ │ │ │ │ ├── terraform12/ │ │ │ │ │ └── elasticsearch_vpc.tf │ │ │ │ └── test.yml │ │ │ └── shared/ │ │ │ └── wildcard_principal/ │ │ │ ├── rule.yml │ │ │ └── tests/ │ │ │ ├── terraform12/ │ │ │ │ ├── elasticsearch_domain_policy_wildcard_principal.tf │ │ │ │ └── elasticsearch_domain_wildcard_principal.tf │ │ │ └── test.yml │ │ ├── elastictranscoder/ │ │ │ └── elastictranscoder_pipeline/ │ │ │ └── require_encryption/ │ │ │ ├── rule.yml │ │ │ └── tests/ │ │ │ ├── terraform12/ │ │ │ │ └── require_encryption.tf │ │ │ └── test.yml │ │ ├── emr/ │ │ │ └── emr_cluster/ │ │ │ └── logging/ │ │ │ ├── rule.yml │ │ │ └── tests/ │ │ │ ├── terraform11/ │ │ │ │ └── logging.tf │ │ │ ├── terraform12/ │ │ │ │ └── logging.tf │ │ │ └── test.yml │ │ ├── glue/ │ │ │ └── glue_connection/ │ │ │ └── connection_properties/ │ │ │ ├── rule.yml │ │ │ └── tests/ │ │ │ ├── terraform12/ │ │ │ │ └── connection_properties.tf │ │ │ └── test.yml │ │ ├── iam/ │ │ │ ├── iam_group_membership/ │ │ │ │ └── group_and_users/ │ │ │ │ ├── rule.yml │ │ │ │ └── tests/ │ │ │ │ ├── terraform11/ │ │ │ │ │ └── group_and_users.tf │ │ │ │ ├── terraform12/ │ │ │ │ │ └── group_and_users.tf │ │ │ │ └── test.yml │ │ │ ├── iam_policy/ │ │ │ │ ├── policy_action_wildcard/ │ │ │ │ │ ├── rule.yml │ │ │ │ │ └── tests/ │ │ │ │ │ ├── terraform11/ │ │ │ │ │ │ └── policy_action_wildcard.tf │ │ │ │ │ ├── terraform12/ │ │ │ │ │ │ └── policy_action_wildcard.tf │ │ │ │ │ └── test.yml │ │ │ │ ├── policy_notaction/ │ │ │ │ │ ├── rule.yml │ │ │ │ │ └── tests/ │ │ │ │ │ ├── terraform11/ │ │ │ │ │ │ └── policy_notaction.tf │ │ │ │ │ ├── terraform12/ │ │ │ │ │ │ └── policy_notaction.tf │ │ │ │ │ └── test.yml │ │ │ │ ├── policy_notresource/ │ │ │ │ │ ├── rule.yml │ │ │ │ │ └── tests/ │ │ │ │ │ ├── terraform11/ │ │ │ │ │ │ └── policy_notresource.tf │ │ │ │ │ ├── terraform12/ │ │ │ │ │ │ └── policy_notresource.tf │ │ │ │ │ └── test.yml │ │ │ │ └── policy_resource_wildcard/ │ │ │ │ ├── rule.yml │ │ │ │ └── tests/ │ │ │ │ ├── terraform11/ │ │ │ │ │ └── policy_resource_wildcard.tf │ │ │ │ ├── terraform12/ │ │ │ │ │ └── policy_resource_wildcard.tf │ │ │ │ └── test.yml │ │ │ ├── iam_role/ │ │ │ │ ├── assume_role_policy_action_wildcard/ │ │ │ │ │ ├── rule.yml │ │ │ │ │ └── tests/ │ │ │ │ │ ├── terraform11/ │ │ │ │ │ │ └── assume_role_policy_action_wildcard.tf │ │ │ │ │ ├── terraform12/ │ │ │ │ │ │ └── assume_role_policy_action_wildcard.tf │ │ │ │ │ └── test.yml │ │ │ │ ├── assume_role_policy_notaction/ │ │ │ │ │ ├── rule.yml │ │ │ │ │ └── tests/ │ │ │ │ │ ├── terraform11/ │ │ │ │ │ │ └── assume_role_policy_notaction.tf │ │ │ │ │ ├── terraform12/ │ │ │ │ │ │ └── assume_role_policy_notaction.tf │ │ │ │ │ └── test.yml │ │ │ │ ├── assume_role_policy_notprincipal/ │ │ │ │ │ ├── rule.yml │ │ │ │ │ └── tests/ │ │ │ │ │ ├── terraform11/ │ │ │ │ │ │ └── assume_role_policy_notprincipal.tf │ │ │ │ │ ├── terraform12/ │ │ │ │ │ │ └── assume_role_policy_notprincipal.tf │ │ │ │ │ └── test.yml │ │ │ │ └── assume_role_policy_version/ │ │ │ │ ├── rule.yml │ │ │ │ └── tests/ │ │ │ │ ├── terraform11/ │ │ │ │ │ └── assume_role_policy_version.tf │ │ │ │ ├── terraform12/ │ │ │ │ │ └── assume_role_policy_version.tf │ │ │ │ └── test.yml │ │ │ ├── iam_role_policy/ │ │ │ │ ├── role_policy_action_wildcard/ │ │ │ │ │ ├── rule.yml │ │ │ │ │ └── tests/ │ │ │ │ │ ├── terraform11/ │ │ │ │ │ │ └── policy_action_wildcard.tf │ │ │ │ │ ├── terraform12/ │ │ │ │ │ │ └── policy_action_wildcard.tf │ │ │ │ │ └── test.yml │ │ │ │ ├── role_policy_notaction/ │ │ │ │ │ ├── rule.yml │ │ │ │ │ └── tests/ │ │ │ │ │ ├── terraform11/ │ │ │ │ │ │ └── policy_notaction.tf │ │ │ │ │ ├── terraform12/ │ │ │ │ │ │ └── policy_notaction.tf │ │ │ │ │ └── test.yml │ │ │ │ ├── role_policy_notresource/ │ │ │ │ │ ├── rule.yml │ │ │ │ │ └── tests/ │ │ │ │ │ ├── terraform11/ │ │ │ │ │ │ └── policy_notresource.tf │ │ │ │ │ ├── terraform12/ │ │ │ │ │ │ └── policy_notresource.tf │ │ │ │ │ └── test.yml │ │ │ │ └── role_policy_resource_wildcard/ │ │ │ │ ├── rule.yml │ │ │ │ └── tests/ │ │ │ │ ├── terraform11/ │ │ │ │ │ └── policy_resource_wildcard.tf │ │ │ │ ├── terraform12/ │ │ │ │ │ └── policy_resource_wildcard.tf │ │ │ │ └── test.yml │ │ │ ├── iam_user_policy/ │ │ │ │ └── exists/ │ │ │ │ ├── rule.yml │ │ │ │ └── tests/ │ │ │ │ ├── terraform11/ │ │ │ │ │ └── resource_exists.tf │ │ │ │ ├── terraform12/ │ │ │ │ │ └── resource_exists.tf │ │ │ │ └── test.yml │ │ │ └── iam_user_policy_attachment/ │ │ │ └── exists/ │ │ │ ├── rule.yml │ │ │ └── tests/ │ │ │ ├── terraform11/ │ │ │ │ └── resource_exists.tf │ │ │ ├── terraform12/ │ │ │ │ └── resource_exists.tf │ │ │ └── test.yml │ │ ├── iot/ │ │ │ └── iot_policy/ │ │ │ └── wildcard_principal/ │ │ │ ├── rule.yml │ │ │ └── tests/ │ │ │ ├── terraform12/ │ │ │ │ └── wildcard_principal.tf │ │ │ └── test.yml │ │ ├── kinesis/ │ │ │ └── kinesis_stream/ │ │ │ ├── kinesis_stream_encryption/ │ │ │ │ ├── rule.yml │ │ │ │ └── tests/ │ │ │ │ ├── terraform11/ │ │ │ │ │ └── encryption.tf │ │ │ │ ├── terraform12/ │ │ │ │ │ └── encryption.tf │ │ │ │ └── test.yml │ │ │ └── kinesis_stream_kms_key/ │ │ │ ├── rule.yml │ │ │ └── tests/ │ │ │ ├── terraform11/ │ │ │ │ └── kms_key.tf │ │ │ ├── terraform12/ │ │ │ │ └── kms_key.tf │ │ │ └── test.yml │ │ ├── kinesis_firehouse/ │ │ │ └── kinesis_firehose_delivery_stream/ │ │ │ └── encryption/ │ │ │ ├── rule.yml │ │ │ └── tests/ │ │ │ ├── terraform11/ │ │ │ │ └── encryption.tf │ │ │ ├── terraform12/ │ │ │ │ └── encryption.tf │ │ │ └── test.yml │ │ ├── kms/ │ │ │ └── kms_key/ │ │ │ ├── rotation/ │ │ │ │ ├── rule.yml │ │ │ │ └── tests/ │ │ │ │ ├── terraform11/ │ │ │ │ │ └── rotation.tf │ │ │ │ ├── terraform12/ │ │ │ │ │ └── rotation.tf │ │ │ │ └── test.yml │ │ │ └── wildcard_policy/ │ │ │ ├── rule.yml │ │ │ └── tests/ │ │ │ ├── terraform12/ │ │ │ │ └── wildcard_policy.tf │ │ │ └── test.yml │ │ ├── lambda/ │ │ │ ├── lambda_function/ │ │ │ │ ├── encryption/ │ │ │ │ │ ├── rule.yml │ │ │ │ │ └── tests/ │ │ │ │ │ ├── terraform11/ │ │ │ │ │ │ └── encryption.tf │ │ │ │ │ ├── terraform12/ │ │ │ │ │ │ └── encryption.tf │ │ │ │ │ └── test.yml │ │ │ │ └── environment_variables_aws_secrets/ │ │ │ │ ├── rule.yml │ │ │ │ └── tests/ │ │ │ │ ├── terraform11/ │ │ │ │ │ └── environment_variables_aws_secrets.tf │ │ │ │ ├── terraform12/ │ │ │ │ │ └── environment_variables_aws_secrets.tf │ │ │ │ └── test.yml │ │ │ └── lambda_permission/ │ │ │ ├── action/ │ │ │ │ ├── rule.yml │ │ │ │ └── tests/ │ │ │ │ ├── terraform11/ │ │ │ │ │ └── action.tf │ │ │ │ ├── terraform12/ │ │ │ │ │ └── action.tf │ │ │ │ └── test.yml │ │ │ └── principal_wildcard/ │ │ │ ├── rule.yml │ │ │ └── tests/ │ │ │ ├── terraform11/ │ │ │ │ └── principal_wildcard.tf │ │ │ ├── terraform12/ │ │ │ │ └── principal_wildcard.tf │ │ │ └── test.yml │ │ ├── mediastore/ │ │ │ └── media_store_container_policy/ │ │ │ └── wildcard_principal/ │ │ │ ├── rule.yml │ │ │ └── tests/ │ │ │ ├── terraform12/ │ │ │ │ └── wildcard_principal.tf │ │ │ └── test.yml │ │ ├── neptune/ │ │ │ └── neptune_cluster/ │ │ │ └── encryption/ │ │ │ ├── rule.yml │ │ │ └── tests/ │ │ │ ├── terraform12/ │ │ │ │ └── encryption.tf │ │ │ └── test.yml │ │ ├── opsworks/ │ │ │ └── opsworks_application/ │ │ │ └── require_ssl/ │ │ │ ├── rule.yml │ │ │ └── tests/ │ │ │ ├── terraform12/ │ │ │ │ └── require_ssl.tf │ │ │ └── test.yml │ │ ├── rds/ │ │ │ ├── db_instance/ │ │ │ │ ├── encryption/ │ │ │ │ │ ├── rule.yml │ │ │ │ │ └── tests/ │ │ │ │ │ ├── terraform11/ │ │ │ │ │ │ └── storage_encryption.tf │ │ │ │ │ ├── terraform12/ │ │ │ │ │ │ └── storage_encryption.tf │ │ │ │ │ └── test.yml │ │ │ │ └── publicly_accessible/ │ │ │ │ ├── rule.yml │ │ │ │ └── tests/ │ │ │ │ ├── terraform11/ │ │ │ │ │ └── publicly_accessible.tf │ │ │ │ ├── terraform12/ │ │ │ │ │ └── publicly_accessible.tf │ │ │ │ └── test.yml │ │ │ └── rds_cluster/ │ │ │ └── encryption/ │ │ │ ├── rule.yml │ │ │ └── tests/ │ │ │ ├── terraform12/ │ │ │ │ └── storage_encryption.tf │ │ │ └── test.yml │ │ ├── redshift/ │ │ │ ├── redshift_cluster/ │ │ │ │ ├── encrypted/ │ │ │ │ │ ├── rule.yml │ │ │ │ │ └── tests/ │ │ │ │ │ ├── terraform12/ │ │ │ │ │ │ └── encrypted.tf │ │ │ │ │ └── test.yml │ │ │ │ ├── enhanced_vpc_routing/ │ │ │ │ │ ├── rule.yml │ │ │ │ │ └── tests/ │ │ │ │ │ ├── terraform11/ │ │ │ │ │ │ └── enhanced_vpc_routing.tf │ │ │ │ │ ├── terraform12/ │ │ │ │ │ │ └── enhanced_vpc_routing.tf │ │ │ │ │ └── test.yml │ │ │ │ ├── kms_key_id/ │ │ │ │ │ ├── rule.yml │ │ │ │ │ └── tests/ │ │ │ │ │ ├── terraform11/ │ │ │ │ │ │ └── kms_key_id.tf │ │ │ │ │ ├── terraform12/ │ │ │ │ │ │ └── kms_key_id.tf │ │ │ │ │ └── test.yml │ │ │ │ ├── logging/ │ │ │ │ │ ├── rule.yml │ │ │ │ │ └── tests/ │ │ │ │ │ ├── terraform11/ │ │ │ │ │ │ └── logging.tf │ │ │ │ │ ├── terraform12/ │ │ │ │ │ │ └── logging.tf │ │ │ │ │ └── test.yml │ │ │ │ └── publicly_accessible/ │ │ │ │ ├── rule.yml │ │ │ │ └── tests/ │ │ │ │ ├── terraform11/ │ │ │ │ │ └── publicly_accessible.tf │ │ │ │ ├── terraform12/ │ │ │ │ │ └── publicly_accessible.tf │ │ │ │ └── test.yml │ │ │ └── redshift_parameter_group/ │ │ │ ├── require_ssl/ │ │ │ │ ├── rule.yml │ │ │ │ └── tests/ │ │ │ │ ├── terraform12/ │ │ │ │ │ └── require_ssl.tf │ │ │ │ └── test.yml │ │ │ └── user_logging/ │ │ │ ├── rule.yml │ │ │ └── tests/ │ │ │ ├── terraform12/ │ │ │ │ └── user_logging.tf │ │ │ └── test.yml │ │ ├── s3/ │ │ │ ├── s3_bucket/ │ │ │ │ ├── acl_not_public/ │ │ │ │ │ ├── rule.yml │ │ │ │ │ └── tests/ │ │ │ │ │ ├── terraform11/ │ │ │ │ │ │ └── acl_not_public.tf │ │ │ │ │ ├── terraform12/ │ │ │ │ │ │ └── acl_not_public.tf │ │ │ │ │ └── test.yml │ │ │ │ └── server_side_encryption_enabled/ │ │ │ │ ├── rule.yml │ │ │ │ └── tests/ │ │ │ │ ├── terraform12/ │ │ │ │ │ └── server_side_encryption_enabled.tf │ │ │ │ └── test.yml │ │ │ ├── s3_bucket_object/ │ │ │ │ └── encryption_enabled/ │ │ │ │ ├── rule.yml │ │ │ │ └── tests/ │ │ │ │ ├── terraform11/ │ │ │ │ │ └── encryption_enabled.tf │ │ │ │ ├── terraform12/ │ │ │ │ │ └── encryption_enabled.tf │ │ │ │ └── test.yml │ │ │ └── s3_bucket_policy/ │ │ │ ├── policy_statement_action_wildcard/ │ │ │ │ ├── rule.yml │ │ │ │ └── tests/ │ │ │ │ ├── terraform11/ │ │ │ │ │ └── policy_statement_action_wildcard.tf │ │ │ │ ├── terraform12/ │ │ │ │ │ └── policy_statement_action_wildcard.tf │ │ │ │ └── test.yml │ │ │ ├── policy_statement_notaction/ │ │ │ │ ├── rule.yml │ │ │ │ └── tests/ │ │ │ │ ├── terraform11/ │ │ │ │ │ └── policy_statement_notaction.tf │ │ │ │ ├── terraform12/ │ │ │ │ │ └── policy_statement_notaction.tf │ │ │ │ └── test.yml │ │ │ ├── policy_statement_notprincipal/ │ │ │ │ ├── rule.yml │ │ │ │ └── tests/ │ │ │ │ ├── terraform11/ │ │ │ │ │ └── policy_statement_notprincipal.tf │ │ │ │ ├── terraform12/ │ │ │ │ │ └── policy_statement_notprincipal.tf │ │ │ │ └── test.yml │ │ │ ├── policy_statement_principal_wildcard/ │ │ │ │ ├── rule.yml │ │ │ │ └── tests/ │ │ │ │ ├── terraform11/ │ │ │ │ │ └── policy_statement_principal_wildcard.tf │ │ │ │ ├── terraform12/ │ │ │ │ │ └── policy_statement_principal_wildcard.tf │ │ │ │ └── test.yml │ │ │ └── policy_statement_secure_transport/ │ │ │ ├── rule.yml │ │ │ └── tests/ │ │ │ ├── terraform11/ │ │ │ │ └── policy_statement_secure_transport.tf │ │ │ ├── terraform12/ │ │ │ │ └── policy_statement_secure_transport.tf │ │ │ └── test.yml │ │ ├── sagemaker/ │ │ │ ├── sagemaker_endpoint_configuration/ │ │ │ │ └── kms_key/ │ │ │ │ ├── rule.yml │ │ │ │ └── tests/ │ │ │ │ ├── terraform11/ │ │ │ │ │ └── kms_key.tf │ │ │ │ ├── terraform12/ │ │ │ │ │ └── kms_key.tf │ │ │ │ └── test.yml │ │ │ └── sagemaker_notebook_instance/ │ │ │ └── kms_key/ │ │ │ ├── rule.yml │ │ │ └── tests/ │ │ │ ├── terraform11/ │ │ │ │ └── kms_key.tf │ │ │ ├── terraform12/ │ │ │ │ └── kms_key.tf │ │ │ └── test.yml │ │ ├── ses/ │ │ │ └── ses_identity_policy/ │ │ │ └── wildcard_principal/ │ │ │ ├── rule.yml │ │ │ └── tests/ │ │ │ ├── terraform12/ │ │ │ │ └── wildcard_principal.tf │ │ │ └── test.yml │ │ ├── shared/ │ │ │ ├── exists.todo.txt │ │ │ ├── https.todo.txt │ │ │ ├── kms_key.todo.txt │ │ │ ├── policy.todo.txt │ │ │ ├── policy_version.todo.txt │ │ │ └── require_ssl.todo.txt │ │ ├── sns/ │ │ │ ├── shared/ │ │ │ │ └── wildcard_principal/ │ │ │ │ ├── rule.yml │ │ │ │ └── tests/ │ │ │ │ ├── terraform12/ │ │ │ │ │ ├── sns_topic_policy_wildcard_principal.tf │ │ │ │ │ └── sns_topic_wildcard_principal.tf │ │ │ │ └── test.yml │ │ │ └── sns_topic_policy/ │ │ │ ├── topic_policy_statement_notaction/ │ │ │ │ ├── rule.yml │ │ │ │ └── tests/ │ │ │ │ ├── terraform11/ │ │ │ │ │ └── policy_statement_notaction.tf │ │ │ │ ├── terraform12/ │ │ │ │ │ └── policy_statement_notaction.tf │ │ │ │ └── test.yml │ │ │ ├── topic_policy_statement_notprincipal/ │ │ │ │ ├── rule.yml │ │ │ │ └── tests/ │ │ │ │ ├── terraform11/ │ │ │ │ │ └── policy_statement_notprincipal.tf │ │ │ │ ├── terraform12/ │ │ │ │ │ └── policy_statement_notprincipal.tf │ │ │ │ └── test.yml │ │ │ └── topic_policy_statement_principal_wildcard-copy/ │ │ │ ├── rule.yml │ │ │ └── tests/ │ │ │ ├── terraform11/ │ │ │ │ └── policy_statement_principal_wildcard-copy.tf │ │ │ ├── terraform12/ │ │ │ │ └── policy_statement_principal_wildcard-copy.tf │ │ │ └── test.yml │ │ ├── sqs/ │ │ │ ├── shared/ │ │ │ │ └── wildcard_principal/ │ │ │ │ ├── rule.yml │ │ │ │ └── tests/ │ │ │ │ ├── terraform12/ │ │ │ │ │ ├── sqs_queue_policy_wildcard_principal.tf │ │ │ │ │ └── sqs_queue_wildcard_principal.tf │ │ │ │ └── test.yml │ │ │ ├── sqs_queue/ │ │ │ │ └── encryption/ │ │ │ │ ├── rule.yml │ │ │ │ └── tests/ │ │ │ │ ├── terraform11/ │ │ │ │ │ └── encryption.tf │ │ │ │ ├── terraform12/ │ │ │ │ │ └── encryption.tf │ │ │ │ └── test.yml │ │ │ └── sqs_queue_policy/ │ │ │ ├── policy_statement_action_wildcard/ │ │ │ │ ├── rule.yml │ │ │ │ └── tests/ │ │ │ │ ├── terraform11/ │ │ │ │ │ └── policy_statement_action_wildcard.tf │ │ │ │ ├── terraform12/ │ │ │ │ │ └── policy_statement_action_wildcard.tf │ │ │ │ └── test.yml │ │ │ ├── policy_statement_notaction/ │ │ │ │ ├── rule.yml │ │ │ │ └── tests/ │ │ │ │ ├── terraform11/ │ │ │ │ │ └── policy_statement_notaction.tf │ │ │ │ ├── terraform12/ │ │ │ │ │ └── policy_statement_notaction.tf │ │ │ │ └── test.yml │ │ │ ├── policy_statement_notprincipal/ │ │ │ │ ├── rule.yml │ │ │ │ └── tests/ │ │ │ │ ├── terraform11/ │ │ │ │ │ └── policy_statement_notprincipal.tf │ │ │ │ ├── terraform12/ │ │ │ │ │ └── policy_statement_notprincipal.tf │ │ │ │ └── test.yml │ │ │ ├── policy_statement_principal_wildcard/ │ │ │ │ ├── rule.yml │ │ │ │ └── tests/ │ │ │ │ ├── terraform11/ │ │ │ │ │ └── policy_statement_principal_wildcard.tf │ │ │ │ ├── terraform12/ │ │ │ │ │ └── policy_statement_principal_wildcard.tf │ │ │ │ └── test.yml │ │ │ └── policy_version/ │ │ │ ├── rule.yml │ │ │ └── tests/ │ │ │ ├── terraform11/ │ │ │ │ └── policy_version.tf │ │ │ ├── terraform12/ │ │ │ │ └── policy_version.tf │ │ │ └── test.yml │ │ ├── vpc/ │ │ │ ├── security_group/ │ │ │ │ ├── egress_all_protocols/ │ │ │ │ │ ├── rule.yml │ │ │ │ │ └── tests/ │ │ │ │ │ ├── terraform11/ │ │ │ │ │ │ └── egress_all_protocols.tf │ │ │ │ │ ├── terraform12/ │ │ │ │ │ │ └── egress_all_protocols.tf │ │ │ │ │ └── test.yml │ │ │ │ ├── egress_port_range/ │ │ │ │ │ ├── rule.yml │ │ │ │ │ └── tests/ │ │ │ │ │ ├── terraform11/ │ │ │ │ │ │ └── egress_port_range.tf │ │ │ │ │ ├── terraform12/ │ │ │ │ │ │ └── egress_port_range.tf │ │ │ │ │ └── test.yml │ │ │ │ ├── ingress_all_protocols/ │ │ │ │ │ ├── rule.yml │ │ │ │ │ └── tests/ │ │ │ │ │ ├── terraform11/ │ │ │ │ │ │ └── ingress_all_protocols.tf │ │ │ │ │ ├── terraform12/ │ │ │ │ │ │ └── ingress_all_protocols.tf │ │ │ │ │ └── test.yml │ │ │ │ ├── ingress_port_range/ │ │ │ │ │ ├── rule.yml │ │ │ │ │ └── tests/ │ │ │ │ │ ├── terraform11/ │ │ │ │ │ │ └── ingress_port_range.tf │ │ │ │ │ ├── terraform12/ │ │ │ │ │ │ └── ingress_port_range.tf │ │ │ │ │ └── test.yml │ │ │ │ ├── missing_egress/ │ │ │ │ │ ├── rule.yml │ │ │ │ │ └── tests/ │ │ │ │ │ ├── terraform11/ │ │ │ │ │ │ └── missing_egress.tf │ │ │ │ │ ├── terraform12/ │ │ │ │ │ │ └── missing_egress.tf │ │ │ │ │ └── test.yml │ │ │ │ ├── non_32_ingress/ │ │ │ │ │ ├── rule.yml │ │ │ │ │ └── tests/ │ │ │ │ │ ├── terraform11/ │ │ │ │ │ │ └── non_32_ingress.tf │ │ │ │ │ ├── terraform12/ │ │ │ │ │ │ └── non_32_ingress.tf │ │ │ │ │ └── test.yml │ │ │ │ ├── rdp_world_ingress/ │ │ │ │ │ ├── rule.yml │ │ │ │ │ └── tests/ │ │ │ │ │ ├── terraform11/ │ │ │ │ │ │ └── rdp_world_ingress.tf │ │ │ │ │ ├── terraform12/ │ │ │ │ │ │ └── rdp_world_ingress.tf │ │ │ │ │ └── test.yml │ │ │ │ ├── ssh_world_ingress/ │ │ │ │ │ ├── rule.yml │ │ │ │ │ └── tests/ │ │ │ │ │ ├── terraform11/ │ │ │ │ │ │ └── ssh_world_ingress.tf │ │ │ │ │ ├── terraform12/ │ │ │ │ │ │ └── ssh_world_ingress.tf │ │ │ │ │ └── test.yml │ │ │ │ ├── world_egress/ │ │ │ │ │ ├── rule.yml │ │ │ │ │ └── tests/ │ │ │ │ │ ├── terraform11/ │ │ │ │ │ │ └── world_egress.tf │ │ │ │ │ ├── terraform12/ │ │ │ │ │ │ └── world_egress.tf │ │ │ │ │ └── test.yml │ │ │ │ └── world_ingress/ │ │ │ │ ├── rule.yml │ │ │ │ └── tests/ │ │ │ │ ├── terraform11/ │ │ │ │ │ └── world_ingress.tf │ │ │ │ ├── terraform12/ │ │ │ │ │ └── world_ingress.tf │ │ │ │ └── test.yml │ │ │ └── subnet/ │ │ │ └── map_public_ip_on_launch/ │ │ │ ├── rule.yml │ │ │ └── tests/ │ │ │ ├── terraform11/ │ │ │ │ └── map_public_ip_on_launch.tf │ │ │ ├── terraform12/ │ │ │ │ └── map_public_ip_on_launch.tf │ │ │ └── test.yml │ │ └── waf/ │ │ └── waf_web_acl/ │ │ └── default_action_type/ │ │ ├── rule.yml │ │ └── tests/ │ │ ├── terraform11/ │ │ │ └── default_action_type.tf │ │ ├── terraform12/ │ │ │ └── default_action_type.tf │ │ └── test.yml │ ├── builtin_test.go │ ├── options.go │ ├── options_test.go │ ├── report_writer.go │ ├── report_writer_test.go │ ├── terraform_test.go │ └── testdata/ │ ├── builtin/ │ │ └── terraform12/ │ │ └── test.tf │ ├── dirtest/ │ │ ├── a.yml │ │ └── b.yml │ ├── exclude-list │ ├── profile-exceptions.yml │ ├── profile.yml │ ├── smoketest_exceptions.tf │ ├── smoketest_tf11.tf │ ├── smoketest_tf12.tf │ ├── syntax-errors.yml │ └── terraform.yml ├── docs/ │ ├── README.md │ ├── conditions.md │ ├── coverpage.md │ ├── css/ │ │ └── style.css │ ├── design.md │ ├── development.md │ ├── example-rules.md │ ├── faq.md │ ├── github_workflow.md │ ├── index.html │ ├── install.md │ ├── operations.md │ ├── output.md │ ├── profiles.md │ ├── rule_development.md │ ├── rules.md │ ├── running.md │ ├── sidebar.md │ ├── terraform.md │ ├── tests.md │ ├── value_from.md │ └── yaml.md ├── example-files/ │ ├── config/ │ │ ├── cloudfront.tf │ │ ├── elb.tf │ │ ├── generic.config │ │ ├── iam.tf │ │ ├── my-pod.yml │ │ ├── network-policy-1.yml │ │ ├── network-policy-2.yml │ │ ├── no-containers.yml │ │ ├── not-a-pod.yml │ │ ├── pod-nginx.yml │ │ ├── pod-redis.yml │ │ ├── policy.yml │ │ ├── provider.tf │ │ ├── s3-bucket-policy.tf │ │ ├── s3-encryption.tf │ │ ├── s3.tf │ │ ├── search-debug.tf │ │ ├── security_group.tf │ │ ├── service-account.yml │ │ ├── sns.tf │ │ ├── sqs.tf │ │ ├── terraform.tf │ │ ├── variables.tf │ │ ├── volumes.tf │ │ └── web-and-helper.yml │ ├── demo-resources/ │ │ └── s3-bucket.tf │ └── rules/ │ ├── alias.yml │ ├── generic-json.yml │ ├── generic-yaml.yml │ ├── iam-policies.yml │ ├── iam-restricted.yml │ ├── kubernetes.yml │ ├── lint-rules-with-error.yml │ ├── no-iam-actions.yml │ ├── s3-encryption.yml │ ├── terraform-more.yml │ ├── terraform.yml │ └── variables.tf ├── go.mod ├── go.sum └── linter/ ├── common.go ├── common_test.go ├── csv_resource_loader.go ├── csv_resource_loader_test.go ├── file_linter.go ├── file_linter_test.go ├── helpers_test.go ├── json_resource_loader.go ├── json_resource_loader_test.go ├── kubernetes.go ├── kubernetes_test.go ├── linter.go ├── linter_test.go ├── resource_linter.go ├── resource_linter_test.go ├── rules_resource_loader.go ├── rules_resource_loader_test.go ├── schema.go ├── terraform.go ├── terraform_interpolate.go ├── terraform_interpolate_test.go ├── terraform_test.go ├── terraform_v12.go ├── terraform_v12_test.go ├── testdata/ │ ├── data/ │ │ ├── bucket_name │ │ ├── multi_line_content │ │ ├── reference_relative.tf │ │ ├── template_file_example_basic │ │ ├── template_file_example_conditional │ │ └── template_file_example_for_loop │ ├── resources/ │ │ ├── batch_privileged.tf │ │ ├── cloudfront_access_logs.tf │ │ ├── defines_variables.tf │ │ ├── dms_endpoint_encryption.tf │ │ ├── dynamic_block.tf │ │ ├── ec2_public.tf │ │ ├── elasticache_encryption_rest.tf │ │ ├── elasticache_encryption_transit.tf │ │ ├── embedded_yaml.yml │ │ ├── empty_document.yml │ │ ├── emr_cluster_logs.tf │ │ ├── explicit_chars.tf │ │ ├── generic.config │ │ ├── invalid.yml │ │ ├── kinesis_kms_stream.tf │ │ ├── kms_key_rotation.tf │ │ ├── missing_kind.yml │ │ ├── multi_level.tf │ │ ├── multiple_blocks_same.tf │ │ ├── multiple_pods.yml │ │ ├── neptune_db_encryption.tf │ │ ├── nullable_value.tf │ │ ├── pod.yml │ │ ├── policy_with_expression.tf │ │ ├── policy_with_variables.tf │ │ ├── rds_publicly_available.tf │ │ ├── reference_file.tf │ │ ├── reference_file_multi_line.tf │ │ ├── reference_variables.tf │ │ ├── sagemaker_endpoint_encryption.tf │ │ ├── sagemaker_notebook_encryption.tf │ │ ├── tagging.tf │ │ ├── template_file_function_basic.tf │ │ ├── template_file_function_conditional.tf │ │ ├── template_file_function_for_loop.tf │ │ ├── terraform_data.tf │ │ ├── terraform_inner_objects.tf │ │ ├── terraform_instance.tf │ │ ├── terraform_module.tf │ │ ├── terraform_policy.tf │ │ ├── terraform_policy_empty.tf │ │ ├── terraform_policy_invalid_json.tf │ │ ├── terraform_provider.tf │ │ ├── terraform_syntax_error.tf │ │ ├── tf12_for_loop.tf │ │ ├── tf12_resource_dependency.tf │ │ ├── users.csv │ │ ├── users.json │ │ ├── uses_local_variables.tf │ │ ├── uses_tf12_variables.tf │ │ └── uses_variables.tf │ └── rules/ │ ├── aggregate.yml │ ├── bad-format.yml │ ├── batch_definition.yml │ ├── cloudfront_access_logs.yml │ ├── dms_endpoint_encryption.yml │ ├── dynamic_block.yml │ ├── ec2_public.yml │ ├── elasticache_encryption_rest.yml │ ├── elasticache_encryption_transit.yml │ ├── emr_cluster_logs.yml │ ├── exclude_resource.yml │ ├── explicit_chars.yml │ ├── generic-csv.yml │ ├── generic-json.yml │ ├── generic-yaml.yml │ ├── kinesis_kms_stream.yml │ ├── kms_key_rotation.yml │ ├── kubernetes.yml │ ├── neptune_db_encryption.yml │ ├── nullable_value.yml │ ├── policy_variable.yml │ ├── rds_publicly_available.yml │ ├── rules.yml │ ├── sagemaker_endpoint_encryption.yml │ ├── sagemaker_notebook_encryption.yml │ ├── tagging.yml │ ├── terraform_bucket.yml │ ├── terraform_data.yml │ ├── terraform_instance.yml │ ├── terraform_module.yml │ ├── terraform_policy.yml │ ├── terraform_provider.yml │ ├── terraform_v12_variables.yml │ ├── tf12_for_loop.yml │ └── unknown.yml ├── tf12parser/ │ ├── README.md │ ├── attribute.go │ ├── block.go │ ├── parser.go │ ├── parser_test.go │ ├── range.go │ └── schema.go ├── yaml_resource_loader.go └── yaml_resource_loader_test.go