Package: cdklabs.cdk-validator-cfnguard
CDK CFN Guard Validator Plugin---The APIs of higher level constructs in this module are experimental and under active development.
They are subject to non-backward compatible changes or removal in any future version. These are
not subject to theSemantic Versioningmodel and breaking changes will be
announced in the release notes. This means that while you may use them, you may need to update
your source code when upgrading to a newer version of this package.InstallingTypeScript/JavaScriptnpminstall@cdklabs/cdk-validator-cfnguardPythonpipinstallcdklabs.cdk-validator-cfnguardJava//addthistoyourpom.xml<dependency><groupId>io.github.cdklabs</groupId><artifactId>cdk-validator-cfnguard</artifactId><version>0.0.0</version>//replacewithversion</dependency>.NETdotnetaddpackageCdklabs.CdkValidatorCfnGuard--versionX.X.XUsageTo use this plugin in your CDK application add it to the CDK App.App(policy_validation_beta1=[CfnGuardValidator()])By default theCfnGuardValidatorplugin comes with theControl Tower
proactive
controlsenabled. In order to disable these rules you can use thecontrolTowerRulesEnabled: falseproperty.CfnGuardValidator(control_tower_rules_enabled=False)It is also possible to disable individual rules.CfnGuardValidator(disabled_rules=["ct-s3-pr-1"])Additional rulesTo provide additional rules to the plugin, provide a list of local
file or directory paths.CfnGuardValidator(rules=["path/to/local-rules-directory","path/to/s3/local-rules/my-rule.guard"])If the path provided is a directory then the directory must only
contain guard rule files, and all rules within the directory will be used.Using the bundled Control Tower proactive controls in CDKThe bundled Control Tower proactive controls use CloudFormation Guard
policies that are also used in managed controls from the Control Tower
service. You can use these CDK bundled controls without having a Control
Tower environment in AWS, but there are many benefits to using the two together.When you enable Control Tower proactive controls in your Control Tower environment,
the controls can stop the deployment of non-compliant resources deployed via
CloudFormation. For more information about managed proactive controls and how they work,
see theControl Tower documentation.These CDK bundled controls and managed Control Tower proactive controls are best used together.
In this scenario you can configure this validation plugin with the same proactive controls that
are active in your Control Tower cloud environment. You can then quickly gain confidence
that your CDK application will pass the Control Tower controls by running cdk synth locally
or in a pipeline as described above.Regardless of whether you or your organization use Control Tower, however, you should
understand the following things about these bundled controls when run locally using this plugin:These CloudFormation guard policies accept a limited subset of CloudFormation syntax
for the properties they evaluate. For instance, a property called EncryptionEnabled may
pass if it is specified with the literal value true, but it may fail if it is specified with
a reference to a CloudFormation stack parameter instead. Similarly, if a rule checks for a string
value, it may fail for Fn::Join objects. If you discover that a rule can be bypassed with a
particular configuration of a resource, please file an issue.Some rules may check references to other resources, but this reference checking is limited.
For instance, a rule may require that an access logging bucket is specified for each S3 bucket.
In this case, the rule can check whether you have passed a reference to a bucket in the same
template, but it cannot verify that a hardcoded bucket name like "examplebucket" actually refers
to a real bucket or a bucket you own.You can add a layer of security protection by enabling the same proactive controls in your Control Tower
cloud environment. There are different considerations for using these controls since they operate in a
different way. For more information, see theControl Tower proactive controls documentation.If you do not yet have a Control Tower environment, seeWhat is AWS Control Tower?.Bundled Control Tower RulesIDNameEvaluated Resource TypesCT.ACM.PR.1Require an AWS Private CA certificate to have a single domain nameAWS::CertificateManager::CertificateCT.APIGATEWAY.PR.1Require an Amazon API Gateway REST and WebSocket API to have logging activatedAWS::ApiGateway::StageCT.APIGATEWAY.PR.2Require an Amazon API Gateway REST API stage to have AWS X-Ray tracing activatedAWS::ApiGateway::StageCT.APIGATEWAY.PR.3Require that an Amazon API Gateway REST API stage has encryption at rest configured for cache dataAWS::ApiGateway::StageCT.APIGATEWAY.PR.4Require an Amazon API Gateway V2 stage to have access logging activatedAWS::ApiGatewayV2::StageCT.APIGATEWAY.PR.5Require Amazon API Gateway V2 Websocket and HTTP routes to specify an authorization typeAWS::ApiGatewayV2::RouteAWS::ApiGatewayV2::ApiGatewayManagedOverridesCT.APIGATEWAY.PR.6Require an Amazon API Gateway REST domain to use a security policy that specifies a minimum TLS protocol version of TLSv1.2AWS::ApiGateway::DomainNameCT.APPSYNC.PR.1Require an AWS AppSync GraphQL API to have logging enabledAWS::AppSync::GraphQLApiCT.APPSYNC.PR.2Require an AWS AppSync GraphQL API to be configured with private visibilityAWS::AppSync::GraphQLApiCT.APPSYNC.PR.3Require that an AWS AppSync GraphQL API is not authenticated with API keysAWS::AppSync::GraphQLApiCT.APPSYNC.PR.4Require an AWS AppSync GraphQL API cache to have encryption in transit enabled.AWS::AppSync::ApiCacheCT.APPSYNC.PR.5Require an AWS AppSync GraphQL API cache to have encryption at rest enabled.AWS::AppSync::ApiCacheCT.ATHENA.PR.1Require an Amazon Athena workgroup to encrypt Athena query results at restAWS::Athena::WorkGroupCT.ATHENA.PR.2Require an Amazon Athena workgroup to encrypt Athena query results at rest with an AWS Key Management Service (KMS) keyAWS::Athena::WorkGroupCT.AUTOSCALING.PR.1Require an Amazon EC2 Auto Scaling group to have multiple Availability ZonesAWS::AutoScaling::AutoScalingGroupCT.AUTOSCALING.PR.2Require an Amazon EC2 Auto Scaling group launch configuration to configure Amazon EC2 instances for IMDSv2AWS::AutoScaling::LaunchConfigurationCT.AUTOSCALING.PR.3Require an Amazon EC2 Auto Scaling launch configuration to have a single-hop metadata response limitAWS::AutoScaling::LaunchConfigurationCT.AUTOSCALING.PR.4Require an Amazon EC2 Auto Scaling group associated with an AWS Elastic Load Balancer (ELB) to have ELB health checks activatedAWS::AutoScaling::AutoScalingGroupCT.AUTOSCALING.PR.5Require that an Amazon EC2 Auto Scaling group launch configuration does not have Amazon EC2 instances with public IP addressesAWS::AutoScaling::LaunchConfigurationCT.AUTOSCALING.PR.6Require any Amazon EC2 Auto Scaling groups to use multiple instance typesAWS::AutoScaling::AutoScalingGroupCT.AUTOSCALING.PR.8Require an Amazon EC2 Auto Scaling group to have EC2 launch templates configuredAWS::AutoScaling::AutoScalingGroupCT.AUTOSCALING.PR.9Require an Amazon EBS volume configured through an Amazon EC2 Auto Scaling launch configuration to encrypt data at restAWS::AutoScaling::LaunchConfigurationCT.AUTOSCALING.PR.10Require an Amazon EC2 Auto Scaling group to use only AWS Nitro instance types when overriding a launch templateAWS::AutoScaling::AutoScalingGroupCT.AUTOSCALING.PR.11Require only AWS Nitro instance types that support network traffic encryption between instances to be added to an Amazon EC2 Auto Scaling group, when overriding a launch templateAWS::AutoScaling::AutoScalingGroupCT.CLOUDFRONT.PR.1Require an Amazon CloudFront distribution to have a default root object configuredAWS::CloudFront::DistributionCT.CLOUDFRONT.PR.3Require an Amazon CloudFront distribution to have encryption in transit configuredAWS::CloudFront::DistributionCT.CLOUDFRONT.PR.4Require an Amazon CloudFront distribution to have origin failover configuredAWS::CloudFront::DistributionCT.CLOUDFRONT.PR.5Require any Amazon CloudFront distribution to have logging enabledAWS::CloudFront::DistributionCT.CLOUDFRONT.PR.6Require an Amazon CloudFront distribution to use custom SSL/TLS certificatesAWS::CloudFront::DistributionCT.CLOUDFRONT.PR.7Require an Amazon CloudFront distribution to use SNI to serve HTTPS requestsAWS::CloudFront::DistributionCT.CLOUDFRONT.PR.8Require an Amazon CloudFront distribution to encrypt traffic to custom originsAWS::CloudFront::DistributionCT.CLOUDFRONT.PR.9Require an Amazon CloudFront distribution to have a security policy of TLSv1.2 as a minimumAWS::CloudFront::DistributionCT.CLOUDFRONT.PR.10Require any Amazon CloudFront distributions with Amazon S3 backed origins to have origin access control configuredAWS::CloudFront::DistributionCT.CLOUDFRONT.PR.11Require an Amazon CloudFront distribution to use updated SSL protocols between edge locations and custom originsAWS::CloudFront::DistributionCT.CLOUDTRAIL.PR.1Require an AWS CloudTrail trail to have encryption at rest activatedAWS::CloudTrail::TrailCT.CLOUDTRAIL.PR.2Require an AWS CloudTrail trail to have log file validation activatedAWS::CloudTrail::TrailCT.CLOUDTRAIL.PR.3Require an AWS CloudTrail trail to have an Amazon CloudWatch log group configurationAWS::CloudTrail::TrailCT.CLOUDTRAIL.PR.4Require an AWS CloudTrail Lake event data store to enable encryption at rest with an AWS KMS keyAWS::CloudTrail::EventDataStoreCT.CLOUDWATCH.PR.1Require an Amazon CloudWatch alarm to have an action configured for the alarm stateAWS::CloudWatch::AlarmCT.CLOUDWATCH.PR.2Require an Amazon CloudWatch log group to be retained for at least one yearAWS::Logs::LogGroupCT.CLOUDWATCH.PR.3Require an Amazon CloudWatch log group to be encrypted at rest with an AWS KMS keyAWS::Logs::LogGroupCT.CLOUDWATCH.PR.4Require an Amazon CloudWatch alarm to have actions activatedAWS::CloudWatch::AlarmCT.CODEBUILD.PR.1Require OAuth on GitHub or Bitbucket source repository URLs for AWS CodeBuild projectsAWS::CodeBuild::ProjectCT.CODEBUILD.PR.2Require any AWS CodeBuild project environment variable to encrypt credentials in environment variablesAWS::CodeBuild::ProjectCT.CODEBUILD.PR.3Require any AWS CodeBuild project environment to have logging configuredAWS::CodeBuild::ProjectCT.CODEBUILD.PR.4Require any AWS CodeBuild project to deactivate privileged mode when runningAWS::CodeBuild::ProjectCT.CODEBUILD.PR.5Require encryption on all AWS CodeBuild project artifactsAWS::CodeBuild::ProjectCT.CODEBUILD.PR.6Require encryption on all Amazon S3 logs for AWS CodeBuild projectsAWS::CodeBuild::ProjectCT.DAX.PR.1Require encryption at rest for all Amazon DynamoDB Accelerator (DAX) clustersAWS::DAX::ClusterCT.DAX.PR.2Require an Amazon DAX cluster to deploy nodes to at least three Availability ZonesAWS::DAX::ClusterCT.DAX.PR.3Require an Amazon DAX cluster to encrypt data in transit with Transport Layer Security (TLS)AWS::DAX::ClusterCT.DMS.PR.1Require that a public AWS DMS replication instance is not publicAWS::DMS::ReplicationInstanceCT.DMS.PR.2Require an AWS Database Migration Service (DMS) Endpoint to encrypt connections for source and target endpointsAWS::DMS::EndpointCT.DOCUMENTDB.PR.1Require an Amazon DocumentDB cluster to be encrypted at restAWS::DocDB::DBClusterCT.DOCUMENTDB.PR.2Require an Amazon DocumentDB cluster to have a backup retention period greater than or equal to seven daysAWS::DocDB::DBClusterCT.DYNAMODB.PR.1Require that point-in-time recovery for an Amazon DynamoDB table is activatedAWS::DynamoDB::TableCT.DYNAMODB.PR.2Require an Amazon DynamoDB table to be encrypted at rest using an AWS KMS keyAWS::DynamoDB::TableCT.EC2.PR.1Require an Amazon EC2 launch template to have IMDSv2 configuredAWS::EC2::LaunchTemplateCT.EC2.PR.2Require that Amazon EC2 launch templates restrict the token hop limit to a maximum of oneAWS::EC2::LaunchTemplateCT.EC2.PR.3Require that any Amazon EC2 security group rule does not use the source IP range 0.0.0.0/0 or ::/0 for ports other than 80 and 443AWS::EC2::SecurityGroupAWS::EC2::SecurityGroupIngressCT.EC2.PR.4Require that any Amazon EC2 security group rule does not use the source IP range 0.0.0.0/0 or ::/0 for specific high-risk portsAWS::EC2::SecurityGroupAWS::EC2::SecurityGroupIngressCT.EC2.PR.5Require any Amazon EC2 network ACL to prevent ingress from 0.0.0.0/0 to port 22 or port 3389AWS::EC2::NetworkAclEntryCT.EC2.PR.6Require that Amazon EC2 transit gateways refuse automatic Amazon VPC attachment requestsAWS::EC2::TransitGatewayCT.EC2.PR.7Require an Amazon EBS volume resource to be encrypted at rest when defined by means of the AWS::EC2::Instance BlockDeviceMappings property or AWS::EC2::Volume resource typeAWS::EC2::InstanceAWS::EC2::VolumeCT.EC2.PR.8Require an Amazon EC2 instance to set AssociatePublicIpAddress to false on a new network interface created by means of the NetworkInterfaces property in the AWS::EC2::Instance resourceAWS::EC2::InstanceCT.EC2.PR.9Require any Amazon EC2 launch template not to auto-assign public IP addresses to network interfacesAWS::EC2::LaunchTemplateCT.EC2.PR.10Require Amazon EC2 launch templates to have Amazon CloudWatch detailed monitoring activatedAWS::EC2::LaunchTemplateCT.EC2.PR.11Require that an Amazon EC2 subnet does not automatically assign public IP addressesAWS::EC2::SubnetCT.EC2.PR.12Require an Amazon EC2 instance to specify at most one network interface by means of the NetworkInterfaces property in the AWS::EC2::Instance resourceAWS::EC2::InstanceCT.EC2.PR.13Require an Amazon EC2 instance to have detailed monitoring enabledAWS::EC2::InstanceCT.EC2.PR.14Require an Amazon EBS volume configured through an Amazon EC2 launch template to encrypt data at restAWS::EC2::LaunchTemplateCT.EC2.PR.15Require an Amazon EC2 instance to use an AWS Nitro instance type when creating from the 'AWS::EC2::LaunchTemplate' resource typeAWS::EC2::LaunchTemplateCT.EC2.PR.16Require an Amazon EC2 instance to use an AWS Nitro instance type when created using the 'AWS::EC2::Instance' resource typeAWS::EC2::InstanceCT.EC2.PR.17Require an Amazon EC2 dedicated host to use an AWS Nitro instance typeAWS::EC2::HostCT.EC2.PR.18Require an Amazon EC2 fleet to override only those launch templates with AWS Nitro instance typesAWS::EC2::EC2FleetCT.EC2.PR.19Require an EC2 instance to use an AWS Nitro instance type that supports encryption in-transit between instances when created using the AWS::EC2::Instance resource typeAWS::EC2::InstanceCT.EC2.PR.20Require an Amazon EC2 fleet to override only those launch templates with AWS Nitro instance types that support encryption in transit between instancesAWS::EC2::EC2FleetCT.ECR.PR.1Require Amazon ECR repositories to have a lifecycle policy configuredAWS::ECR::RepositoryCT.ECR.PR.2Require Amazon ECR private repositories to have image scanning enabledAWS::ECR::RepositoryCT.ECR.PR.3Require Amazon ECR private repositories to have tag immutability enabledAWS::ECR::RepositoryCT.ECS.PR.1Require AWS ECS Fargate Services to run on the latest Fargate platform versionAWS::ECS::ServiceCT.ECS.PR.2Require any Amazon ECS cluster to have container insights activatedAWS::ECS::ClusterCT.ECS.PR.3Require any Amazon ECS task definition to specify a user that is not the rootAWS::ECS::TaskDefinitionCT.ECS.PR.4Require Amazon ECS tasks to use 'awsvpc' networking modeAWS::ECS::TaskDefinitionCT.ECS.PR.5Require an active Amazon ECS task definition to have a logging configurationAWS::ECS::TaskDefinitionCT.ECS.PR.6Require Amazon ECS containers to allow read-only access to the root filesystemAWS::ECS::TaskDefinitionCT.ECS.PR.7Require an Amazon ECS task definition to have a specific memory usage limitAWS::ECS::TaskDefinitionCT.ECS.PR.8Require Amazon ECS task definitions to have secure networking modes and user definitionsAWS::ECS::TaskDefinitionCT.ECS.PR.9Require Amazon ECS services not to assign public IP addresses automaticallyAWS::ECS::ServiceCT.ECS.PR.10Require that Amazon ECS task definitions do not share the host's process namespaceAWS::ECS::TaskDefinitionCT.ECS.PR.11Require an Amazon ECS container to run as non-privilegedAWS::ECS::TaskDefinitionCT.ECS.PR.12Require that Amazon ECS task definitions do not pass secrets as container environment variablesAWS::ECS::TaskDefinitionCT.EKS.PR.1Require an Amazon EKS cluster to be configured with public access disabled to the cluster Kubernetes API server endpoint.AWS::EKS::ClusterCT.EKS.PR.2Require an Amazon EKS cluster to be configured with secret encryption using AWS Key Management Service (KMS) keysAWS::EKS::ClusterCT.ELASTICACHE.PR.1Require an Amazon ElastiCache for Redis cluster to have automatic backups activatedAWS::ElastiCache::CacheClusterCT.ELASTICACHE.PR.2Require an Amazon ElastiCache for Redis cluster to have automatic minor version upgrades activatedAWS::ElastiCache::CacheClusterCT.ELASTICACHE.PR.3Require an Amazon ElastiCache for Redis replication group to have automatic failover activatedAWS::ElastiCache::ReplicationGroupCT.ELASTICACHE.PR.4Require an Amazon ElastiCache replication group to have encryption at rest activatedAWS::ElastiCache::ReplicationGroupCT.ELASTICACHE.PR.5Require an Amazon ElastiCache for Redis replication group to have encryption in transit activatedAWS::ElastiCache::ReplicationGroupCT.ELASTICACHE.PR.6Require an Amazon ElastiCache cache cluster to use a custom subnet groupAWS::ElastiCache::CacheClusterCT.ELASTICACHE.PR.7Require an Amazon ElastiCache replication group of earlier Redis versions to have Redis AUTH activatedAWS::ElastiCache::ReplicationGroupCT.ELASTICACHE.PR.8Require an Amazon ElastiCache replication group of later Redis versions to have RBAC authentication activatedAWS::ElastiCache::ReplicationGroupCT.ELASTICBEANSTALK.PR.1Require AWS Elastic Beanstalk environments to have enhanced health reporting enabledAWS::ElasticBeanstalk::EnvironmentAWS::ElasticBeanstalk::ConfigurationTemplateCT.ELASTICBEANSTALK.PR.2Require an AWS Elastic Beanstalk environment to have managed platform updates configuredAWS::ElasticBeanstalk::EnvironmentAWS::ElasticBeanstalk::ConfigurationTemplateCT.ELASTICBEANSTALK.PR.3Require an AWS Elastic Beanstalk environment to have a logging configurationAWS::ElasticBeanstalk::EnvironmentAWS::ElasticBeanstalk::ConfigurationTemplateCT.ELASTICFILESYSYSTEM.PR.1Require an Amazon EFS file system to encrypt file data at rest using AWS KMSAWS::EFS::FileSystemCT.ELASTICFILESYSYSTEM.PR.2Require an Amazon EFS volume to have an automated backup planAWS::EFS::FileSystemCT.ELASTICFILESYSYSTEM.PR.3Require Amazon EFS access points to have a root directoryAWS::EFS::AccessPointCT.ELASTICFILESYSYSTEM.PR.4Require Amazon EFS access points to enforce a user identityAWS::EFS::AccessPointCT.ELASTICLOADBALANCING.PR.1Require any application load balancer listener default actions to redirect all HTTP requests to HTTPSAWS::ElasticLoadBalancingV2::ListenerCT.ELASTICLOADBALANCING.PR.2Require any Amazon ELB application or network load balancer to have an AWS Certificate Manager certificateAWS::ElasticLoadBalancingV2::ListenerAWS::ElasticLoadBalancingV2::ListenerCertificateCT.ELASTICLOADBALANCING.PR.3Require any application load balancer to have defensive or strictest desync mitigation mode activatedAWS::ElasticLoadBalancingV2::LoadBalancerCT.ELASTICLOADBALANCING.PR.4Require that any application load balancer must be configured to drop HTTP headersAWS::ElasticLoadBalancingV2::LoadBalancerCT.ELASTICLOADBALANCING.PR.5Require that application load balancer deletion protection is activatedAWS::ElasticLoadBalancingV2::LoadBalancerCT.ELASTICLOADBALANCING.PR.6Require that application and network load balancer access logging is activatedAWS::ElasticLoadBalancingV2::LoadBalancerCT.ELASTICLOADBALANCING.PR.7Require any classic load balancer to have multiple Availability Zones configuredAWS::ElasticLoadBalancing::LoadBalancerCT.ELASTICLOADBALANCING.PR.8Require any classic load balancer SSL/HTTPS listener to have a certificate provided by AWS Certificate ManagerAWS::ElasticLoadBalancing::LoadBalancerCT.ELASTICLOADBALANCING.PR.9Require that an AWS ELB application or classic load balancer listener is configured with HTTPS or TLS terminationAWS::ElasticLoadBalancing::LoadBalancerCT.ELASTICLOADBALANCING.PR.10Require an ELB application or classic load balancer to have logging activatedAWS::ElasticLoadBalancing::LoadBalancerCT.ELASTICLOADBALANCING.PR.11Require any ELB classic load balancer to have connection draining activatedAWS::ElasticLoadBalancing::LoadBalancerCT.ELASTICLOADBALANCING.PR.12Require any ELB classic load balancer SSL/HTTPS listener to have a predefined security policy with a strong configurationAWS::ElasticLoadBalancing::LoadBalancerCT.ELASTICLOADBALANCING.PR.13Require any ELB classic load balancer to have cross-zone load balancing activatedAWS::ElasticLoadBalancing::LoadBalancerCT.ELASTICLOADBALANCING.PR.14Require a Network Load Balancer to have cross-zone load balancing activatedAWS::ElasticLoadBalancingV2::LoadBalancerCT.ELASTICLOADBALANCING.PR.15Require that an Elastic Load Balancing v2 target group does not explicitly disable cross-zone load balancingAWS::ElasticLoadBalancingV2::TargetGroupCT.EMR.PR.1Require that an Amazon Elastic MapReduce (EMR) security configuration is configured to encrypt data at rest in Amazon S3AWS::EMR::SecurityConfigurationCT.EMR.PR.2Require that an Amazon Elastic MapReduce (EMR) security configuration is configured to encrypt data at rest in Amazon S3 with an AWS KMS keyAWS::EMR::SecurityConfigurationCT.EMR.PR.3Require that an Amazon Elastic MapReduce (EMR) security configuration is configured with EBS volume local disk encryption using an AWS KMS keyAWS::EMR::SecurityConfigurationCT.EMR.PR.4Require that an Amazon Elastic MapReduce (EMR) security configuration is configured to encrypt data in transitAWS::EMR::SecurityConfigurationCT.GLUE.PR.1Require an AWS Glue job to have an associated security configurationAWS::Glue::JobCT.GUARDDUTY.PR.1Require an Amazon GuardDuty detector to have Amazon S3 protection activatedAWS::GuardDuty::DetectorCT.IAM.PR.1Require that an AWS Identity and Access Management (IAM) inline policy does not have a statement that includes "*" in the Action and Resource elementsAWS::IAM::PolicyAWS::IAM::RoleAWS::IAM::UserAWS::IAM::GroupCT.IAM.PR.2Require that AWS Identity and Access Management (IAM) customer-managed policies do not contain a statement that includes "*" in the Action and Resource elementsAWS::IAM::ManagedPolicyCT.IAM.PR.3Require that AWS Identity and Access Management (IAM) customer-managed policies do not have wildcard service actionsAWS::IAM::ManagedPolicyCT.IAM.PR.4Require that an AWS Identity and Access Management (IAM) user does not have an inline or managed policy attached attachedAWS::IAM::UserAWS::IAM::PolicyAWS::IAM::ManagedPolicyCT.IAM.PR.5Require that AWS Identity and Access Management (IAM) inline policies do not have wildcard service actionsAWS::IAM::PolicyAWS::IAM::RoleAWS::IAM::UserAWS::IAM::GroupCT.KINESIS.PR.1Require any Amazon Kinesis data stream to have encryption at rest configuredAWS::Kinesis::StreamCT.KMS.PR.1Require any AWS KMS key to have rotation configuredAWS::KMS::KeyCT.KMS.PR.2Require that an AWS KMS asymmetric key with RSA key material used for encryption has a key length greater than 2048 bitsAWS::KMS::KeyCT.KMS.PR.3Require an AWS KMS key policy to have a statement that limits creation of AWS KMS grants to AWS servicesAWS::KMS::KeyCT.LAMBDA.PR.2Require AWS Lambda function policies to prohibit public accessAWS::Lambda::PermissionCT.LAMBDA.PR.3Require an AWS Lambda function to be in a customer-managed Amazon Virtual Private Cloud (VPC)AWS::Lambda::FunctionCT.LAMBDA.PR.4Require an AWS Lambda layer permission to grant access to an AWS organization or specific AWS accountAWS::Lambda::LayerVersionPermissionCT.LAMBDA.PR.5Require an AWS Lambda function URL to use AWS IAM-based authenticationAWS::Lambda::UrlCT.LAMBDA.PR.6Require an AWS Lambda function URL CORS policy to restrict access to specific originsAWS::Lambda::UrlCT.MQ.PR.1Require an Amazon MQ ActiveMQ broker to use use active/standby deployment mode for high availabilityAWS::AmazonMQ::BrokerCT.MQ.PR.2Require an Amazon MQ Rabbit MQ broker to use Multi-AZ cluster mode for high availabilityAWS::AmazonMQ::BrokerCT.MSK.PR.1Require an Amazon Managed Streaming for Apache Kafka (MSK) cluster to enforce encryption in transit between cluster broker nodesAWS::MSK::ClusterCT.MSK.PR.2Require an Amazon Managed Streaming for Apache Kafka (MSK) cluster to be configured with PublicAccess disabledAWS::MSK::ClusterCT.NEPTUNE.PR.1Require an Amazon Neptune DB cluster to have AWS Identity and Access Management (IAM) database authentication enabledAWS::Neptune::DBClusterCT.NEPTUNE.PR.2Require an Amazon Neptune DB cluster to have deletion protection enabledAWS::Neptune::DBClusterCT.NEPTUNE.PR.3Require an Amazon Neptune DB cluster to have storage encryption enabledAWS::Neptune::DBClusterCT.NEPTUNE.PR.4Require an Amazon Neptune DB cluster to enable Amazon CloudWatch log export for audit logsAWS::Neptune::DBClusterCT.NEPTUNE.PR.5Require an Amazon Neptune DB cluster to set a backup retention period greater than or equal to seven daysAWS::Neptune::DBClusterCT.NETWORK-FIREWALL.PR.1Require any AWS Network Firewall firewall policy to have an associated rule groupAWS::NetworkFirewall::FirewallPolicyCT.NETWORK-FIREWALL.PR.2Require any AWS Network Firewall firewall policy to drop or forward stateless full packets by default when they do not match a ruleAWS::NetworkFirewall::FirewallPolicyCT.NETWORK-FIREWALL.PR.3Require any AWS Network Firewall firewall policy to drop or forward fragmented packets by default when they do not match a stateless ruleAWS::NetworkFirewall::FirewallPolicyCT.NETWORK-FIREWALL.PR.4Require any AWS Network Firewall rule group to contain at least one ruleAWS::NetworkFirewall::RuleGroupCT.NETWORK-FIREWALL.PR.5Require an AWS Network Firewall firewall to be deployed across multiple Availability ZonesAWS::NetworkFirewall::FirewallCT.OPENSEARCH.PR.1Require an Elasticsearch domain to encrypt data at restAWS::Elasticsearch::DomainCT.OPENSEARCH.PR.2Require an Elasticsearch domain to be created in a user-specified Amazon VPCAWS::Elasticsearch::DomainCT.OPENSEARCH.PR.3Require an Elasticsearch domain to encrypt data sent between nodesAWS::Elasticsearch::DomainCT.OPENSEARCH.PR.4Require an Elasticsearch domain to send error logs to Amazon CloudWatch LogsAWS::Elasticsearch::DomainCT.OPENSEARCH.PR.5Require an Elasticsearch domain to send audit logs to Amazon CloudWatch LogsAWS::Elasticsearch::DomainCT.OPENSEARCH.PR.6Require an Elasticsearch domain to have zone awareness and at least three data nodesAWS::Elasticsearch::DomainCT.OPENSEARCH.PR.7Require an Elasticsearch domain to have at least three dedicated master nodesAWS::Elasticsearch::DomainCT.OPENSEARCH.PR.8Require an Elasticsearch Service domain to use TLSv1.2AWS::Elasticsearch::DomainCT.OPENSEARCH.PR.9Require an Amazon OpenSearch Service domain to encrypt data at restAWS::OpenSearchService::DomainCT.OPENSEARCH.PR.10Require an Amazon OpenSearch Service domain to be created in a user-specified Amazon VPCAWS::OpenSearchService::DomainCT.OPENSEARCH.PR.11Require an Amazon OpenSearch Service domain to encrypt data sent between nodesAWS::OpenSearchService::DomainCT.OPENSEARCH.PR.12Require an Amazon OpenSearch Service domain to send error logs to Amazon CloudWatch LogsAWS::OpenSearchService::DomainCT.OPENSEARCH.PR.13Require an Amazon OpenSearch Service domain to send audit logs to Amazon CloudWatch LogsAWS::OpenSearchService::DomainCT.OPENSEARCH.PR.14Require an Amazon OpenSearch Service domain to have zone awareness and at least three data nodesAWS::OpenSearchService::DomainCT.OPENSEARCH.PR.15Require an Amazon OpenSearch Service domain to use fine-grained access controlAWS::OpenSearchService::DomainCT.OPENSEARCH.PR.16Require an Amazon OpenSearch Service domain to use TLSv1.2AWS::OpenSearchService::DomainCT.RDS.PR.1Require that an Amazon RDS database instance is configured with multiple Availability ZonesAWS::RDS::DBInstanceCT.RDS.PR.2Require an Amazon RDS database instance or cluster to have enhanced monitoring configuredAWS::RDS::DBInstanceCT.RDS.PR.3Require an Amazon RDS cluster to have deletion protection configuredAWS::RDS::DBClusterCT.RDS.PR.4Require an Amazon RDS database cluster to have AWS IAM database authentication configuredAWS::RDS::DBClusterCT.RDS.PR.5Require an Amazon RDS database instance to have minor version upgrades configuredAWS::RDS::DBInstanceCT.RDS.PR.6Require an Amazon RDS database cluster to have backtracking configuredAWS::RDS::DBClusterCT.RDS.PR.7Require Amazon RDS database instances to have AWS IAM authentication configuredAWS::RDS::DBInstanceCT.RDS.PR.8Require an Amazon RDS database instance to have automatic backups configuredAWS::RDS::DBInstanceCT.RDS.PR.9Require an Amazon RDS database cluster to copy tags to snapshotsAWS::RDS::DBClusterCT.RDS.PR.10Require an Amazon RDS database instance to copy tags to snapshotsAWS::RDS::DBInstanceCT.RDS.PR.11Require an Amazon RDS database instance to have a VPC configurationAWS::RDS::DBInstanceCT.RDS.PR.12Require an Amazon RDS event subscription to have critical cluster events configuredAWS::RDS::EventSubscriptionCT.RDS.PR.13Require any Amazon RDS instance to have deletion protection configuredAWS::RDS::DBInstanceCT.RDS.PR.14Require an Amazon RDS database instance to export logs to Amazon CloudWatch Logs by means of the EnableCloudwatchLogsExports propertyAWS::RDS::DBInstanceCT.RDS.PR.15Require that an Amazon RDS instance does not create DB security groupsAWS::RDS::DBInstanceAWS::RDS::DBSecurityGroupCT.RDS.PR.16Require an Amazon RDS database cluster to have encryption at rest configuredAWS::RDS::DBClusterCT.RDS.PR.17Require an Amazon RDS event notification subscription to have critical database instance events configuredAWS::RDS::EventSubscriptionCT.RDS.PR.18Require an Amazon RDS event notification subscription to have critical database parameter group events configuredAWS::RDS::EventSubscriptionCT.RDS.PR.19Require an Amazon RDS event notifications subscription to have critical database security group events configuredAWS::RDS::EventSubscriptionCT.RDS.PR.20Require an Amazon RDS database instance not to use a database engine default portAWS::RDS::DBInstanceCT.RDS.PR.21Require an Amazon RDS DB cluster to have a unique administrator usernameAWS::RDS::DBClusterCT.RDS.PR.22Require an Amazon RDS database instance to have a unique administrator usernameAWS::RDS::DBInstanceCT.RDS.PR.23Require an Amazon RDS database instance to not be publicly accessibleAWS::RDS::DBInstanceCT.RDS.PR.24Require an Amazon RDS database instance to have encryption at rest configuredAWS::RDS::DBInstanceCT.RDS.PR.25Require an Amazon RDS database cluster to export logs to Amazon CloudWatch Logs by means of the EnableCloudwatchLogsExports propertyAWS::RDS::DBClusterCT.RDS.PR.26Require an Amazon RDS DB Proxy to require Transport Layer Security (TLS) connectionsAWS::RDS::DBProxyCT.RDS.PR.27Require an Amazon RDS DB cluster parameter group to require Transport Layer Security (TLS) connections for supported engine typesAWS::RDS::DBClusterParameterGroupCT.RDS.PR.28Require an Amazon RDS DB parameter group to require Transport Layer Security (TLS) connections for supported engine typesAWS::RDS::DBParameterGroupCT.RDS.PR.29Require an Amazon RDS cluster not be configured to be publicly accessible by means of the 'PubliclyAccessible' propertyAWS::RDS::DBClusterCT.RDS.PR.30Require that an Amazon RDS database instance has encryption at rest configured to use a KMS key that you specify for supported engine typesAWS::RDS::DBInstanceCT.REDSHIFT.PR.1Require an Amazon Redshift cluster to prohibit public accessAWS::Redshift::ClusterCT.REDSHIFT.PR.2Require an Amazon Redshift cluster to have automatic snapshots configuredAWS::Redshift::ClusterCT.REDSHIFT.PR.3Require an Amazon Redshift cluster to have audit logging configuredAWS::Redshift::ClusterCT.REDSHIFT.PR.4Require an Amazon Redshift cluster to have automatic upgrades to major versions configuredAWS::Redshift::ClusterCT.REDSHIFT.PR.5Require an Amazon Redshift cluster to have enhanced VPC routingAWS::Redshift::ClusterCT.REDSHIFT.PR.6Require an Amazon Redshift cluster to have a unique administrator usernameAWS::Redshift::ClusterCT.REDSHIFT.PR.7Require an Amazon Redshift cluster to have a unique database nameAWS::Redshift::ClusterCT.REDSHIFT.PR.8Require an Amazon Redshift cluster to be encryptedAWS::Redshift::ClusterCT.REDSHIFT.PR.9Require that an Amazon Redshift cluster parameter group is configured to use Secure Sockets Layer (SSL) for encryption of data in transitAWS::Redshift::ClusterParameterGroupCT.S3.PR.1Require an Amazon S3 bucket to have block public access settings configuredAWS::S3::BucketCT.S3.PR.2Require an Amazon S3 bucket to have server access logging configuredAWS::S3::BucketCT.S3.PR.3Require an Amazon S3 buckets to have versioning configured and a lifecycle policyAWS::S3::BucketCT.S3.PR.4Require an Amazon S3 bucket to have event notifications configuredAWS::S3::BucketCT.S3.PR.5Require that an Amazon S3 bucket does not manage user access with an access control list (ACL)AWS::S3::BucketCT.S3.PR.6Require an Amazon S3 bucket to have lifecycle policies configuredAWS::S3::BucketCT.S3.PR.8Require that Amazon S3 bucket requests use Secure Sockets LayerAWS::S3::BucketPolicyCT.S3.PR.9Require that an Amazon S3 bucket has S3 Object Lock activatedAWS::S3::BucketCT.S3.PR.10Require an Amazon S3 bucket to have server-side encryption configured using an AWS KMS keyAWS::S3::BucketCT.S3.PR.11Require an Amazon S3 bucket to have versioning enabledAWS::S3::BucketCT.S3.PR.12Require an Amazon S3 access point to have a Block Public Access (BPA) configuration with all options set to trueAWS::S3::AccessPointCT.SAGEMAKER.PR.1Require an Amazon SageMaker notebook instance to prevent direct internet accessAWS::SageMaker::NotebookInstanceCT.SAGEMAKER.PR.2Require Amazon SageMaker notebook instances to be deployed within a custom Amazon VPCAWS::SageMaker::NotebookInstanceCT.SAGEMAKER.PR.3Require Amazon SageMaker notebook instances to have root access disallowedAWS::SageMaker::NotebookInstanceCT.SQS.PR.1Require any Amazon SQS queue to have a dead-letter queue configuredAWS::SQS::QueueCT.SQS.PR.2Require any Amazon SQS queue to have encryption at rest configuredAWS::SQS::QueueCT.STEPFUNCTIONS.PR.1Require an AWS Step Functions state machine to have logging activatedAWS::StepFunctions::StateMachineCT.STEPFUNCTIONS.PR.2Require an AWS Step Functions state machine to have AWS X-Ray tracing activatedAWS::StepFunctions::StateMachineCT.WAF-REGIONAL.PR.1Require any AWS WAF Classic regional rule to have a conditionAWS::WAFRegional::RuleCT.WAF-REGIONAL.PR.2Require any AWS WAF Classic regional web access control list (ACL) to have a rule or rule groupAWS::WAFRegional::WebACLCT.WAF.PR.1Require any AWS WAF Classic global rule to have a conditionAWS::WAF::RuleCT.WAF.PR.2Require any AWS WAF Classic global web ACL to have a rule or rule groupAWS::WAF::WebACLCT.WAFV2.PR.1Require an AWS WAF web ACL to be non-emptyAWS::WAFv2::WebACLCT.WAFV2.PR.2Require an AWS WAF rule group to be non-emptyAWS::WAFv2::RuleGroup