Documentation
¶
Index ¶
Constants ¶
View Source
const ( AWSIAMPasswordReusePrevention = "AWS037" AWSIAMPasswordReusePreventionDescription = "IAM Password policy should prevent password reuse." AWSIAMPasswordReusePreventionImpact = "Password reuse increase the risk of compromised passwords being abused" AWSIAMPasswordReusePreventionResolution = "Prevent password reuse in the policy" AWSIAMPasswordReusePreventionExplanation = `` /* 168-byte string literal not displayed */ AWSIAMPasswordReusePreventionBadExample = ` resource "aws_iam_account_password_policy" "bad_example" { # ... password_reuse_prevention = 1 # ... } ` AWSIAMPasswordReusePreventionGoodExample = ` resource "aws_iam_account_password_policy" "good_example" { # ... password_reuse_prevention = 5 # ... } ` )
View Source
const ( AWSIAMPasswordExpiry = "AWS038" AWSIAMPasswordExpiryDescription = "IAM Password policy should have expiry less than or equal to 90 days." AWSIAMPasswordExpiryImpact = "Long life password increase the likelihood of a password eventually being compromised" AWSIAMPasswordExpiryResolution = "Limit the password duration with an expiry in the policy" AWSIAMPasswordExpiryExplanation = `` /* 155-byte string literal not displayed */ AWSIAMPasswordExpiryBadExample = ` resource "aws_iam_account_password_policy" "bad_example" { # ... # max_password_age not set # ... } ` AWSIAMPasswordExpiryGoodExample = ` resource "aws_iam_account_password_policy" "good_example" { # ... max_password_age = 90 # ... } ` )
View Source
const ( AWSIAMPasswordMinimumLength = "AWS039" AWSIAMPasswordMinimumLengthDescription = "IAM Password policy should have minimum password length of 14 or more characters." AWSIAMPasswordMinimumLengthImpact = "Short, simple passwords are easier to compromise" AWSIAMPasswordMinimumLengthResolution = "Enforce longer, more complex passwords in the policy" AWSIAMPasswordMinimumLengthExplanation = `` /* 189-byte string literal not displayed */ AWSIAMPasswordMinimumLengthBadExample = ` resource "aws_iam_account_password_policy" "bad_example" { # ... # minimum_password_length not set # ... } ` AWSIAMPasswordMinimumLengthGoodExample = ` resource "aws_iam_account_password_policy" "good_example" { # ... minimum_password_length = 14 # ... } ` )
View Source
const ( AWSIAMPasswordRequiresSymbol = "AWS040" AWSIAMPasswordRequiresSymbolDescription = "IAM Password policy should have requirement for at least one symbol in the password." AWSIAMPasswordRequiresSymbolImpact = "Short, simple passwords are easier to compromise" AWSIAMPasswordRequiresSymbolResolution = "Enforce longer, more complex passwords in the policy" AWSIAMPasswordRequiresSymbolExplanation = ` IAM account password policies should ensure that passwords content including a symbol. ` AWSIAMPasswordRequiresSymbolBadExample = ` resource "aws_iam_account_password_policy" "bad_example" { # ... # require_symbols not set # ... } ` AWSIAMPasswordRequiresSymbolGoodExample = ` resource "aws_iam_account_password_policy" "good_example" { # ... require_symbols = true # ... } ` )
View Source
const ( AWSIAMPasswordRequiresNumber = "AWS041" AWSIAMPasswordRequiresNumberDescription = "IAM Password policy should have requirement for at least one number in the password." AWSIAMPasswordRequiresNumberImpact = "Short, simple passwords are easier to compromise" AWSIAMPasswordRequiresNumberResolution = "Enforce longer, more complex passwords in the policy" AWSIAMPasswordRequiresNumberExplanation = ` IAM account password policies should ensure that passwords content including at least one number. ` AWSIAMPasswordRequiresNumberBadExample = ` resource "aws_iam_account_password_policy" "bad_example" { # ... # require_numbers not set # ... } ` AWSIAMPasswordRequiresNumberGoodExample = ` resource "aws_iam_account_password_policy" "good_example" { # ... require_numbers = true # ... } ` )
View Source
const ( AWSIAMPasswordRequiresLowercaseCharacter = "AWS042" AWSIAMPasswordRequiresLowercaseCharacterDescription = "IAM Password policy should have requirement for at least one lowercase character." AWSIAMPasswordRequiresLowercaseCharacterImpact = "Short, simple passwords are easier to compromise" AWSIAMPasswordRequiresLowercaseCharacterResolution = "Enforce longer, more complex passwords in the policy" AWSIAMPasswordRequiresLowercaseCharacterExplanation = ` IAM account password policies should ensure that passwords content including at least one lowercase character. ` AWSIAMPasswordRequiresLowercaseCharacterBadExample = ` resource "aws_iam_account_password_policy" "bad_example" { # ... # require_lowercase_characters not set # ... } ` AWSIAMPasswordRequiresLowercaseCharacterGoodExample = ` resource "aws_iam_account_password_policy" "good_example" { # ... require_lowercase_characters = true # ... } ` )
View Source
const ( AWSIAMPasswordRequiresUppercaseCharacter = "AWS043" AWSIAMPasswordRequiresUppercaseCharacterDescription = "IAM Password policy should have requirement for at least one uppercase character." AWSIAMPasswordRequiresUppercaseCharacterImpact = "Short, simple passwords are easier to compromise" AWSIAMPasswordRequiresUppercaseCharacterResolution = "Enforce longer, more complex passwords in the policy" AWSIAMPasswordRequiresUppercaseCharacterExplanation = ` IAM account password policies should ensure that passwords content including at least one uppercase character. ` AWSIAMPasswordRequiresUppercaseCharacterBadExample = ` resource "aws_iam_account_password_policy" "bad_example" { # ... # require_uppercase_characters not set # ... } ` AWSIAMPasswordRequiresUppercaseCharacterGoodExample = ` resource "aws_iam_account_password_policy" "good_example" { # ... require_uppercase_characters = true # ... } ` )
View Source
const AWSALBDropsInvalidHeaders = "AWS083"
View Source
const AWSALBDropsInvalidHeadersBadExample = `` /* 278-byte string literal not displayed */
View Source
const AWSALBDropsInvalidHeadersDescription = "Load balancers should drop invalid headers"
View Source
const AWSALBDropsInvalidHeadersExplanation = `` /* 244-byte string literal not displayed */
View Source
const AWSALBDropsInvalidHeadersGoodExample = `` /* 279-byte string literal not displayed */
View Source
const AWSALBDropsInvalidHeadersImpact = "Invalid headers being passed through to the target of the load balance may exploit vulnerabilities"
View Source
const AWSALBDropsInvalidHeadersResolution = "Set drop_invalid_header_fields to true"
View Source
const AWSAPIGatewayHasAccessLoggingEnabled = "AWS061"
View Source
const AWSAPIGatewayHasAccessLoggingEnabledBadExample = `` /* 313-byte string literal not displayed */
View Source
const AWSAPIGatewayHasAccessLoggingEnabledDescription = "API Gateway stages for V1 and V2 should have access logging enabled"
View Source
const AWSAPIGatewayHasAccessLoggingEnabledExplanation = `` /* 169-byte string literal not displayed */
View Source
const AWSAPIGatewayHasAccessLoggingEnabledGoodExample = `` /* 473-byte string literal not displayed */
View Source
const AWSAPIGatewayHasAccessLoggingEnabledImpact = "Logging provides vital information about access and usage"
View Source
const AWSAPIGatewayHasAccessLoggingEnabledResolution = "Enable logging for API Gateway stages"
View Source
const AWSAWSWorkspaceVolumesEncrypted = "AWS084"
View Source
const AWSAWSWorkspaceVolumesEncryptedBadExample = `` /* 495-byte string literal not displayed */
View Source
const AWSAWSWorkspaceVolumesEncryptedDescription = "Root and user volumes on Workspaces should be encrypted"
View Source
const AWSAWSWorkspaceVolumesEncryptedExplanation = `
Workspace volumes for both user and root should be encrypted to protect the data stored on them.
`
View Source
const AWSAWSWorkspaceVolumesEncryptedGoodExample = `` /* 607-byte string literal not displayed */
View Source
const AWSAWSWorkspaceVolumesEncryptedImpact = "Data can be freely read if compromised"
View Source
const AWSAWSWorkspaceVolumesEncryptedResolution = "Root and user volume encryption should be enabled"
View Source
const AWSApiGatewayDomainNameOutdatedSecurityPolicy = "AWS025"
View Source
const AWSApiGatewayDomainNameOutdatedSecurityPolicyBadExample = `
resource "aws_api_gateway_domain_name" "bad_example" {
security_policy = "TLS_1_0"
}
`
View Source
const AWSApiGatewayDomainNameOutdatedSecurityPolicyDescription = "API Gateway domain name uses outdated SSL/TLS protocols."
View Source
const AWSApiGatewayDomainNameOutdatedSecurityPolicyExplanation = `
You should not use outdated/insecure TLS versions for encryption. You should be using TLS v1.2+.
`
View Source
const AWSApiGatewayDomainNameOutdatedSecurityPolicyGoodExample = `
resource "aws_api_gateway_domain_name" "good_example" {
security_policy = "TLS_1_2"
}
`
View Source
const AWSApiGatewayDomainNameOutdatedSecurityPolicyImpact = "Outdated SSL policies increase exposure to known vulnerabilities"
View Source
const AWSApiGatewayDomainNameOutdatedSecurityPolicyResolution = "Use the most modern TLS/SSL policies available"
View Source
const AWSAthenaWorkgroupEnforceConfiguration = "AWS060"
View Source
const AWSAthenaWorkgroupEnforceConfigurationBadExample = `` /* 494-byte string literal not displayed */
View Source
const AWSAthenaWorkgroupEnforceConfigurationDescription = "Athena workgroups should enforce configuration to prevent client disabling encryption"
View Source
const AWSAthenaWorkgroupEnforceConfigurationExplanation = `
Athena workgroup configuration should be enforced to prevent client side changes to disable encryption settings.
`
View Source
const AWSAthenaWorkgroupEnforceConfigurationGoodExample = `` /* 423-byte string literal not displayed */
View Source
const AWSAthenaWorkgroupEnforceConfigurationImpact = "Clients can ginore encryption requirements"
View Source
const AWSAthenaWorkgroupEnforceConfigurationResolution = "Enforce the configuration to prevent client overrides"
View Source
const AWSBadBucketACL = "AWS001"
View Source
const AWSBadBucketACLBadExample = `
resource "aws_s3_bucket" "bad_example" {
acl = "public-read"
}
`
View Source
const AWSBadBucketACLDescription = "S3 Bucket has an ACL defined which allows public access."
View Source
const AWSBadBucketACLExplanation = `` /* 412-byte string literal not displayed */
View Source
const AWSBadBucketACLGoodExample = `
resource "aws_s3_bucket" "good_example" {
acl = "private"
}
`
View Source
const AWSBadBucketACLImpact = "The contents of the bucket can be accessed publicly"
View Source
const AWSBadBucketACLResolution = "Apply a more restrictive bucket ACL"
View Source
const AWSBlockPublicAclS3 = "AWS074"
View Source
const AWSBlockPublicAclS3BadExample = `` /* 228-byte string literal not displayed */
View Source
const AWSBlockPublicAclS3Description = "S3 Access block should block public ACL"
View Source
const AWSBlockPublicAclS3Explanation = `` /* 142-byte string literal not displayed */
View Source
const AWSBlockPublicAclS3GoodExample = `` /* 129-byte string literal not displayed */
View Source
const AWSBlockPublicAclS3Impact = "PUT calls with public ACLs specified can make objects public"
View Source
const AWSBlockPublicAclS3Resolution = "Enable blocking any PUT calls with a public ACL specified"
View Source
const AWSBlockPublicPolicyS3 = "AWS076"
View Source
const AWSBlockPublicPolicyS3BadExample = `` /* 230-byte string literal not displayed */
View Source
const AWSBlockPublicPolicyS3Description = "S3 Access block should block public policy"
View Source
const AWSBlockPublicPolicyS3Explanation = `
S3 bucket policy should have block public policy to prevent users from putting a policy that enable public access.
`
View Source
const AWSBlockPublicPolicyS3GoodExample = `` /* 131-byte string literal not displayed */
View Source
const AWSBlockPublicPolicyS3Impact = "Users could put a policy that allows public access"
View Source
const AWSBlockPublicPolicyS3Resolution = "Prevent policies that allow public access being PUT"
View Source
const AWSCheckLambdaFunctionForSourceARN = "AWS058"
View Source
const AWSCheckLambdaFunctionForSourceARNBadExample = `` /* 231-byte string literal not displayed */
View Source
const AWSCheckLambdaFunctionForSourceARNDescription = "Ensure that lambda function permission has a source arn specified"
View Source
const AWSCheckLambdaFunctionForSourceARNExplanation = `` /* 415-byte string literal not displayed */
View Source
const AWSCheckLambdaFunctionForSourceARNGoodExample = `` /* 276-byte string literal not displayed */
View Source
const AWSCheckLambdaFunctionForSourceARNImpact = "Not providing the source ARN allows any resource from principal, even from other accounts"
View Source
const AWSCheckLambdaFunctionForSourceARNResolution = "Always provide a source arn for Lambda permissions"
View Source
const AWSClassicUsage = "AWS003"
View Source
const AWSClassicUsageBadExample = `
resource "aws_db_security_group" "bad_example" {
# ...
}
`
View Source
const AWSClassicUsageDescription = "AWS Classic resource usage."
View Source
const AWSClassicUsageExplanation = `` /* 144-byte string literal not displayed */
View Source
const AWSClassicUsageGoodExample = `
resource "aws_security_group" "good_example" {
# ...
}
`
View Source
const AWSClassicUsageImpact = "Classic resources are running in a shared environment with other customers"
View Source
const AWSClassicUsageResolution = "Switch to VPC resources"
View Source
const AWSCloudFrontDoesNotHaveAWaf = "AWS045"
View Source
const AWSCloudFrontDoesNotHaveAWafBadExample = `` /* 801-byte string literal not displayed */
View Source
const AWSCloudFrontDoesNotHaveAWafDescription = "CloudFront distribution does not have a WAF in front."
View Source
const AWSCloudFrontDoesNotHaveAWafExplanation = `` /* 157-byte string literal not displayed */
View Source
const AWSCloudFrontDoesNotHaveAWafGoodExample = `` /* 657-byte string literal not displayed */
View Source
const AWSCloudFrontDoesNotHaveAWafImpact = "Complex web application attacks can more easily be performed without a WAF"
View Source
const AWSCloudFrontDoesNotHaveAWafResolution = "Enable WAF for the CloudFront distribution"
View Source
const AWSCloudFrontOutdatedProtocol = "AWS021"
View Source
const AWSCloudFrontOutdatedProtocolBadExample = `` /* 168-byte string literal not displayed */
View Source
const AWSCloudFrontOutdatedProtocolDescription = "CloudFront distribution uses outdated SSL/TLS protocols."
View Source
const AWSCloudFrontOutdatedProtocolExplanation = `
You should not use outdated/insecure TLS versions for encryption. You should be using TLS v1.2+.
`
View Source
const AWSCloudFrontOutdatedProtocolGoodExample = `` /* 174-byte string literal not displayed */
View Source
const AWSCloudFrontOutdatedProtocolImpact = "Outdated SSL policies increase exposure to known vulnerabilities"
View Source
const AWSCloudFrontOutdatedProtocolResolution = "Use the most modern TLS/SSL policies available"
View Source
const AWSCloudWatchLogGroupsCMKEncrypted = "AWS089"
View Source
const AWSCloudWatchLogGroupsCMKEncryptedBadExample = `
resource "aws_cloudwatch_log_group" "bad_example" {
name = "bad_example"
}
`
View Source
const AWSCloudWatchLogGroupsCMKEncryptedDescription = "CloudWatch log groups should be encrypted using CMK"
View Source
const AWSCloudWatchLogGroupsCMKEncryptedExplanation = `` /* 158-byte string literal not displayed */
View Source
const AWSCloudWatchLogGroupsCMKEncryptedGoodExample = `
resource "aws_cloudwatch_log_group" "good_example" {
name = "good_example"
kms_key_id = aws_kms_key.log_key.arn
}
`
View Source
const AWSCloudWatchLogGroupsCMKEncryptedImpact = "Log data may be leaked if the logs are compromised. No auditing of who have viewed the logs."
View Source
const AWSCloudWatchLogGroupsCMKEncryptedResolution = "Enable CMK encryption of CloudWatch Log Groups"
View Source
const AWSCloudfrontDistributionAccessLoggingEnabled = "AWS071"
View Source
const AWSCloudfrontDistributionAccessLoggingEnabledBadExample = `
resource "aws_cloudfront_distribution" "bad_example" {
// other config
// no logging_config
}
`
View Source
const AWSCloudfrontDistributionAccessLoggingEnabledDescription = "Cloudfront distribution should have Access Logging configured"
View Source
const AWSCloudfrontDistributionAccessLoggingEnabledExplanation = `` /* 152-byte string literal not displayed */
View Source
const AWSCloudfrontDistributionAccessLoggingEnabledGoodExample = `` /* 200-byte string literal not displayed */
View Source
const AWSCloudfrontDistributionAccessLoggingEnabledImpact = "Logging provides vital information about access and usage"
View Source
const AWSCloudfrontDistributionAccessLoggingEnabledResolution = "Enable logging for CloudFront distributions"
View Source
const AWSCloudfrontDistributionViewerProtocolPolicyHTTPS = "AWS072"
View Source
const AWSCloudfrontDistributionViewerProtocolPolicyHTTPSBadExample = `` /* 562-byte string literal not displayed */
View Source
const AWSCloudfrontDistributionViewerProtocolPolicyHTTPSDescription = "Viewer Protocol Policy in Cloudfront Distribution Cache should always be set to HTTPS"
View Source
const AWSCloudfrontDistributionViewerProtocolPolicyHTTPSExplanation = `` /* 250-byte string literal not displayed */
View Source
const AWSCloudfrontDistributionViewerProtocolPolicyHTTPSGoodExample = `` /* 298-byte string literal not displayed */
View Source
const AWSCloudfrontDistributionViewerProtocolPolicyHTTPSImpact = "HTTP traffic can be read if intercepted"
View Source
const AWSCloudfrontDistributionViewerProtocolPolicyHTTPSResolution = "Only use HTTPS in the Viewer Protocol Policy"
View Source
const AWSCloudtrailEnabledInAllRegions = "AWS063"
View Source
const AWSCloudtrailEnabledInAllRegionsBadExample = `` /* 264-byte string literal not displayed */
View Source
const AWSCloudtrailEnabledInAllRegionsDescription = "Cloudtrail should be enabled in all regions regardless of where your AWS resources are generally homed"
View Source
const AWSCloudtrailEnabledInAllRegionsExplanation = `` /* 282-byte string literal not displayed */
View Source
const AWSCloudtrailEnabledInAllRegionsGoodExample = `` /* 297-byte string literal not displayed */
View Source
const AWSCloudtrailEnabledInAllRegionsImpact = "Activity could be happening in your account in a different region"
View Source
const AWSCloudtrailEnabledInAllRegionsResolution = "Enable Cloudtrail in all regions"
View Source
const AWSCloudtrailEncryptedAtRest = "AWS065"
View Source
const AWSCloudtrailEncryptedAtRestBadExample = `` /* 296-byte string literal not displayed */
View Source
const AWSCloudtrailEncryptedAtRestDescription = "Cloudtrail should be encrypted at rest to secure access to sensitive trail data"
View Source
const AWSCloudtrailEncryptedAtRestExplanation = `` /* 232-byte string literal not displayed */
View Source
const AWSCloudtrailEncryptedAtRestGoodExample = `` /* 359-byte string literal not displayed */
View Source
const AWSCloudtrailEncryptedAtRestImpact = "Data can be freely read if compromised"
View Source
const AWSCloudtrailEncryptedAtRestResolution = "Enable encryption at rest"
View Source
const AWSCloudtrailLogValidationEnabled = "AWS064"
View Source
const AWSCloudtrailLogValidationEnabledBadExample = `` /* 296-byte string literal not displayed */
View Source
const AWSCloudtrailLogValidationEnabledDescription = "Cloudtrail log validation should be enabled to prevent tampering of log data"
View Source
const AWSCloudtrailLogValidationEnabledExplanation = `` /* 251-byte string literal not displayed */
View Source
const AWSCloudtrailLogValidationEnabledGoodExample = `` /* 333-byte string literal not displayed */
View Source
const AWSCloudtrailLogValidationEnabledImpact = "Illicit activity could be removed from the logs"
View Source
const AWSCloudtrailLogValidationEnabledResolution = "Turn on log validation for Cloudtrail"
View Source
const AWSCodeBuildProjectEncryptionNotDisabled = "AWS080"
View Source
const AWSCodeBuildProjectEncryptionNotDisabledBadExample = `` /* 414-byte string literal not displayed */
View Source
const AWSCodeBuildProjectEncryptionNotDisabledDescription = "CodeBuild Project artifacts encryption should not be disabled"
View Source
const AWSCodeBuildProjectEncryptionNotDisabledExplanation = `
All artifacts produced by your CodeBuild project pipeline should always be encrypted
`
View Source
const AWSCodeBuildProjectEncryptionNotDisabledGoodExample = `` /* 469-byte string literal not displayed */
View Source
const AWSCodeBuildProjectEncryptionNotDisabledImpact = "CodeBuild project artifacts are unencrypted"
View Source
const AWSCodeBuildProjectEncryptionNotDisabledResolution = "Enable encryption for CodeBuild project artifacts"
View Source
const AWSConfigAggregatorCoveringAllRegions = "AWS085"
View Source
const AWSConfigAggregatorCoveringAllRegionsBadExample = `` /* 199-byte string literal not displayed */
View Source
const AWSConfigAggregatorCoveringAllRegionsDescription = "Config configuration aggregator should be using all regions for source"
View Source
const AWSConfigAggregatorCoveringAllRegionsExplanation = `` /* 191-byte string literal not displayed */
View Source
const AWSConfigAggregatorCoveringAllRegionsGoodExample = `` /* 178-byte string literal not displayed */
View Source
const AWSConfigAggregatorCoveringAllRegionsImpact = "Sources that aren't covered by the aggregator are not include in the configuration"
View Source
const AWSConfigAggregatorCoveringAllRegionsResolution = "Set the aggregator to cover all regions"
View Source
const AWSDAXEncryptedAtRest = "AWS081"
View Source
const AWSDAXEncryptedAtRestBadExample = `` /* 371-byte string literal not displayed */
View Source
const AWSDAXEncryptedAtRestDescription = "DAX Cluster should always encrypt data at rest"
View Source
const AWSDAXEncryptedAtRestExplanation = `` /* 182-byte string literal not displayed */
View Source
const AWSDAXEncryptedAtRestGoodExample = `` /* 149-byte string literal not displayed */
View Source
const AWSDAXEncryptedAtRestImpact = "Data can be freely read if compromised"
View Source
const AWSDAXEncryptedAtRestResolution = "Enable encryption at rest for DAX Cluster"
View Source
const AWSDontUseDefaultAWSVPC = "AWS082"
View Source
const AWSDontUseDefaultAWSVPCBadExample = `
resource "aws_default_vpc" "default" {
tags = {
Name = "Default VPC"
}
}
`
View Source
const AWSDontUseDefaultAWSVPCDescription = "AWS best practice to not use the default VPC for workflows"
View Source
const AWSDontUseDefaultAWSVPCExplanation = `` /* 199-byte string literal not displayed */
View Source
const AWSDontUseDefaultAWSVPCGoodExample = `
# no aws default vpc present
`
View Source
const AWSDontUseDefaultAWSVPCImpact = "The default VPC does not have critical security features applied"
View Source
const AWSDontUseDefaultAWSVPCResolution = "Create a non-default vpc for resources to be created in"
View Source
const AWSDynamoDBRecoveryEnabled = "AWS086"
View Source
const AWSDynamoDBRecoveryEnabledBadExample = `` /* 284-byte string literal not displayed */
View Source
const AWSDynamoDBRecoveryEnabledDescription = "Point in time recovery should be enabled to protect DynamoDB table"
View Source
const AWSDynamoDBRecoveryEnabledExplanation = `` /* 238-byte string literal not displayed */
View Source
const AWSDynamoDBRecoveryEnabledGoodExample = `` /* 332-byte string literal not displayed */
View Source
const AWSDynamoDBRecoveryEnabledImpact = "Accidental or malicious writes and deletes can't be rolled back"
View Source
const AWSDynamoDBRecoveryEnabledResolution = "Enable point in time recovery"
View Source
const AWSDynamoDBTableEncryption = "AWS092"
View Source
const AWSDynamoDBTableEncryptionBadExample = `` /* 378-byte string literal not displayed */
View Source
const AWSDynamoDBTableEncryptionDescription = "DynamoDB tables should use at rest encryption with a Customer Managed Key"
View Source
const AWSDynamoDBTableEncryptionExplanation = `` /* 200-byte string literal not displayed */
View Source
const AWSDynamoDBTableEncryptionGoodExample = `` /* 551-byte string literal not displayed */
View Source
const AWSDynamoDBTableEncryptionImpact = "Using AWS managed keys does not allow for fine grained control"
View Source
const AWSDynamoDBTableEncryptionResolution = "Enable server side encryption with a customer managed key"
View Source
const AWSEC2InstanceSensitiveUserdata = "AWS062"
View Source
const AWSEC2InstanceSensitiveUserdataBadExample = `` /* 284-byte string literal not displayed */
View Source
const AWSEC2InstanceSensitiveUserdataDescription = "User data for EC2 instances must not contain sensitive AWS keys"
View Source
const AWSEC2InstanceSensitiveUserdataExplanation = `` /* 234-byte string literal not displayed */
View Source
const AWSEC2InstanceSensitiveUserdataGoodExample = `` /* 290-byte string literal not displayed */
View Source
const AWSEC2InstanceSensitiveUserdataImpact = "User data is visible through the AWS Management console"
View Source
const AWSEC2InstanceSensitiveUserdataResolution = "Remove sensitive data from the EC2 instance user-data"
View Source
const AWSECRRepoCustomerManagedKeys = "AWS093"
View Source
const AWSECRRepoCustomerManagedKeysBadExample = `` /* 176-byte string literal not displayed */
View Source
const AWSECRRepoCustomerManagedKeysDescription = "ECR Repository should use customer managed keys to allow more control"
View Source
const AWSECRRepoCustomerManagedKeysExplanation = `` /* 214-byte string literal not displayed */
View Source
const AWSECRRepoCustomerManagedKeysGoodExample = `` /* 340-byte string literal not displayed */
View Source
const AWSECRRepoCustomerManagedKeysImpact = "Using AWS managed keys does not allow for fine grained control"
View Source
const AWSECRRepoCustomerManagedKeysResolution = "Use customer managed keys"
View Source
const AWSECSClusterContainerInsights = "AWS090"
View Source
const AWSECSClusterContainerInsightsBadExample = `
resource "aws_ecs_cluster" "bad_example" {
name = "services-cluster"
}
`
View Source
const AWSECSClusterContainerInsightsDescription = "ECS clusters should have container insights enabled"
View Source
const AWSECSClusterContainerInsightsExplanation = `
Cloudwatch Container Insights provide more metrics and logs for container based applications and micro services.
`
View Source
const AWSECSClusterContainerInsightsGoodExample = `` /* 143-byte string literal not displayed */
View Source
const AWSECSClusterContainerInsightsImpact = "Not all metrics and logs may be gathered for containers when Container Insights isn't enabled"
View Source
const AWSECSClusterContainerInsightsResolution = "Enable Container Insights"
View Source
const AWSECSTaskDefinitionEncryptionInTransit = "AWS096"
View Source
const AWSECSTaskDefinitionEncryptionInTransitBadExample = `` /* 442-byte string literal not displayed */
View Source
const AWSECSTaskDefinitionEncryptionInTransitDescription = "ECS Task Definitions with EFS volumes should use in-transit encryption"
View Source
const AWSECSTaskDefinitionEncryptionInTransitExplanation = `` /* 165-byte string literal not displayed */
View Source
const AWSECSTaskDefinitionEncryptionInTransitGoodExample = `` /* 514-byte string literal not displayed */
View Source
const AWSECSTaskDefinitionEncryptionInTransitImpact = "Intercepted traffic to and from EFS may lead to data loss"
View Source
const AWSECSTaskDefinitionEncryptionInTransitResolution = "Enable in transit encryption when using efs"
View Source
const AWSEKSClusterNotOpenPublicly = "AWS068"
View Source
const AWSEKSClusterNotOpenPubliclyBadExample = `` /* 193-byte string literal not displayed */
View Source
const AWSEKSClusterNotOpenPubliclyDescription = "EKS cluster should not have open CIDR range for public access"
View Source
const AWSEKSClusterNotOpenPubliclyExplanation = `` /* 163-byte string literal not displayed */
View Source
const AWSEKSClusterNotOpenPubliclyGoodExample = `` /* 240-byte string literal not displayed */
View Source
const AWSEKSClusterNotOpenPubliclyImpact = "EKS can be access from the internet"
View Source
const AWSEKSClusterNotOpenPubliclyResolution = "Don't enable public access to EKS Clusters"
View Source
const AWSEKSClusterPublicAccessDisabled = "AWS069"
View Source
const AWSEKSClusterPublicAccessDisabledBadExample = `` /* 225-byte string literal not displayed */
View Source
const AWSEKSClusterPublicAccessDisabledDescription = "EKS Clusters should have the public access disabled"
View Source
const AWSEKSClusterPublicAccessDisabledExplanation = `` /* 131-byte string literal not displayed */
View Source
const AWSEKSClusterPublicAccessDisabledGoodExample = `` /* 196-byte string literal not displayed */
View Source
const AWSEKSClusterPublicAccessDisabledImpact = "EKS can be access from the internet"
View Source
const AWSEKSClusterPublicAccessDisabledResolution = "Don't enable public access to EKS Clusters"
View Source
const AWSEKSHasControlPlaneLoggingEnabled = "AWS067"
View Source
const AWSEKSHasControlPlaneLoggingEnabledBadExample = `` /* 300-byte string literal not displayed */
View Source
const AWSEKSHasControlPlaneLoggingEnabledDescription = "EKS Clusters should have cluster control plane logging turned on"
View Source
const AWSEKSHasControlPlaneLoggingEnabledExplanation = `` /* 204-byte string literal not displayed */
View Source
const AWSEKSHasControlPlaneLoggingEnabledGoodExample = `` /* 400-byte string literal not displayed */
View Source
const AWSEKSHasControlPlaneLoggingEnabledImpact = "Logging provides valuable information about access and usage"
View Source
const AWSEKSHasControlPlaneLoggingEnabledResolution = "Enable logging for the EKS control plane"
View Source
const AWSEKSSecretsEncryptionEnabled = "AWS066"
View Source
const AWSEKSSecretsEncryptionEnabledBadExample = `` /* 173-byte string literal not displayed */
View Source
const AWSEKSSecretsEncryptionEnabledDescription = "EKS should have the encryption of secrets enabled"
View Source
const AWSEKSSecretsEncryptionEnabledExplanation = `
EKS cluster resources should have the encryption_config block set with protection of the secrets resource.
`
View Source
const AWSEKSSecretsEncryptionEnabledGoodExample = `` /* 302-byte string literal not displayed */
View Source
const AWSEKSSecretsEncryptionEnabledImpact = "EKS secrets could be read if compromised"
View Source
const AWSEKSSecretsEncryptionEnabledResolution = "Enable encryption of EKS secrets"
View Source
const AWSESDomainLoggingEnabled = "AWS070"
View Source
const AWSESDomainLoggingEnabledBadExample = `` /* 278-byte string literal not displayed */
View Source
const AWSESDomainLoggingEnabledDescription = "AWS ES Domain should have logging enabled"
View Source
const AWSESDomainLoggingEnabledExplanation = `
AWS ES domain should have logging enabled by default.
`
View Source
const AWSESDomainLoggingEnabledGoodExample = `` /* 263-byte string literal not displayed */
View Source
const AWSESDomainLoggingEnabledImpact = "Logging provides vital information about access and usage"
View Source
const AWSESDomainLoggingEnabledResolution = "Enable logging for ElasticSearch domains"
View Source
const AWSEcrImageScanNotEnabled = "AWS023"
View Source
const AWSEcrImageScanNotEnabledBadExample = `` /* 178-byte string literal not displayed */
View Source
const AWSEcrImageScanNotEnabledDescription = "ECR repository has image scans disabled."
View Source
const AWSEcrImageScanNotEnabledExplanation = `` /* 126-byte string literal not displayed */
View Source
const AWSEcrImageScanNotEnabledGoodExample = `` /* 178-byte string literal not displayed */
View Source
const AWSEcrImageScanNotEnabledImpact = "The ability to scan images is not being used and vulnerabilities will not be highlighted"
View Source
const AWSEcrImageScanNotEnabledResolution = "Enable ECR image scanning"
View Source
const AWSEcrImagesHaveImmutableTags = "AWS078"
View Source
const AWSEcrImagesHaveImmutableTagsBadExample = `` /* 177-byte string literal not displayed */
View Source
const AWSEcrImagesHaveImmutableTagsDescription = "ECR images tags shouldn't be mutable."
View Source
const AWSEcrImagesHaveImmutableTagsExplanation = `` /* 178-byte string literal not displayed */
View Source
const AWSEcrImagesHaveImmutableTagsGoodExample = `` /* 180-byte string literal not displayed */
View Source
const AWSEcrImagesHaveImmutableTagsImpact = "Image tags could be overwritten with compromised images"
View Source
const AWSEcrImagesHaveImmutableTagsResolution = "Only use immutable images in ECR"
View Source
const AWSEfsEncryptionNotEnabled = "AWS048"
View Source
const AWSEfsEncryptionNotEnabledBadExample = `
resource "aws_efs_file_system" "bad_example" {
name = "bar"
encrypted = false
kms_key_id = ""
}`
View Source
const AWSEfsEncryptionNotEnabledDescription = "EFS Encryption has not been enabled"
View Source
const AWSEfsEncryptionNotEnabledExplanation = `` /* 254-byte string literal not displayed */
View Source
const AWSEfsEncryptionNotEnabledGoodExample = `
resource "aws_efs_file_system" "good_example" {
name = "bar"
encrypted = true
kms_key_id = "my_kms_key"
}`
View Source
const AWSEfsEncryptionNotEnabledImpact = "Data can be read from the EFS if compromised"
View Source
const AWSEfsEncryptionNotEnabledResolution = "Enable encryption for EFS"
View Source
const AWSElasticSearchHasDomainLogging = "AWS057"
View Source
const AWSElasticSearchHasDomainLoggingBadExample = `` /* 434-byte string literal not displayed */
View Source
const AWSElasticSearchHasDomainLoggingDescription = "Domain logging should be enabled for Elastic Search domains"
View Source
const AWSElasticSearchHasDomainLoggingExplanation = `` /* 355-byte string literal not displayed */
View Source
const AWSElasticSearchHasDomainLoggingGoodExample = `` /* 622-byte string literal not displayed */
View Source
const AWSElasticSearchHasDomainLoggingImpact = "Logging provides vital information about access and usage"
View Source
const AWSElasticSearchHasDomainLoggingResolution = "Enable logging for ElasticSearch domains"
View Source
const AWSEnsureAthenaDbEncrypted = "AWS059"
View Source
const AWSEnsureAthenaDbEncryptedBadExample = `` /* 404-byte string literal not displayed */
View Source
const AWSEnsureAthenaDbEncryptedDescription = "Athena databases and workgroup configurations are created unencrypted at rest by default, they should be encrypted"
View Source
const AWSEnsureAthenaDbEncryptedExplanation = `` /* 206-byte string literal not displayed */
View Source
const AWSEnsureAthenaDbEncryptedGoodExample = `` /* 655-byte string literal not displayed */
View Source
const AWSEnsureAthenaDbEncryptedImpact = "Data can be read if the Athena Database is compromised"
View Source
const AWSEnsureAthenaDbEncryptedResolution = "Enable encryption at rest for Athena databases and workgroup configurations"
View Source
const AWSExternallyExposedLoadBalancer = "AWS005"
View Source
const AWSExternallyExposedLoadBalancerBadExample = `
resource "aws_alb" "bad_example" {
internal = false
}
`
View Source
const AWSExternallyExposedLoadBalancerDescription = "Load balancer is exposed to the internet."
View Source
const AWSExternallyExposedLoadBalancerExplanation = `` /* 250-byte string literal not displayed */
View Source
const AWSExternallyExposedLoadBalancerGoodExample = `
resource "aws_alb" "good_example" {
internal = true
}
`
View Source
const AWSExternallyExposedLoadBalancerImpact = "The load balancer is exposed on the internet"
View Source
const AWSExternallyExposedLoadBalancerResolution = "Switch to an internal load balancer or add a tfsec ignore"
View Source
const AWSIAMPolicyShouldUsePrincipleOfLeastPrivilege = "AWS099"
View Source
const AWSIAMPolicyShouldUsePrincipleOfLeastPrivilegeBadExample = `` /* 684-byte string literal not displayed */
View Source
const AWSIAMPolicyShouldUsePrincipleOfLeastPrivilegeDescription = "IAM policy should avoid use of wildcards and instead apply the principle of least privilege"
View Source
const AWSIAMPolicyShouldUsePrincipleOfLeastPrivilegeExplanation = `` /* 267-byte string literal not displayed */
View Source
const AWSIAMPolicyShouldUsePrincipleOfLeastPrivilegeGoodExample = `` /* 714-byte string literal not displayed */
View Source
const AWSIAMPolicyShouldUsePrincipleOfLeastPrivilegeImpact = "Overly permissive policies may grant access to sensitive resources"
View Source
const AWSIAMPolicyShouldUsePrincipleOfLeastPrivilegeResolution = "Specify the exact permissions required, and to which resources they should apply instead of using wildcards."
View Source
const AWSIamPolicyWildcardActions = "AWS046"
View Source
const AWSIamPolicyWildcardActionsBadExample = `
data "aws_iam_policy_document" "bad_example" {
statement {
sid = "1"
actions = [
"*"
]
}
}
`
View Source
const AWSIamPolicyWildcardActionsDescription = "AWS IAM policy document has wildcard action statement."
View Source
const AWSIamPolicyWildcardActionsExplanation = `
IAM profiles should be configured with the specific, minimum set of permissions required.
`
View Source
const AWSIamPolicyWildcardActionsGoodExample = `` /* 170-byte string literal not displayed */
View Source
const AWSIamPolicyWildcardActionsImpact = "IAM policies with wildcard actions allow more that is required"
View Source
const AWSIamPolicyWildcardActionsResolution = "Keep policy scope to the minimum that is required to be effective"
View Source
const AWSIngorePublicAclS3 = "AWS073"
View Source
const AWSIngorePublicAclS3BadExample = `` /* 229-byte string literal not displayed */
View Source
const AWSIngorePublicAclS3Description = "S3 Access Block should Ignore Public Acl"
View Source
const AWSIngorePublicAclS3Explanation = `` /* 191-byte string literal not displayed */
View Source
const AWSIngorePublicAclS3GoodExample = `` /* 130-byte string literal not displayed */
View Source
const AWSIngorePublicAclS3Impact = "PUT calls with public ACLs specified can make objects public"
View Source
const AWSIngorePublicAclS3Resolution = "Enable ignoring the application of public ACLs in PUT calls"
View Source
const AWSInstanceMetadataChec = "AWS079"
View Source
const AWSInstanceMetadataChecBadExample = `
resource "aws_instance" "bad_example" {
ami = "ami-005e54dee72cc1d00"
instance_type = "t2.micro"
}
`
View Source
const AWSInstanceMetadataChecDescription = "aws_instance should activate session tokens for Instance Metadata Service."
View Source
const AWSInstanceMetadataChecExplanation = `` /* 389-byte string literal not displayed */
View Source
const AWSInstanceMetadataChecGoodExample = `` /* 167-byte string literal not displayed */
View Source
const AWSInstanceMetadataChecImpact = "Instance metadata service can be interacted with freely"
View Source
const AWSInstanceMetadataChecResolution = "Enable HTTP token requirement for IMDS"
View Source
const AWSKMSManagedPoliciesShouldNotAllowDecryptionActionsOnAllKMSKeys = "AWS097"
View Source
const AWSKMSManagedPoliciesShouldNotAllowDecryptionActionsOnAllKMSKeysBadExample = `` /* 688-byte string literal not displayed */
View Source
const AWSKMSManagedPoliciesShouldNotAllowDecryptionActionsOnAllKMSKeysDescription = "IAM customer managed policies should not allow decryption actions on all KMS keys"
View Source
const AWSKMSManagedPoliciesShouldNotAllowDecryptionActionsOnAllKMSKeysExplanation = `` /* 344-byte string literal not displayed */
View Source
const AWSKMSManagedPoliciesShouldNotAllowDecryptionActionsOnAllKMSKeysGoodExample = `` /* 707-byte string literal not displayed */
View Source
const AWSKMSManagedPoliciesShouldNotAllowDecryptionActionsOnAllKMSKeysImpact = "Identities may be able to decrypt data which they should not have access to"
View Source
const AWSKMSManagedPoliciesShouldNotAllowDecryptionActionsOnAllKMSKeysResolution = "Scope down the resources of the IAM policy to specific keys"
View Source
const AWSLaunchConfigurationWithUnencryptedBlockDevice = "AWS014"
View Source
const AWSLaunchConfigurationWithUnencryptedBlockDeviceBadExample = `
resource "aws_launch_configuration" "bad_example" {
root_block_device {
encrypted = false
}
}
`
View Source
const AWSLaunchConfigurationWithUnencryptedBlockDeviceDescription = "Launch configuration with unencrypted block device."
View Source
const AWSLaunchConfigurationWithUnencryptedBlockDeviceExplanation = `
Blocks devices should be encrypted to ensure sensitive data is held securely at rest.
`
View Source
const AWSLaunchConfigurationWithUnencryptedBlockDeviceGoodExample = `
resource "aws_launch_configuration" "good_example" {
root_block_device {
encrypted = true
}
}
`
View Source
const AWSLaunchConfigurationWithUnencryptedBlockDeviceImpact = "The block device is could be compromised and read from"
View Source
const AWSLaunchConfigurationWithUnencryptedBlockDeviceResolution = "Turn on encryption for all block devices"
View Source
const AWSNoBucketLogging = "AWS002"
View Source
const AWSNoBucketLoggingBadExample = `
resource "aws_s3_bucket" "bad_example" {
}
`
View Source
const AWSNoBucketLoggingDescription = "S3 Bucket does not have logging enabled."
View Source
const AWSNoBucketLoggingExplanation = `
Buckets should have logging enabled so that access can be audited.
`
View Source
const AWSNoBucketLoggingGoodExample = `
resource "aws_s3_bucket" "good_example" {
logging {
target_bucket = "target-bucket"
}
}
`
View Source
const AWSNoBucketLoggingImpact = "There is no way to determine the access to this bucket"
View Source
const AWSNoBucketLoggingResolution = "Add a logging block to the resource to enable access logging"
View Source
const AWSNoDescriptionInSecurityGroup = "AWS018"
View Source
const AWSNoDescriptionInSecurityGroupBadExample = `` /* 233-byte string literal not displayed */
View Source
const AWSNoDescriptionInSecurityGroupDescription = "Missing description for security group/security group rule."
View Source
const AWSNoDescriptionInSecurityGroupExplanation = `` /* 157-byte string literal not displayed */
View Source
const AWSNoDescriptionInSecurityGroupGoodExample = `` /* 279-byte string literal not displayed */
View Source
const AWSNoDescriptionInSecurityGroupImpact = "Descriptions provide context for the firewall rule reasons"
View Source
const AWSNoDescriptionInSecurityGroupResolution = "Add descriptions for all security groups and rules"
View Source
const AWSNoKMSAutoRotate = "AWS019"
View Source
const AWSNoKMSAutoRotateBadExample = `
resource "aws_kms_key" "bad_example" {
enable_key_rotation = false
}
`
View Source
const AWSNoKMSAutoRotateDescription = "A KMS key is not configured to auto-rotate."
View Source
const AWSNoKMSAutoRotateExplanation = `
You should configure your KMS keys to auto rotate to maintain security and defend against compromise.
`
View Source
const AWSNoKMSAutoRotateGoodExample = `
resource "aws_kms_key" "good_example" {
enable_key_rotation = true
}
`
View Source
const AWSNoKMSAutoRotateImpact = "Long life KMS keys increase the attack surface when compromised"
View Source
const AWSNoKMSAutoRotateResolution = "Configure KMS key to auto rotate"
View Source
const AWSOpenAllIngressNetworkACLRule = "AWS050"
View Source
const AWSOpenAllIngressNetworkACLRuleBadExample = `` /* 159-byte string literal not displayed */
View Source
const AWSOpenAllIngressNetworkACLRuleDescription = "An ingress Network ACL rule allows ALL ports from /0."
View Source
const AWSOpenAllIngressNetworkACLRuleExplanation = `` /* 207-byte string literal not displayed */
View Source
const AWSOpenAllIngressNetworkACLRuleGoodExample = `` /* 204-byte string literal not displayed */
View Source
const AWSOpenAllIngressNetworkACLRuleImpact = "All ports exposed for egressing data to the internet"
View Source
const AWSOpenAllIngressNetworkACLRuleResolution = "Set a more restrictive cidr range"
View Source
const AWSOpenEgressSecurityGroupInlineRule = "AWS009"
View Source
const AWSOpenEgressSecurityGroupInlineRuleBadExample = `
resource "aws_security_group" "bad_example" {
egress {
cidr_blocks = ["0.0.0.0/0"]
}
}
`
View Source
const AWSOpenEgressSecurityGroupInlineRuleDescription = "An inline egress security group rule allows traffic to /0."
View Source
const AWSOpenEgressSecurityGroupInlineRuleExplanation = `` /* 165-byte string literal not displayed */
View Source
const AWSOpenEgressSecurityGroupInlineRuleGoodExample = `
resource "aws_security_group" "good_example" {
egress {
cidr_blocks = ["1.2.3.4/32"]
}
}
`
View Source
const AWSOpenEgressSecurityGroupInlineRuleImpact = "The port is exposed for egressing data to the internet"
View Source
const AWSOpenEgressSecurityGroupInlineRuleResolution = "Set a more restrictive cidr range"
View Source
const AWSOpenEgressSecurityGroupRule = "AWS007"
View Source
const AWSOpenEgressSecurityGroupRuleBadExample = `
resource "aws_security_group_rule" "bad_example" {
type = "egress"
cidr_blocks = ["0.0.0.0/0"]
}
`
View Source
const AWSOpenEgressSecurityGroupRuleDescription = "An egress security group rule allows traffic to /0."
View Source
const AWSOpenEgressSecurityGroupRuleExplanation = `` /* 182-byte string literal not displayed */
View Source
const AWSOpenEgressSecurityGroupRuleGoodExample = `
resource "aws_security_group_rule" "good_example" {
type = "egress"
cidr_blocks = ["10.0.0.0/16"]
}
`
View Source
const AWSOpenEgressSecurityGroupRuleImpact = "Your port is egressing data to the internet"
View Source
const AWSOpenEgressSecurityGroupRuleResolution = "Set a more restrictive cidr range"
View Source
const AWSOpenIngressNetworkACLRule = "AWS049"
View Source
const AWSOpenIngressNetworkACLRuleBadExample = `` /* 203-byte string literal not displayed */
View Source
const AWSOpenIngressNetworkACLRuleDescription = "An ingress Network ACL rule allows specific ports from /0."
View Source
const AWSOpenIngressNetworkACLRuleExplanation = `` /* 163-byte string literal not displayed */
View Source
const AWSOpenIngressNetworkACLRuleGoodExample = `` /* 206-byte string literal not displayed */
View Source
const AWSOpenIngressNetworkACLRuleImpact = "The ports are exposed for ingressing data to the internet"
View Source
const AWSOpenIngressNetworkACLRuleResolution = "Set a more restrictive cidr range"
View Source
const AWSOpenIngressSecurityGroupInlineRule = "AWS008"
View Source
const AWSOpenIngressSecurityGroupInlineRuleBadExample = `
resource "aws_security_group" "bad_example" {
ingress {
cidr_blocks = ["0.0.0.0/0"]
}
}
`
View Source
const AWSOpenIngressSecurityGroupInlineRuleDescription = "An inline ingress security group rule allows traffic from /0."
View Source
const AWSOpenIngressSecurityGroupInlineRuleExplanation = `` /* 165-byte string literal not displayed */
View Source
const AWSOpenIngressSecurityGroupInlineRuleGoodExample = `
resource "aws_security_group" "good_example" {
ingress {
cidr_blocks = ["1.2.3.4/32"]
}
}
`
View Source
const AWSOpenIngressSecurityGroupInlineRuleImpact = "The port is exposed for ingress from the internet"
View Source
const AWSOpenIngressSecurityGroupInlineRuleResolution = "Set a more restrictive cidr range"
View Source
const AWSOpenIngressSecurityGroupRule = "AWS006"
View Source
const AWSOpenIngressSecurityGroupRuleBadExample = `
resource "aws_security_group_rule" "bad_example" {
type = "ingress"
cidr_blocks = ["0.0.0.0/0"]
}
`
View Source
const AWSOpenIngressSecurityGroupRuleDescription = "An ingress security group rule allows traffic from /0."
View Source
const AWSOpenIngressSecurityGroupRuleExplanation = `` /* 165-byte string literal not displayed */
View Source
const AWSOpenIngressSecurityGroupRuleGoodExample = `
resource "aws_security_group_rule" "good_example" {
type = "ingress"
cidr_blocks = ["10.0.0.0/16"]
}
`
View Source
const AWSOpenIngressSecurityGroupRuleImpact = "Your port exposed to the internet"
View Source
const AWSOpenIngressSecurityGroupRuleResolution = "Set a more restrictive cidr range"
View Source
const AWSOutdatedSSLPolicy = "AWS010"
View Source
const AWSOutdatedSSLPolicyBadExample = `
resource "aws_alb_listener" "bad_example" {
ssl_policy = "ELBSecurityPolicy-TLS-1-1-2017-01"
protocol = "HTTPS"
}
`
View Source
const AWSOutdatedSSLPolicyDescription = "An outdated SSL policy is in use by a load balancer."
View Source
const AWSOutdatedSSLPolicyExplanation = `
You should not use outdated/insecure TLS versions for encryption. You should be using TLS v1.2+.
`
View Source
const AWSOutdatedSSLPolicyGoodExample = `
resource "aws_alb_listener" "good_example" {
ssl_policy = "ELBSecurityPolicy-TLS-1-2-2017-01"
protocol = "HTTPS"
}
`
View Source
const AWSOutdatedSSLPolicyImpact = "The SSL policy is outdated and has known vulnerabilities"
View Source
const AWSOutdatedSSLPolicyResolution = "Use a more recent TLS/SSL policy for the load balancer"
View Source
const AWSOutdatedTLSPolicyElasticsearchDomainEndpoint = "AWS034"
View Source
const AWSOutdatedTLSPolicyElasticsearchDomainEndpointBadExample = `` /* 197-byte string literal not displayed */
View Source
const AWSOutdatedTLSPolicyElasticsearchDomainEndpointDescription = "Elasticsearch domain endpoint is using outdated TLS policy."
View Source
const AWSOutdatedTLSPolicyElasticsearchDomainEndpointExplanation = `
You should not use outdated/insecure TLS versions for encryption. You should be using TLS v1.2+.
`
View Source
const AWSOutdatedTLSPolicyElasticsearchDomainEndpointGoodExample = `` /* 198-byte string literal not displayed */
View Source
const AWSOutdatedTLSPolicyElasticsearchDomainEndpointImpact = "Outdated SSL policies increase exposure to known vulnerabilities"
View Source
const AWSOutdatedTLSPolicyElasticsearchDomainEndpointResolution = "Use the most modern TLS/SSL policies available"
View Source
const AWSPlainHTTP = "AWS004"
View Source
const AWSPlainHTTPBadExample = `
resource "aws_alb_listener" "bad_example" {
protocol = "HTTP"
}
`
View Source
const AWSPlainHTTPDescription = "Use of plain HTTP."
View Source
const AWSPlainHTTPExplanation = `` /* 309-byte string literal not displayed */
View Source
const AWSPlainHTTPGoodExample = `
resource "aws_alb_listener" "good_example" {
protocol = "HTTPS"
}
`
View Source
const AWSPlainHTTPImpact = "Your traffic is not protected"
View Source
const AWSPlainHTTPResolution = "Switch to HTTPS to benefit from TLS security features"
View Source
const AWSPlaintextNodeToNodeElasticsearchTraffic = "AWS032"
View Source
const AWSPlaintextNodeToNodeElasticsearchTrafficBadExample = `` /* 137-byte string literal not displayed */
View Source
const AWSPlaintextNodeToNodeElasticsearchTrafficDescription = "Elasticsearch domain uses plaintext traffic for node to node communication."
View Source
const AWSPlaintextNodeToNodeElasticsearchTrafficExplanation = `
Traffic flowing between Elasticsearch nodes should be encrypted to ensure sensitive data is kept private.
`
View Source
const AWSPlaintextNodeToNodeElasticsearchTrafficGoodExample = `` /* 137-byte string literal not displayed */
View Source
const AWSPlaintextNodeToNodeElasticsearchTrafficImpact = "In transit data between nodes could be read if intercepted"
View Source
const AWSPlaintextNodeToNodeElasticsearchTrafficResolution = "Enable encrypted node to node communication"
View Source
const AWSProviderHasAccessCredentials = "AWS044"
View Source
const AWSProviderHasAccessCredentialsBadExample = `
provider "aws" {
access_key = "AKIAABCD12ABCDEF1ABC"
secret_key = "s8d7ghas9dghd9ophgs9"
}
`
View Source
const AWSProviderHasAccessCredentialsDescription = "AWS provider has access credentials specified."
View Source
const AWSProviderHasAccessCredentialsExplanation = `` /* 138-byte string literal not displayed */
View Source
const AWSProviderHasAccessCredentialsGoodExample = `
provider "aws" {
}
`
View Source
const AWSProviderHasAccessCredentialsImpact = "Exposing the credentials in the Terraform provider increases the risk of secret leakage"
View Source
const AWSProviderHasAccessCredentialsResolution = "Don't include access credentials in plain text"
View Source
const AWSPubliclyAccessibleResource = "AWS011"
View Source
const AWSPubliclyAccessibleResourceBadExample = `
resource "aws_db_instance" "bad_example" {
publicly_accessible = true
}
`
View Source
const AWSPubliclyAccessibleResourceDescription = "A database resource is marked as publicly accessible."
View Source
const AWSPubliclyAccessibleResourceExplanation = `` /* 146-byte string literal not displayed */
View Source
const AWSPubliclyAccessibleResourceGoodExample = `
resource "aws_db_instance" "good_example" {
publicly_accessible = false
}
`
View Source
const AWSPubliclyAccessibleResourceImpact = "The database instance is publicly accessible"
View Source
const AWSPubliclyAccessibleResourceResolution = "Set the database to not be publicly accessible"
View Source
const AWSRDSAuroraClusterEncryptionDisabled = "AWS051"
View Source
const AWSRDSAuroraClusterEncryptionDisabledBadExample = `
resource "aws_rds_cluster" "bad_example" {
name = "bar"
kms_key_id = ""
}`
View Source
const AWSRDSAuroraClusterEncryptionDisabledDescription = "There is no encryption specified or encryption is disabled on the RDS Cluster."
View Source
const AWSRDSAuroraClusterEncryptionDisabledExplanation = `` /* 160-byte string literal not displayed */
View Source
const AWSRDSAuroraClusterEncryptionDisabledGoodExample = `` /* 195-byte string literal not displayed */
View Source
const AWSRDSAuroraClusterEncryptionDisabledImpact = "Data can be read from the RDS cluster if it is compromised"
View Source
const AWSRDSAuroraClusterEncryptionDisabledResolution = "Enable encryption for RDS clusters and instances"
View Source
const AWSRDSEncryptionNotEnabled = "AWS052"
View Source
const AWSRDSEncryptionNotEnabledBadExample = `
resource "aws_db_instance" "bad_example" {
}
`
View Source
const AWSRDSEncryptionNotEnabledDescription = "RDS encryption has not been enabled at a DB Instance level."
View Source
const AWSRDSEncryptionNotEnabledExplanation = `
Encryption should be enabled for an RDS Database instances.
When enabling encryption by setting the kms_key_id.
`
View Source
const AWSRDSEncryptionNotEnabledGoodExample = `
resource "aws_db_instance" "good_example" {
storage_encrypted = true
}
`
View Source
const AWSRDSEncryptionNotEnabledImpact = "Data can be read from the RDS instances if it is compromised"
View Source
const AWSRDSEncryptionNotEnabledResolution = "Enable encryption for RDS clusters and instances"
View Source
const AWSRDSPerformanceInsughtsEncryptionNotEnabled = "AWS053"
View Source
const AWSRDSPerformanceInsughtsEncryptionNotEnabledBadExample = `` /* 163-byte string literal not displayed */
View Source
const AWSRDSPerformanceInsughtsEncryptionNotEnabledDescription = "Encryption for RDS Performance Insights should be enabled."
View Source
const AWSRDSPerformanceInsughtsEncryptionNotEnabledExplanation = `
When enabling Performance Insights on an RDS cluster or RDS DB Instance, and encryption key should be provided.
The encryption key specified in ` + "`" + `performance_insights_kms_key_id` + "`" + ` references a KMS ARN
`
View Source
const AWSRDSPerformanceInsughtsEncryptionNotEnabledGoodExample = `` /* 239-byte string literal not displayed */
View Source
const AWSRDSPerformanceInsughtsEncryptionNotEnabledImpact = "Data can be read from the RDS Performance Insights if it is compromised"
View Source
const AWSRDSPerformanceInsughtsEncryptionNotEnabledResolution = "Enable encryption for RDS clusters and instances"
View Source
const AWSRDSRetentionPeriod = "AWS091"
View Source
const AWSRDSRetentionPeriodBadExample = `` /* 745-byte string literal not displayed */
View Source
const AWSRDSRetentionPeriodDescription = "RDS Cluster and RDS instance should have backup retention longer than default 1 day"
View Source
const AWSRDSRetentionPeriodExplanation = `` /* 210-byte string literal not displayed */
View Source
const AWSRDSRetentionPeriodGoodExample = `` /* 807-byte string literal not displayed */
View Source
const AWSRDSRetentionPeriodImpact = "Potential loss of data and short opportunity for recovery"
View Source
const AWSRDSRetentionPeriodResolution = "Explicitly set the retention period to greater than the default"
View Source
const AWSRedisClusterBackupRetention = "AWS088"
View Source
const AWSRedisClusterBackupRetentionBadExample = `` /* 300-byte string literal not displayed */
View Source
const AWSRedisClusterBackupRetentionDescription = "Redis cluster should have backup retention turned on"
View Source
const AWSRedisClusterBackupRetentionExplanation = `
Redis clusters should have a snapshot retention time to ensure that they are backed up and can be restored if required.
`
View Source
const AWSRedisClusterBackupRetentionGoodExample = `` /* 332-byte string literal not displayed */
View Source
const AWSRedisClusterBackupRetentionImpact = "Without backups of the redis cluster recovery is made difficult"
View Source
const AWSRedisClusterBackupRetentionResolution = "Configure snapshot retention for redis cluster"
View Source
const AWSRedshiftAtRestEncryption = "AWS094"
View Source
const AWSRedshiftAtRestEncryptionBadExample = `` /* 270-byte string literal not displayed */
View Source
const AWSRedshiftAtRestEncryptionDescription = "Redshift clusters should use at rest encryption"
View Source
const AWSRedshiftAtRestEncryptionExplanation = `` /* 170-byte string literal not displayed */
View Source
const AWSRedshiftAtRestEncryptionGoodExample = `` /* 417-byte string literal not displayed */
View Source
const AWSRedshiftAtRestEncryptionImpact = "Data may be leaked if infrastructure is compromised"
View Source
const AWSRedshiftAtRestEncryptionResolution = "Enable encryption using CMK"
View Source
const AWSRedshiftNotDeployedInEC2Classic = "AWS087"
View Source
const AWSRedshiftNotDeployedInEC2ClassicBadExample = `` /* 264-byte string literal not displayed */
View Source
const AWSRedshiftNotDeployedInEC2ClassicDescription = "Redshift cluster should be deployed into a specific VPC"
View Source
const AWSRedshiftNotDeployedInEC2ClassicExplanation = `` /* 288-byte string literal not displayed */
View Source
const AWSRedshiftNotDeployedInEC2ClassicGoodExample = `` /* 313-byte string literal not displayed */
View Source
const AWSRedshiftNotDeployedInEC2ClassicImpact = "Redshift cluster does not benefit from VPC security if it is deployed in EC2 classic mode"
View Source
const AWSRedshiftNotDeployedInEC2ClassicResolution = "Deploy Redshift cluster into a non default VPC"
View Source
const AWSResourceHasPublicIP = "AWS012"
View Source
const AWSResourceHasPublicIPBadExample = `
resource "aws_launch_configuration" "bad_example" {
associate_public_ip_address = true
}
`
View Source
const AWSResourceHasPublicIPDescription = "A resource has a public IP address."
View Source
const AWSResourceHasPublicIPExplanation = `` /* 218-byte string literal not displayed */
View Source
const AWSResourceHasPublicIPGoodExample = `
resource "aws_launch_configuration" "good_example" {
associate_public_ip_address = false
}
`
View Source
const AWSResourceHasPublicIPImpact = "The instance or configuration is publicly accessible"
View Source
const AWSResourceHasPublicIPResolution = "Set the instance to not be publicly accessible"
View Source
const AWSRestrictPublicBucketS3 = "AWS075"
View Source
const AWSRestrictPublicBucketS3BadExample = `` /* 234-byte string literal not displayed */
View Source
const AWSRestrictPublicBucketS3Description = "S3 Access block should restrict public bucket to limit access"
View Source
const AWSRestrictPublicBucketS3Explanation = `` /* 179-byte string literal not displayed */
View Source
const AWSRestrictPublicBucketS3GoodExample = `` /* 135-byte string literal not displayed */
View Source
const AWSRestrictPublicBucketS3Impact = "Public buckets can be accessed by anyone"
View Source
const AWSRestrictPublicBucketS3Resolution = "Limit the access to public buckets to only the owner or AWS Services (eg; CloudFront)"
View Source
const AWSS3BucketShouldHavePublicAccessBlock = "AWS098"
View Source
const AWSS3BucketShouldHavePublicAccessBlockBadExample = `
resource "aws_s3_bucket" "example" {
bucket = "example"
acl = "private-read"
}
`
View Source
const AWSS3BucketShouldHavePublicAccessBlockDescription = "S3 buckets should each define an aws_s3_bucket_public_access_block"
View Source
const AWSS3BucketShouldHavePublicAccessBlockExplanation = `` /* 337-byte string literal not displayed */
View Source
const AWSS3BucketShouldHavePublicAccessBlockGoodExample = `` /* 235-byte string literal not displayed */
View Source
const AWSS3BucketShouldHavePublicAccessBlockImpact = "Public access policies may be applied to sensitive data buckets"
View Source
const AWSS3BucketShouldHavePublicAccessBlockResolution = "Define a aws_s3_bucket_public_access_block for the given bucket to control public access policies"
View Source
const AWSS3DataShouldBeVersioned = "AWS077"
View Source
const AWSS3DataShouldBeVersionedBadExample = `
resource "aws_s3_bucket" "bad_example" {
}
`
View Source
const AWSS3DataShouldBeVersionedDescription = "S3 Data should be versioned"
View Source
const AWSS3DataShouldBeVersionedExplanation = `` /* 331-byte string literal not displayed */
View Source
const AWSS3DataShouldBeVersionedGoodExample = `
resource "aws_s3_bucket" "good_example" {
versioning {
enabled = true
}
}
`
View Source
const AWSS3DataShouldBeVersionedImpact = "Deleted or modified data would not be recoverable"
View Source
const AWSS3DataShouldBeVersionedResolution = "Enable versioning to protect against accidental/malicious removal or modification"
View Source
const AWSSecretsManagerSecretEncryption = "AWS095"
View Source
const AWSSecretsManagerSecretEncryptionBadExample = `
resource "aws_secretsmanager_secret" "bad_example" {
name = "lambda_password"
}
`
View Source
const AWSSecretsManagerSecretEncryptionDescription = "Secrets Manager should use customer managed keys"
View Source
const AWSSecretsManagerSecretEncryptionExplanation = `` /* 170-byte string literal not displayed */
View Source
const AWSSecretsManagerSecretEncryptionGoodExample = `` /* 195-byte string literal not displayed */
View Source
const AWSSecretsManagerSecretEncryptionImpact = "Using AWS managed keys reduces the flexibility and control over the encryption key"
View Source
const AWSSecretsManagerSecretEncryptionResolution = "Use customer managed keys"
View Source
const AWSSqsPolicyWildcardActions = "AWS047"
View Source
const AWSSqsPolicyWildcardActionsBadExample = `` /* 218-byte string literal not displayed */
View Source
const AWSSqsPolicyWildcardActionsDescription = "AWS SQS policy document has wildcard action statement."
View Source
const AWSSqsPolicyWildcardActionsExplanation = `` /* 216-byte string literal not displayed */
View Source
const AWSSqsPolicyWildcardActionsGoodExample = `` /* 233-byte string literal not displayed */
View Source
const AWSSqsPolicyWildcardActionsImpact = "SQS policies with wildcard actions allow more that is required"
View Source
const AWSSqsPolicyWildcardActionsResolution = "Keep policy scope to the minimum that is required to be effective"
View Source
const AWSTaskDefinitionWithSensitiveEnvironmentVariables = "AWS013"
View Source
const AWSTaskDefinitionWithSensitiveEnvironmentVariablesBadExample = `` /* 313-byte string literal not displayed */
View Source
const AWSTaskDefinitionWithSensitiveEnvironmentVariablesDescription = "Task definition defines sensitive environment variable(s)."
View Source
const AWSTaskDefinitionWithSensitiveEnvironmentVariablesExplanation = `` /* 178-byte string literal not displayed */
View Source
const AWSTaskDefinitionWithSensitiveEnvironmentVariablesGoodExample = `` /* 255-byte string literal not displayed */
View Source
const AWSTaskDefinitionWithSensitiveEnvironmentVariablesImpact = "Sensitive data could be exposed in the AWS Management Console"
View Source
const AWSTaskDefinitionWithSensitiveEnvironmentVariablesResolution = "Use secrets for the task definition"
View Source
const AWSUnencryptedAtRestElasticacheReplicationGroup = "AWS035"
View Source
const AWSUnencryptedAtRestElasticacheReplicationGroupBadExample = `` /* 202-byte string literal not displayed */
View Source
const AWSUnencryptedAtRestElasticacheReplicationGroupDescription = "Unencrypted Elasticache Replication Group."
View Source
const AWSUnencryptedAtRestElasticacheReplicationGroupExplanation = `` /* 139-byte string literal not displayed */
View Source
const AWSUnencryptedAtRestElasticacheReplicationGroupGoodExample = `` /* 202-byte string literal not displayed */
View Source
const AWSUnencryptedAtRestElasticacheReplicationGroupImpact = "Data in the replication group could be readable if compromised"
View Source
const AWSUnencryptedAtRestElasticacheReplicationGroupResolution = "Enable encryption for replication group"
View Source
const AWSUnencryptedCloudFrontCommunications = "AWS020"
View Source
const AWSUnencryptedCloudFrontCommunicationsBadExample = `` /* 131-byte string literal not displayed */
View Source
const AWSUnencryptedCloudFrontCommunicationsDescription = "CloudFront distribution allows unencrypted (HTTP) communications."
View Source
const AWSUnencryptedCloudFrontCommunicationsExplanation = `` /* 309-byte string literal not displayed */
View Source
const AWSUnencryptedCloudFrontCommunicationsGoodExample = `` /* 140-byte string literal not displayed */
View Source
const AWSUnencryptedCloudFrontCommunicationsImpact = "CloudFront is available through an unencrypted connection"
View Source
const AWSUnencryptedCloudFrontCommunicationsResolution = "Only allow HTTPS for CloudFront distribution communication"
View Source
const AWSUnencryptedElasticsearchDomain = "AWS031"
View Source
const AWSUnencryptedElasticsearchDomainBadExample = `` /* 129-byte string literal not displayed */
View Source
const AWSUnencryptedElasticsearchDomainDescription = "Elasticsearch domain isn't encrypted at rest."
View Source
const AWSUnencryptedElasticsearchDomainExplanation = `` /* 142-byte string literal not displayed */
View Source
const AWSUnencryptedElasticsearchDomainGoodExample = `` /* 129-byte string literal not displayed */
View Source
const AWSUnencryptedElasticsearchDomainImpact = "Data will be readable if compromised"
View Source
const AWSUnencryptedElasticsearchDomainResolution = "Enable ElasticSearch domain encryption"
View Source
const AWSUnencryptedInTransitElasticacheReplicationGroup = "AWS036"
View Source
const AWSUnencryptedInTransitElasticacheReplicationGroupBadExample = `` /* 202-byte string literal not displayed */
View Source
const AWSUnencryptedInTransitElasticacheReplicationGroupDescription = "Elasticache Replication Group uses unencrypted traffic."
View Source
const AWSUnencryptedInTransitElasticacheReplicationGroupExplanation = `
Traffic flowing between Elasticache replication nodes should be encrypted to ensure sensitive data is kept private.
`
View Source
const AWSUnencryptedInTransitElasticacheReplicationGroupGoodExample = `` /* 202-byte string literal not displayed */
View Source
const AWSUnencryptedInTransitElasticacheReplicationGroupImpact = "In transit data in the Replication Group could be read if intercepted"
View Source
const AWSUnencryptedInTransitElasticacheReplicationGroupResolution = "Enable in transit encryptuon for replication group"
View Source
const AWSUnencryptedKinesisStream = "AWS024"
View Source
const AWSUnencryptedKinesisStreamBadExample = `
resource "aws_kinesis_stream" "bad_example" {
encryption_type = "NONE"
}
`
View Source
const AWSUnencryptedKinesisStreamDescription = "Kinesis stream is unencrypted."
View Source
const AWSUnencryptedKinesisStreamExplanation = `` /* 178-byte string literal not displayed */
View Source
const AWSUnencryptedKinesisStreamGoodExample = `
resource "aws_kinesis_stream" "good_example" {
encryption_type = "KMS"
kms_key_id = "my/special/key"
}
`
View Source
const AWSUnencryptedKinesisStreamImpact = "Intercepted data can be read in transit"
View Source
const AWSUnencryptedKinesisStreamResolution = "Enable in transit encryption"
View Source
const AWSUnencryptedMSKBroker = "AWS022"
View Source
const AWSUnencryptedMSKBrokerBadExample = `` /* 154-byte string literal not displayed */
View Source
const AWSUnencryptedMSKBrokerDescription = "A MSK cluster allows unencrypted data in transit."
View Source
const AWSUnencryptedMSKBrokerExplanation = `` /* 136-byte string literal not displayed */
View Source
const AWSUnencryptedMSKBrokerGoodExample = `` /* 145-byte string literal not displayed */
View Source
const AWSUnencryptedMSKBrokerImpact = "Intercepted data can be read in transit"
View Source
const AWSUnencryptedMSKBrokerResolution = "Enable in transit encryption"
View Source
const AWSUnencryptedS3Bucket = "AWS017"
View Source
const AWSUnencryptedS3BucketBadExample = `
resource "aws_s3_bucket" "bad_example" {
bucket = "mybucket"
}
`
View Source
const AWSUnencryptedS3BucketDescription = "Unencrypted S3 bucket."
View Source
const AWSUnencryptedS3BucketExplanation = `` /* 165-byte string literal not displayed */
View Source
const AWSUnencryptedS3BucketGoodExample = `` /* 258-byte string literal not displayed */
View Source
const AWSUnencryptedS3BucketImpact = "The bucket objects could be read if compromised"
View Source
const AWSUnencryptedS3BucketResolution = "Configure bucket encryption"
View Source
const AWSUnencryptedSNSTopic = "AWS016"
View Source
const AWSUnencryptedSNSTopicBadExample = `
resource "aws_sns_topic" "bad_example" {
# no key id specified
}
`
View Source
const AWSUnencryptedSNSTopicDescription = "Unencrypted SNS topic."
View Source
const AWSUnencryptedSNSTopicExplanation = `` /* 160-byte string literal not displayed */
View Source
const AWSUnencryptedSNSTopicGoodExample = `
resource "aws_sns_topic" "good_example" {
kms_master_key_id = "/blah"
}
`
View Source
const AWSUnencryptedSNSTopicImpact = "The SNS topic messages could be read if compromised"
View Source
const AWSUnencryptedSNSTopicResolution = "Turn on SNS Topic encryption"
View Source
const AWSUnencryptedSQSQueue = "AWS015"
View Source
const AWSUnencryptedSQSQueueBadExample = `
resource "aws_sqs_queue" "bad_example" {
# no key specified
}
`
View Source
const AWSUnencryptedSQSQueueDescription = "Unencrypted SQS queue."
View Source
const AWSUnencryptedSQSQueueExplanation = `` /* 160-byte string literal not displayed */
View Source
const AWSUnencryptedSQSQueueGoodExample = `
resource "aws_sqs_queue" "good_example" {
kms_master_key_id = "/blah"
}
`
View Source
const AWSUnencryptedSQSQueueImpact = "The SQS queue messages could be read if compromised"
View Source
const AWSUnencryptedSQSQueueResolution = "Turn on SQS Queue encryption"
View Source
const AWSUnenforcedHTTPSElasticsearchDomainEndpoint = "AWS033"
View Source
const AWSUnenforcedHTTPSElasticsearchDomainEndpointBadExample = `` /* 143-byte string literal not displayed */
View Source
const AWSUnenforcedHTTPSElasticsearchDomainEndpointDescription = "Elasticsearch doesn't enforce HTTPS traffic."
View Source
const AWSUnenforcedHTTPSElasticsearchDomainEndpointExplanation = `` /* 309-byte string literal not displayed */
View Source
const AWSUnenforcedHTTPSElasticsearchDomainEndpointGoodExample = `` /* 143-byte string literal not displayed */
View Source
const AWSUnenforcedHTTPSElasticsearchDomainEndpointImpact = "HTTP traffic can be intercepted and the contents read"
View Source
const AWSUnenforcedHTTPSElasticsearchDomainEndpointResolution = "Enforce the use of HTTPS for ElasticSearch"
View Source
const AZUAKSAPIServerAuthorizedIPRanges = "AZU008"
View Source
const AZUAKSAPIServerAuthorizedIPRangesBadExample = `
resource "azurerm_kubernetes_cluster" "bad_example" {
}
`
View Source
const AZUAKSAPIServerAuthorizedIPRangesDescription = "Ensure AKS has an API Server Authorized IP Ranges enabled"
View Source
const AZUAKSAPIServerAuthorizedIPRangesExplanation = `` /* 206-byte string literal not displayed */
View Source
const AZUAKSAPIServerAuthorizedIPRangesGoodExample = `
resource "azurerm_kubernetes_cluster" "good_example" {
api_server_authorized_ip_ranges = [
"1.2.3.4/32"
]
}
`
View Source
const AZUAKSAPIServerAuthorizedIPRangesImpact = "Any IP can interact with the API server"
View Source
const AZUAKSAPIServerAuthorizedIPRangesResolution = "Limit the access to the API server to a limited IP range"
View Source
const AZUAKSAzureMonitor = "AZU009"
View Source
const AZUAKSAzureMonitorBadExample = `
resource "azurerm_kubernetes_cluster" "bad_example" {
addon_profile {}
}
`
View Source
const AZUAKSAzureMonitorDescription = "Ensure AKS logging to Azure Monitoring is Configured"
View Source
const AZUAKSAzureMonitorExplanation = `
Ensure AKS logging to Azure Monitoring is configured for containers to monitor the performance of workloads.
`
View Source
const AZUAKSAzureMonitorGoodExample = `
resource "azurerm_kubernetes_cluster" "good_example" {
addon_profile {
oms_agent {
enabled = true
}
}
}
`
View Source
const AZUAKSAzureMonitorImpact = "Logging provides valuable information about access and usage"
View Source
const AZUAKSAzureMonitorResolution = "Enable logging for AKS"
View Source
const AZUAKSClusterNetworkPolicy = "AZU006"
View Source
const AZUAKSClusterNetworkPolicyBadExample = `
resource "azurerm_kubernetes_cluster" "bad_example" {
network_profile {
}
}
`
View Source
const AZUAKSClusterNetworkPolicyDescription = "Ensure AKS cluster has Network Policy configured"
View Source
const AZUAKSClusterNetworkPolicyExplanation = `` /* 253-byte string literal not displayed */
View Source
const AZUAKSClusterNetworkPolicyGoodExample = `
resource "azurerm_kubernetes_cluster" "good_example" {
network_profile {
network_policy = "calico"
}
}
`
View Source
const AZUAKSClusterNetworkPolicyImpact = "No network policy is protecting the AKS cluster"
View Source
const AZUAKSClusterNetworkPolicyResolution = "Configure a network policy"
View Source
const AZUAKSClusterRBACenabled = "AZU007"
View Source
const AZUAKSClusterRBACenabledBadExample = `
resource "azurerm_kubernetes_cluster" "bad_example" {
role_based_access_control {
enabled = false
}
}
`
View Source
const AZUAKSClusterRBACenabledDescription = "Ensure RBAC is enabled on AKS clusters"
View Source
const AZUAKSClusterRBACenabledExplanation = `` /* 142-byte string literal not displayed */
View Source
const AZUAKSClusterRBACenabledGoodExample = `
resource "azurerm_kubernetes_cluster" "good_example" {
role_based_access_control {
enabled = true
}
}
`
View Source
const AZUAKSClusterRBACenabledImpact = "No role based access control is in place for the AKS cluster"
View Source
const AZUAKSClusterRBACenabledResolution = "Enable RBAC"
View Source
const AZUBlobStorageContainerNoPublicAccess = "AZU011"
View Source
const AZUBlobStorageContainerNoPublicAccessBadExample = `` /* 188-byte string literal not displayed */
View Source
const AZUBlobStorageContainerNoPublicAccessDescription = "Storage containers in blob storage mode should not have public access"
View Source
const AZUBlobStorageContainerNoPublicAccessExplanation = `` /* 248-byte string literal not displayed */
View Source
const AZUBlobStorageContainerNoPublicAccessGoodExample = `` /* 188-byte string literal not displayed */
View Source
const AZUBlobStorageContainerNoPublicAccessImpact = "Data in the storage container could be exposed publicly"
View Source
const AZUBlobStorageContainerNoPublicAccessResolution = "Disable public access to storage containers"
View Source
const AZUDataFactoryPublicNetwork = "AZU025"
View Source
const AZUDataFactoryPublicNetworkBadExample = `` /* 209-byte string literal not displayed */
View Source
const AZUDataFactoryPublicNetworkDescription = "Data Factory should have public access disabled, the default is enabled."
View Source
const AZUDataFactoryPublicNetworkExplanation = `` /* 245-byte string literal not displayed */
View Source
const AZUDataFactoryPublicNetworkGoodExample = `` /* 243-byte string literal not displayed */
View Source
const AZUDataFactoryPublicNetworkImpact = "Data factory is publicly accessible"
View Source
const AZUDataFactoryPublicNetworkResolution = "Set public access to disabled for Data Factory"
View Source
const AZUDatabaseAuditingRetention90Days = "AZU019"
View Source
const AZUDatabaseAuditingRetention90DaysBadExample = `` /* 445-byte string literal not displayed */
View Source
const AZUDatabaseAuditingRetention90DaysDescription = "Database auditing rentention period should be longer than 90 days"
View Source
const AZUDatabaseAuditingRetention90DaysExplanation = `` /* 212-byte string literal not displayed */
View Source
const AZUDatabaseAuditingRetention90DaysGoodExample = `` /* 847-byte string literal not displayed */
View Source
const AZUDatabaseAuditingRetention90DaysImpact = "Short logging retention could result in missing valuable historical information"
View Source
const AZUDatabaseAuditingRetention90DaysResolution = "Set retention periods of database auditing to greater than 90 days"
View Source
const AZUDefaultActionOnNetworkRuleSetToDeny = "AZU012"
View Source
const AZUDefaultActionOnNetworkRuleSetToDenyBadExample = `` /* 254-byte string literal not displayed */
View Source
const AZUDefaultActionOnNetworkRuleSetToDenyDescription = "The default action on Storage account network rules should be set to deny"
View Source
const AZUDefaultActionOnNetworkRuleSetToDenyExplanation = `` /* 138-byte string literal not displayed */
View Source
const AZUDefaultActionOnNetworkRuleSetToDenyGoodExample = `` /* 254-byte string literal not displayed */
View Source
const AZUDefaultActionOnNetworkRuleSetToDenyImpact = "Network rules that allow could cause data to be exposed publicly"
View Source
const AZUDefaultActionOnNetworkRuleSetToDenyResolution = "Set network rules to deny"
View Source
const AZUFunctionAppHTTPS = "AZU028"
View Source
const AZUFunctionAppHTTPSBadExample = `` /* 499-byte string literal not displayed */
View Source
const AZUFunctionAppHTTPSDescription = "Ensure the Function App can only be accessed via HTTPS. The default is false."
View Source
const AZUFunctionAppHTTPSExplanation = `` /* 233-byte string literal not displayed */
View Source
const AZUFunctionAppHTTPSGoodExample = `` /* 536-byte string literal not displayed */
View Source
const AZUFunctionAppHTTPSImpact = "Anyone can access the Function App using HTTP."
View Source
const AZUFunctionAppHTTPSResolution = "You can redirect all HTTP requests to the HTTPS port."
View Source
const AZUKeyVaultKeyExpirationDate = "AZU026"
View Source
const AZUKeyVaultKeyExpirationDateBadExample = `` /* 292-byte string literal not displayed */
View Source
const AZUKeyVaultKeyExpirationDateDescription = "Ensure that the expiration date is set on all keys"
View Source
const AZUKeyVaultKeyExpirationDateExplanation = `` /* 130-byte string literal not displayed */
View Source
const AZUKeyVaultKeyExpirationDateGoodExample = `` /* 336-byte string literal not displayed */
View Source
const AZUKeyVaultKeyExpirationDateImpact = "Long life keys increase the attack surface when compromised"
View Source
const AZUKeyVaultKeyExpirationDateResolution = "Set an expiration date on the vault key"
View Source
const AZUKeyVaultNetworkAcl = "AZU020"
View Source
const AZUKeyVaultNetworkAclBadExample = `` /* 293-byte string literal not displayed */
View Source
const AZUKeyVaultNetworkAclDescription = "Key vault should have the network acl block specified"
View Source
const AZUKeyVaultNetworkAclExplanation = `` /* 233-byte string literal not displayed */
View Source
const AZUKeyVaultNetworkAclGoodExample = `` /* 386-byte string literal not displayed */
View Source
const AZUKeyVaultNetworkAclImpact = "Without a network ACL the key vault is freely accessible"
View Source
const AZUKeyVaultNetworkAclResolution = "Set a network ACL for the key vault"
View Source
const AZUKeyVaultPurgeProtection = "AZU021"
View Source
const AZUKeyVaultPurgeProtectionBadExample = `` /* 257-byte string literal not displayed */
View Source
const AZUKeyVaultPurgeProtectionDescription = "Key vault should have purge protection enabled"
View Source
const AZUKeyVaultPurgeProtectionExplanation = `` /* 193-byte string literal not displayed */
View Source
const AZUKeyVaultPurgeProtectionGoodExample = `` /* 294-byte string literal not displayed */
View Source
const AZUKeyVaultPurgeProtectionImpact = "Keys could be purged from the vault without protection"
View Source
const AZUKeyVaultPurgeProtectionResolution = "Enable purge protection for key vaults"
View Source
const AZUKeyVaultSecretContentType = "AZU022"
View Source
const AZUKeyVaultSecretContentTypeBadExample = `` /* 161-byte string literal not displayed */
View Source
const AZUKeyVaultSecretContentTypeDescription = "Key vault Secret should have a content type set"
View Source
const AZUKeyVaultSecretContentTypeExplanation = `` /* 351-byte string literal not displayed */
View Source
const AZUKeyVaultSecretContentTypeGoodExample = `` /* 190-byte string literal not displayed */
View Source
const AZUKeyVaultSecretContentTypeImpact = "The secret's type is unclear without a content type"
View Source
const AZUKeyVaultSecretContentTypeResolution = "Provide content type for secrets to aid interpretation on retrieval"
View Source
const AZUKeyVaultSecretExpirationDate = "AZU023"
View Source
const AZUKeyVaultSecretExpirationDateBadExample = `` /* 161-byte string literal not displayed */
View Source
const AZUKeyVaultSecretExpirationDateDescription = "Key Vault Secret should have an expiration date set"
View Source
const AZUKeyVaultSecretExpirationDateExplanation = `` /* 133-byte string literal not displayed */
View Source
const AZUKeyVaultSecretExpirationDateGoodExample = `` /* 214-byte string literal not displayed */
View Source
const AZUKeyVaultSecretExpirationDateImpact = "Long life secrets increase the opportunity for compromise"
View Source
const AZUKeyVaultSecretExpirationDateResolution = "Set an expiry for secrets"
View Source
const AZUMinTLSForStorageAccountsSet = "AZU015"
View Source
const AZUMinTLSForStorageAccountsSetBadExample = `` /* 238-byte string literal not displayed */
View Source
const AZUMinTLSForStorageAccountsSetDescription = "The minimum TLS version for Storage Accounts should be TLS1_2"
View Source
const AZUMinTLSForStorageAccountsSetExplanation = `` /* 280-byte string literal not displayed */
View Source
const AZUMinTLSForStorageAccountsSetGoodExample = `` /* 277-byte string literal not displayed */
View Source
const AZUMinTLSForStorageAccountsSetImpact = "The TLS version being outdated and has known vulnerabilities"
View Source
const AZUMinTLSForStorageAccountsSetResolution = "Use a more recent TLS/SSL policy for the load balancer"
View Source
const AZUQueueStorageAnalyticsTurnedOn = "AZU016"
View Source
const AZUQueueStorageAnalyticsTurnedOnBadExample = `` /* 350-byte string literal not displayed */
View Source
const AZUQueueStorageAnalyticsTurnedOnDescription = "When using Queue Services for a storage account, logging should be enabled."
View Source
const AZUQueueStorageAnalyticsTurnedOnExplanation = `` /* 259-byte string literal not displayed */
View Source
const AZUQueueStorageAnalyticsTurnedOnGoodExample = `` /* 555-byte string literal not displayed */
View Source
const AZUQueueStorageAnalyticsTurnedOnImpact = "Logging provides valuable information about access and usage"
View Source
const AZUQueueStorageAnalyticsTurnedOnResolution = "Enable logging for Queue Services"
View Source
const AZURDPAccessNotAllowedFromInternet = "AZU024"
View Source
const AZURDPAccessNotAllowedFromInternetBadExample = `` /* 825-byte string literal not displayed */
View Source
const AZURDPAccessNotAllowedFromInternetDescription = "RDP access should not be accessible from the Internet, should be blocked on port 3389"
View Source
const AZURDPAccessNotAllowedFromInternetExplanation = `` /* 236-byte string literal not displayed */
View Source
const AZURDPAccessNotAllowedFromInternetGoodExample = `` /* 847-byte string literal not displayed */
View Source
const AZURDPAccessNotAllowedFromInternetImpact = "Anyone from the internet can potentially RDP onto an instance"
View Source
const AZURDPAccessNotAllowedFromInternetResolution = "Block RDP port from internet"
View Source
const AZURequireSecureTransferForStorageAccounts = "AZU014"
View Source
const AZURequireSecureTransferForStorageAccountsBadExample = `` /* 354-byte string literal not displayed */
View Source
const AZURequireSecureTransferForStorageAccountsDescription = "Storage accounts should be configured to only accept transfers that are over secure connections"
View Source
const AZURequireSecureTransferForStorageAccountsExplanation = `` /* 362-byte string literal not displayed */
View Source
const AZURequireSecureTransferForStorageAccountsGoodExample = `` /* 354-byte string literal not displayed */
View Source
const AZURequireSecureTransferForStorageAccountsImpact = "Insecure transfer of data into secure accounts could be read if intercepted"
View Source
const AZURequireSecureTransferForStorageAccountsResolution = "Only allow secure connection for transferring data into storage accounts"
View Source
const AZUSQLDatabaseAuditingEnabled = "AZU018"
View Source
const AZUSQLDatabaseAuditingEnabledBadExample = `` /* 375-byte string literal not displayed */
View Source
const AZUSQLDatabaseAuditingEnabledDescription = "Auditing should be enabled on Azure SQL Databases"
View Source
const AZUSQLDatabaseAuditingEnabledExplanation = `` /* 204-byte string literal not displayed */
View Source
const AZUSQLDatabaseAuditingEnabledGoodExample = `` /* 706-byte string literal not displayed */
View Source
const AZUSQLDatabaseAuditingEnabledImpact = "Auditing provides valuable information about access and usage"
View Source
const AZUSQLDatabaseAuditingEnabledResolution = "Enable auditing on Azure SQL databases"
View Source
const AZUSSHAccessNotAllowedFromInternet = "AZU017"
View Source
const AZUSSHAccessNotAllowedFromInternetBadExample = `` /* 821-byte string literal not displayed */
View Source
const AZUSSHAccessNotAllowedFromInternetDescription = "SSH access should not be accessible from the Internet, should be blocked on port 22"
View Source
const AZUSSHAccessNotAllowedFromInternetExplanation = `` /* 194-byte string literal not displayed */
View Source
const AZUSSHAccessNotAllowedFromInternetGoodExample = `` /* 845-byte string literal not displayed */
View Source
const AZUSSHAccessNotAllowedFromInternetImpact = "Its dangerous to allow SSH access from the internet"
View Source
const AZUSSHAccessNotAllowedFromInternetResolution = "Block port 22 access from the internet"
View Source
const AZUStorageAccountHTTPSenabled = "AZU010"
View Source
const AZUStorageAccountHTTPSenabledBadExample = `
resource "azurerm_storage_account" "bad_example" {
enable_https_traffic_only = false
}
`
View Source
const AZUStorageAccountHTTPSenabledDescription = "Ensure HTTPS is enabled on Azure Storage Account"
View Source
const AZUStorageAccountHTTPSenabledExplanation = `
Requiring HTTPS in Storage Account helps to minimize the risk of eavesdropping.
`
View Source
const AZUStorageAccountHTTPSenabledGoodExample = `
resource "azurerm_storage_account" "good_example" {
enable_https_traffic_only = true
}
`
View Source
const AZUStorageAccountHTTPSenabledImpact = "HTTP access to storage account could be read if intercepted"
View Source
const AZUStorageAccountHTTPSenabledResolution = "Only use HTTPS for storage account"
View Source
const AZUSynapseWorkspaceManagedNetwork = "AZU027"
View Source
const AZUSynapseWorkspaceManagedNetworkBadExample = `` /* 669-byte string literal not displayed */
View Source
const AZUSynapseWorkspaceManagedNetworkDescription = "Synapse Workspace should have managed virtual network enabled, the default is disabled."
View Source
const AZUSynapseWorkspaceManagedNetworkExplanation = `` /* 635-byte string literal not displayed */
View Source
const AZUSynapseWorkspaceManagedNetworkGoodExample = `` /* 713-byte string literal not displayed */
View Source
const AZUSynapseWorkspaceManagedNetworkImpact = "Your Synapse workspace is not using the private endpoints"
View Source
const AZUSynapseWorkspaceManagedNetworkResolution = "Set manage virtual network to enabled"
View Source
const AZUTrustedMicrosoftServicesHaveStroageAccountAccess = "AZU013"
View Source
const AZUTrustedMicrosoftServicesHaveStroageAccountAccessBadExample = `` /* 923-byte string literal not displayed */
View Source
const AZUTrustedMicrosoftServicesHaveStroageAccountAccessDescription = "Trusted Microsoft Services should have bypass access to Storage accounts"
View Source
const AZUTrustedMicrosoftServicesHaveStroageAccountAccessExplanation = `` /* 256-byte string literal not displayed */
View Source
const AZUTrustedMicrosoftServicesHaveStroageAccountAccessGoodExample = `` /* 961-byte string literal not displayed */
View Source
const AZUTrustedMicrosoftServicesHaveStroageAccountAccessImpact = "Trusted Microsoft Services won't be able to access storage account unless rules set to allow"
View Source
const AZUTrustedMicrosoftServicesHaveStroageAccountAccessResolution = "Allow Trusted Microsoft Services to bypass"
View Source
const AzureOpenInboundNetworkSecurityGroupRule = "AZU001"
View Source
const AzureOpenInboundNetworkSecurityGroupRuleBadExample = `` /* 137-byte string literal not displayed */
View Source
const AzureOpenInboundNetworkSecurityGroupRuleDescription = "An inbound network security rule allows traffic from /0."
View Source
const AzureOpenInboundNetworkSecurityGroupRuleExplanation = `
Network security rules should not use very broad subnets.
Where possible, segments should be broken into smaller subnets.
`
View Source
const AzureOpenInboundNetworkSecurityGroupRuleGoodExample = `` /* 145-byte string literal not displayed */
View Source
const AzureOpenInboundNetworkSecurityGroupRuleImpact = "The port is exposed for ingress from the internet"
View Source
const AzureOpenInboundNetworkSecurityGroupRuleResolution = "Set a more restrictive cidr range"
View Source
const AzureOpenOutboundNetworkSecurityGroupRule = "AZU002"
View Source
const AzureOpenOutboundNetworkSecurityGroupRuleBadExample = `` /* 143-byte string literal not displayed */
View Source
const AzureOpenOutboundNetworkSecurityGroupRuleDescription = "An outbound network security rule allows traffic to /0."
View Source
const AzureOpenOutboundNetworkSecurityGroupRuleExplanation = `
Network security rules should not use very broad subnets.
Where possible, segments should be broken into smaller subnets.
`
View Source
const AzureOpenOutboundNetworkSecurityGroupRuleGoodExample = `` /* 146-byte string literal not displayed */
View Source
const AzureOpenOutboundNetworkSecurityGroupRuleImpact = "The port is exposed for egress to the internet"
View Source
const AzureOpenOutboundNetworkSecurityGroupRuleResolution = "Set a more restrictive cidr range"
View Source
const AzureUnencryptedDataLakeStore = "AZU004"
View Source
const AzureUnencryptedDataLakeStoreBadExample = `
resource "azurerm_data_lake_store" "bad_example" {
encryption_state = "Disabled"
}`
View Source
const AzureUnencryptedDataLakeStoreDescription = "Unencrypted data lake storage."
View Source
const AzureUnencryptedDataLakeStoreExplanation = `
Datalake storage encryption defaults to Enabled, it shouldn't be overridden to Disabled.
`
View Source
const AzureUnencryptedDataLakeStoreGoodExample = `
resource "azurerm_data_lake_store" "good_example" {
encryption_state = "Enabled"
}`
View Source
const AzureUnencryptedDataLakeStoreImpact = "Data could be read if compromised"
View Source
const AzureUnencryptedDataLakeStoreResolution = "Enable encryption of data lake storage"
View Source
const AzureUnencryptedManagedDisk = "AZU003"
View Source
const AzureUnencryptedManagedDiskBadExample = `
resource "azurerm_managed_disk" "bad_example" {
encryption_settings {
enabled = false
}
}`
View Source
const AzureUnencryptedManagedDiskDescription = "Unencrypted managed disk."
View Source
const AzureUnencryptedManagedDiskExplanation = `` /* 161-byte string literal not displayed */
View Source
const AzureUnencryptedManagedDiskGoodExample = `
resource "azurerm_managed_disk" "good_example" {
encryption_settings {
enabled = true
}
}`
View Source
const AzureUnencryptedManagedDiskImpact = "Data could be read if compromised"
View Source
const AzureUnencryptedManagedDiskResolution = "Enable encryption on managed disks"
View Source
const AzureVMWithPasswordAuthentication = "AZU005"
View Source
const AzureVMWithPasswordAuthenticationBadExample = `
resource "azurerm_virtual_machine" "bad_example" {
os_profile_linux_config {
disable_password_authentication = false
}
}`
View Source
const AzureVMWithPasswordAuthenticationDescription = "Password authentication in use instead of SSH keys."
View Source
const AzureVMWithPasswordAuthenticationExplanation = `` /* 187-byte string literal not displayed */
View Source
const AzureVMWithPasswordAuthenticationGoodExample = `
resource "azurerm_virtual_machine" "good_example" {
os_profile_linux_config {
disable_password_authentication = true
}
}`
View Source
const AzureVMWithPasswordAuthenticationImpact = "Passwords are potentially easier to compromise than SSH Keys"
View Source
const AzureVMWithPasswordAuthenticationResolution = "Use SSH keys for authentication"
View Source
const DIGDropletHasNoSSHKeysAssigned = "DIG003"
View Source
const DIGDropletHasNoSSHKeysAssignedBadExample = `` /* 149-byte string literal not displayed */
View Source
const DIGDropletHasNoSSHKeysAssignedDescription = "SSH Keys are the preferred way to connect to your droplet, no keys are supplied"
View Source
const DIGDropletHasNoSSHKeysAssignedExplanation = `` /* 292-byte string literal not displayed */
View Source
const DIGDropletHasNoSSHKeysAssignedGoodExample = `` /* 264-byte string literal not displayed */
View Source
const DIGDropletHasNoSSHKeysAssignedImpact = "Logging in with username and password is easier to compromise"
View Source
const DIGDropletHasNoSSHKeysAssignedResolution = "Use ssh keys for login"
View Source
const DIGFirewallHasOpenInboundAccess = "DIG001"
View Source
const DIGFirewallHasOpenInboundAccessBadExample = `` /* 250-byte string literal not displayed */
View Source
const DIGFirewallHasOpenInboundAccessDescription = "The firewall has an inbound rule with open access"
View Source
const DIGFirewallHasOpenInboundAccessExplanation = `` /* 182-byte string literal not displayed */
View Source
const DIGFirewallHasOpenInboundAccessGoodExample = `` /* 265-byte string literal not displayed */
View Source
const DIGFirewallHasOpenInboundAccessImpact = "Your port is exposed to the internet"
View Source
const DIGFirewallHasOpenInboundAccessResolution = "Set a more restrictive CIRDR range"
View Source
const DIGFirewallHasOpenOutboundAccess = "DIG002"
View Source
const DIGFirewallHasOpenOutboundAccessBadExample = `` /* 256-byte string literal not displayed */
View Source
const DIGFirewallHasOpenOutboundAccessDescription = "The firewall has an outbound rule with open access"
View Source
const DIGFirewallHasOpenOutboundAccessExplanation = `` /* 165-byte string literal not displayed */
View Source
const DIGFirewallHasOpenOutboundAccessGoodExample = `` /* 271-byte string literal not displayed */
View Source
const DIGFirewallHasOpenOutboundAccessImpact = "The port is exposed for ingress from the internet"
View Source
const DIGFirewallHasOpenOutboundAccessResolution = "Set a more restrictive cidr range"
View Source
const DIGForceDestroyEnabled = "DIG007"
View Source
const DIGForceDestroyEnabledBadExample = `
resource "digitalocean_spaces_bucket" "bad_example" {
name = "foobar"
region = "nyc3"
force_destroy = true
}
`
View Source
const DIGForceDestroyEnabledDescription = "Force destroy is enabled on Spaces bucket which is dangerous"
View Source
const DIGForceDestroyEnabledExplanation = `` /* 209-byte string literal not displayed */
View Source
const DIGForceDestroyEnabledGoodExample = `
resource "digitalocean_spaces_bucket" "good_example" {
name = "foobar"
region = "nyc3"
}
`
View Source
const DIGForceDestroyEnabledImpact = "Accidental deletion of bucket objects"
View Source
const DIGForceDestroyEnabledResolution = "Don't use force destroy on bucket configuration"
View Source
const DIGLoadBalancerWithPlainHTTP = "DIG004"
View Source
const DIGLoadBalancerWithPlainHTTPBadExample = `` /* 280-byte string literal not displayed */
View Source
const DIGLoadBalancerWithPlainHTTPDescription = "The load balancer forwarding rule is using an insecure protocol as an entrypoint"
View Source
const DIGLoadBalancerWithPlainHTTPExplanation = `` /* 309-byte string literal not displayed */
View Source
const DIGLoadBalancerWithPlainHTTPGoodExample = `` /* 278-byte string literal not displayed */
View Source
const DIGLoadBalancerWithPlainHTTPImpact = "Your inbound traffic is not protected"
View Source
const DIGLoadBalancerWithPlainHTTPResolution = "Switch to HTTPS to benefit from TLS security features"
View Source
const DIGPublicReadAclOnSpacesBucket = "DIG005"
View Source
const DIGPublicReadAclOnSpacesBucketBadExample = `` /* 470-byte string literal not displayed */
View Source
const DIGPublicReadAclOnSpacesBucketDescription = "Spaces bucket or bucket object has public read acl set"
View Source
const DIGPublicReadAclOnSpacesBucketExplanation = `
Space bucket and bucket object permissions should be set to deny public access unless explicitly required.
`
View Source
const DIGPublicReadAclOnSpacesBucketGoodExample = `` /* 441-byte string literal not displayed */
View Source
const DIGPublicReadAclOnSpacesBucketImpact = "The contents of the space can be accessed publicly"
View Source
const DIGPublicReadAclOnSpacesBucketResolution = "Apply a more restrictive ACL"
View Source
const DIGSpacesBucketVersioningEnabled = "DIG006"
View Source
const DIGSpacesBucketVersioningEnabledBadExample = `` /* 228-byte string literal not displayed */
View Source
const DIGSpacesBucketVersioningEnabledDescription = "Spaces buckets should have versioning enabled"
View Source
const DIGSpacesBucketVersioningEnabledExplanation = `` /* 325-byte string literal not displayed */
View Source
const DIGSpacesBucketVersioningEnabledGoodExample = `` /* 132-byte string literal not displayed */
View Source
const DIGSpacesBucketVersioningEnabledImpact = "Deleted or modified data would not be recoverable"
View Source
const DIGSpacesBucketVersioningEnabledResolution = "Enable versioning to protect against accidental or malicious removal or modification"
View Source
const GCPGKENodeServiceAccount = "GCP012"
View Source
const GCPGKENodeServiceAccountBadExample = `
resource "google_container_cluster" "bad_example" {
node_config {
}
}
`
View Source
const GCPGKENodeServiceAccountDescription = "Checks for service account defined for GKE nodes"
View Source
const GCPGKENodeServiceAccountExplanation = `` /* 151-byte string literal not displayed */
View Source
const GCPGKENodeServiceAccountGoodExample = `` /* 129-byte string literal not displayed */
View Source
const GCPGKENodeServiceAccountImpact = "Service accounts with wide permissions can increase the risk of compromise"
View Source
const GCPGKENodeServiceAccountResolution = "Use limited permissions for service accounts to be effective"
View Source
const GCPRawEncryptionKeySpecifiedForComputeDisk = "GCP013"
View Source
const GCPRawEncryptionKeySpecifiedForComputeDiskBadExample = `
resource "google_compute_disk" "good_example" {
disk_encryption_key {
raw_key="b2ggbm8gdGhpcyBpcyBiYWQ="
}
}
`
View Source
const GCPRawEncryptionKeySpecifiedForComputeDiskDescription = "The encryption key used to encrypt a compute disk has been specified in plaintext."
View Source
const GCPRawEncryptionKeySpecifiedForComputeDiskExplanation = `` /* 145-byte string literal not displayed */
View Source
const GCPRawEncryptionKeySpecifiedForComputeDiskGoodExample = `` /* 138-byte string literal not displayed */
View Source
const GCPRawEncryptionKeySpecifiedForComputeDiskImpact = "The encryption key should be considered compromised as it is not stored securely."
View Source
const GCPRawEncryptionKeySpecifiedForComputeDiskResolution = "Reference a managed key rather than include the key in raw format."
View Source
const GENAttributeHasSensitiveData = "GEN005"
View Source
const GENAttributeHasSensitiveDataBadExample = `` /* 128-byte string literal not displayed */
View Source
const GENAttributeHasSensitiveDataDescription = "The attribute has potentially sensitive data, passwords, tokens or keys in it"
View Source
const GENAttributeHasSensitiveDataExplanation = `` /* 130-byte string literal not displayed */
View Source
const GENAttributeHasSensitiveDataGoodExample = `` /* 164-byte string literal not displayed */
View Source
const GENAttributeHasSensitiveDataImpact = "Sensitive credentials may be compromised"
View Source
const GENAttributeHasSensitiveDataResolution = "Check the code for vulnerabilities and move to variables"
View Source
const GENEnsureGithubRepositoryIsPrivate = "GEN004"
View Source
const GENEnsureGithubRepositoryIsPrivateBadExample = `` /* 222-byte string literal not displayed */
View Source
const GENEnsureGithubRepositoryIsPrivateDescription = "Github repository shouldn't be public."
View Source
const GENEnsureGithubRepositoryIsPrivateExplanation = `` /* 189-byte string literal not displayed */
View Source
const GENEnsureGithubRepositoryIsPrivateGoodExample = `` /* 224-byte string literal not displayed */
View Source
const GENEnsureGithubRepositoryIsPrivateImpact = "Anyone can read the contents of the GitHub repository and leak IP"
View Source
const GENEnsureGithubRepositoryIsPrivateResolution = "Make sensitive or commercially important repositories private"
View Source
const GenericSensitiveAttributes = "GEN003"
View Source
const GenericSensitiveAttributesBadExample = `
resource "evil_corp" "bad_example" {
root_password = "p4ssw0rd"
}
`
View Source
const GenericSensitiveAttributesDescription = "Potentially sensitive data stored in block attribute."
View Source
const GenericSensitiveAttributesExplanation = `` /* 420-byte string literal not displayed */
View Source
const GenericSensitiveAttributesGoodExample = `` /* 167-byte string literal not displayed */
View Source
const GenericSensitiveAttributesImpact = "Block attribute could be leaking secrets"
View Source
const GenericSensitiveAttributesResolution = "Don't include sensitive data in blocks"
View Source
const GenericSensitiveLocals = "GEN002"
View Source
const GenericSensitiveLocalsBadExample = `
locals {
password = "p4ssw0rd"
}
resource "evil_corp" "bad_example" {
root_password = local.password
}
`
View Source
const GenericSensitiveLocalsDescription = "Potentially sensitive data stored in local value."
View Source
const GenericSensitiveLocalsExplanation = `` /* 420-byte string literal not displayed */
View Source
const GenericSensitiveLocalsGoodExample = `` /* 166-byte string literal not displayed */
View Source
const GenericSensitiveLocalsImpact = "Local value could be leaking secrets"
View Source
const GenericSensitiveLocalsResolution = "Don't include sensitive data in locals"
View Source
const GenericSensitiveVariables = "GEN001"
View Source
const GenericSensitiveVariablesBadExample = `` /* 196-byte string literal not displayed */
View Source
const GenericSensitiveVariablesDescription = "Potentially sensitive data stored in \"default\" value of variable."
View Source
const GenericSensitiveVariablesExplanation = `` /* 420-byte string literal not displayed */
View Source
const GenericSensitiveVariablesGoodExample = `` /* 169-byte string literal not displayed */
View Source
const GenericSensitiveVariablesImpact = "Default values could be exposing sensitive data"
View Source
const GenericSensitiveVariablesResolution = "Don't include sensitive data in variable defaults"
View Source
const GkeAbacEnabled = "GCP005"
View Source
const GkeAbacEnabledBadExample = `
resource "google_container_cluster" "bad_example" {
enable_legacy_abac = "true"
}
`
View Source
const GkeAbacEnabledDescription = "Legacy ABAC permissions are enabled."
View Source
const GkeAbacEnabledExplanation = `` /* 223-byte string literal not displayed */
View Source
const GkeAbacEnabledGoodExample = `
resource "google_container_cluster" "good_example" {
# ...
# enable_legacy_abac not set
# ...
}
`
View Source
const GkeAbacEnabledImpact = "ABAC permissions are less secure than RBAC permissions"
View Source
const GkeAbacEnabledResolution = "Switch to using RBAC permissions"
View Source
const GkeEnforcePSP = "GCP009"
View Source
const GkeEnforcePSPBadExample = `
resource "google_container_cluster" "bad_example" {
pod_security_policy_config {
enabled = "false"
}
}`
View Source
const GkeEnforcePSPDescription = "Pod security policy enforcement not defined."
View Source
const GkeEnforcePSPExplanation = `` /* 489-byte string literal not displayed */
View Source
const GkeEnforcePSPGoodExample = `
resource "google_container_cluster" "good_example" {
pod_security_policy_config {
enabled = "true"
}
}`
View Source
const GkeEnforcePSPImpact = "Pods could be operating with more permissions than required to be effective"
View Source
const GkeEnforcePSPResolution = "Use security policies for pods to restrict permissions to those needed to be effective"
View Source
const GkeLegacyAuthEnabled = "GCP008"
View Source
const GkeLegacyAuthEnabledBadExample = `` /* 230-byte string literal not displayed */
View Source
const GkeLegacyAuthEnabledDescription = "Legacy client authentication methods utilized."
View Source
const GkeLegacyAuthEnabledExplanation = `` /* 287-byte string literal not displayed */
View Source
const GkeLegacyAuthEnabledGoodExample = `
resource "google_container_cluster" "good_example" {
master_auth {
username = ""
password = ""
}
}
`
View Source
const GkeLegacyAuthEnabledImpact = "Username and password authentication methods are less secure"
View Source
const GkeLegacyAuthEnabledResolution = "Use service account or OAuth for authentication"
View Source
const GkeLegacyMetadataEndpoints = "GCP007"
View Source
const GkeLegacyMetadataEndpointsBadExample = `
resource "google_container_cluster" "bad_example" {
metadata {
disable-legacy-endpoints = false
}
}`
View Source
const GkeLegacyMetadataEndpointsDescription = "Legacy metadata endpoints enabled."
View Source
const GkeLegacyMetadataEndpointsExplanation = `` /* 491-byte string literal not displayed */
View Source
const GkeLegacyMetadataEndpointsGoodExample = `
resource "google_container_cluster" "good_example" {
metadata {
disable-legacy-endpoints = true
}
}`
View Source
const GkeLegacyMetadataEndpointsImpact = "Legacy metadata endpoints don't require metadata headers"
View Source
const GkeLegacyMetadataEndpointsResolution = "Disable legacy metadata endpoints"
View Source
const GkeNodeMetadataExposed = "GCP006"
View Source
const GkeNodeMetadataExposedBadExample = `` /* 135-byte string literal not displayed */
View Source
const GkeNodeMetadataExposedDescription = "Node metadata value disables metadata concealment."
View Source
const GkeNodeMetadataExposedExplanation = `` /* 392-byte string literal not displayed */
View Source
const GkeNodeMetadataExposedGoodExample = `` /* 136-byte string literal not displayed */
View Source
const GkeNodeMetadataExposedImpact = "Metadata that isn't concealed potentially risks leakage of sensitive data"
View Source
const GkeNodeMetadataExposedResolution = "Set node metadata to SECURE or GKE_METADATA_SERVER"
View Source
const GkeShieldedNodesDisabled = "GCP010"
View Source
const GkeShieldedNodesDisabledBadExample = `
resource "google_container_cluster" "bad_example" {
enable_shielded_nodes = "false"
}`
View Source
const GkeShieldedNodesDisabledDescription = "Shielded GKE nodes not enabled."
View Source
const GkeShieldedNodesDisabledExplanation = `` /* 236-byte string literal not displayed */
View Source
const GkeShieldedNodesDisabledGoodExample = `
resource "google_container_cluster" "good_example" {
enable_shielded_nodes = "true"
}`
View Source
const GkeShieldedNodesDisabledImpact = "Node identity and integrity can't be verified without shielded GKE nodes"
View Source
const GkeShieldedNodesDisabledResolution = "Enable node shielding"
View Source
const GoogleOpenInboundFirewallRule = "GCP003"
View Source
const GoogleOpenInboundFirewallRuleBadExample = `
resource "google_compute_firewall" "bad_example" {
source_ranges = ["0.0.0.0/0"]
}`
View Source
const GoogleOpenInboundFirewallRuleDescription = "An inbound firewall rule allows traffic from /0."
View Source
const GoogleOpenInboundFirewallRuleExplanation = `` /* 167-byte string literal not displayed */
View Source
const GoogleOpenInboundFirewallRuleGoodExample = `
resource "google_compute_firewall" "good_example" {
source_ranges = ["1.2.3.4/32"]
}`
View Source
const GoogleOpenInboundFirewallRuleImpact = "The port is exposed for ingress from the internet"
View Source
const GoogleOpenInboundFirewallRuleResolution = "Set a more restrictive cidr range"
View Source
const GoogleOpenOutboundFirewallRule = "GCP004"
View Source
const GoogleOpenOutboundFirewallRuleBadExample = `
resource "google_compute_firewall" "bad_example" {
destination_ranges = ["0.0.0.0/0"]
}`
View Source
const GoogleOpenOutboundFirewallRuleDescription = "An outbound firewall rule allows traffic to /0."
View Source
const GoogleOpenOutboundFirewallRuleExplanation = `` /* 167-byte string literal not displayed */
View Source
const GoogleOpenOutboundFirewallRuleGoodExample = `
resource "google_compute_firewall" "good_example" {
destination_ranges = ["1.2.3.4/32"]
}`
View Source
const GoogleOpenOutboundFirewallRuleImpact = "The port is exposed for egress to the internet"
View Source
const GoogleOpenOutboundFirewallRuleResolution = "Set a more restrictive cidr range"
View Source
const GoogleUnencryptedDisk = "GCP001"
View Source
const GoogleUnencryptedDiskBadExample = `
resource "google_compute_disk" "bad_example" {
# ...
}`
View Source
const GoogleUnencryptedDiskDescription = "Encrypted compute disk with unmanaged keys."
View Source
const GoogleUnencryptedDiskExplanation = `` /* 327-byte string literal not displayed */
View Source
const GoogleUnencryptedDiskGoodExample = `
resource "google_compute_disk" "good_example" {
disk_encryption_key {
kms_key_self_link = "something"
}
}
`
View Source
const GoogleUnencryptedDiskImpact = "Encryption of disk using unmanaged keys."
View Source
const GoogleUnencryptedDiskResolution = "Enable encryption using a customer-managed key."
View Source
const GoogleUserIAMGrant = "GCP011"
View Source
const GoogleUserIAMGrantBadExample = `` /* 191-byte string literal not displayed */
View Source
const GoogleUserIAMGrantDescription = "IAM granted directly to user."
View Source
const GoogleUserIAMGrantExplanation = `` /* 370-byte string literal not displayed */
View Source
const GoogleUserIAMGrantGoodExample = `` /* 210-byte string literal not displayed */
View Source
const GoogleUserIAMGrantImpact = "Users shouldn't have permissions granted to them directly"
View Source
const GoogleUserIAMGrantResolution = "Roles should be granted permissions and assigned to users"
View Source
const OCIComputeIpReservation = "OCI001"
View Source
const OCIComputeIpReservationBadExample = `` /* 137-byte string literal not displayed */
View Source
const OCIComputeIpReservationDescription = "Compute instance requests an IP reservation from a public pool"
View Source
const OCIComputeIpReservationExplanation = `` /* 183-byte string literal not displayed */
View Source
const OCIComputeIpReservationGoodExample = `` /* 137-byte string literal not displayed */
View Source
const OCIComputeIpReservationImpact = "The compute instance has the ability to be reached from outside"
View Source
const OCIComputeIpReservationResolution = "Reconsider the use of an public IP"
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
This section is empty.
Source Files
¶
- aws001.go
- aws002.go
- aws003.go
- aws004.go
- aws005.go
- aws006.go
- aws007.go
- aws008.go
- aws009.go
- aws010.go
- aws011.go
- aws012.go
- aws013.go
- aws014.go
- aws015.go
- aws016.go
- aws017.go
- aws018.go
- aws019.go
- aws020.go
- aws021.go
- aws022.go
- aws023.go
- aws024.go
- aws025.go
- aws031.go
- aws032.go
- aws033.go
- aws034.go
- aws035.go
- aws036.go
- aws037.go
- aws038.go
- aws039.go
- aws040.go
- aws041.go
- aws042.go
- aws043.go
- aws044.go
- aws045.go
- aws046.go
- aws047.go
- aws048.go
- aws049.go
- aws050.go
- aws051.go
- aws052.go
- aws053.go
- aws057.go
- aws058.go
- aws059.go
- aws060.go
- aws061.go
- aws062.go
- aws063.go
- aws064.go
- aws065.go
- aws066.go
- aws067.go
- aws068.go
- aws069.go
- aws070.go
- aws071.go
- aws072.go
- aws073.go
- aws074.go
- aws075.go
- aws076.go
- aws077.go
- aws078.go
- aws079.go
- aws080.go
- aws081.go
- aws082.go
- aws083.go
- aws084.go
- aws085.go
- aws086.go
- aws087.go
- aws088.go
- aws089.go
- aws090.go
- aws091.go
- aws092.go
- aws093.go
- aws094.go
- aws095.go
- aws096.go
- aws097.go
- aws098.go
- aws099.go
- azu001.go
- azu002.go
- azu003.go
- azu004.go
- azu005.go
- azu006.go
- azu007.go
- azu008.go
- azu009.go
- azu010.go
- azu011.go
- azu012.go
- azu013.go
- azu014.go
- azu015.go
- azu016.go
- azu017.go
- azu018.go
- azu019.go
- azu020.go
- azu021.go
- azu022.go
- azu023.go
- azu024.go
- azu025.go
- azu026.go
- azu027.go
- azu028.go
- dig001.go
- dig002.go
- dig003.go
- dig004.go
- dig005.go
- dig006.go
- dig007.go
- gcp001.go
- gcp003.go
- gcp004.go
- gcp005.go
- gcp006.go
- gcp007.go
- gcp008.go
- gcp009.go
- gcp010.go
- gcp011.go
- gcp012.go
- gcp013.go
- gen001.go
- gen002.go
- gen003.go
- gen004.go
- gen005.go
- oci001.go
- utils.go
Click to show internal directories.
Click to hide internal directories.