1. Docs
  2. Reference
  3. Pre-built Policy Packs
  4. Pulumi Best Practices
  5. AWS

Pulumi Best Practices - AWS

    This page lists all 54 policies in the Pulumi Best Practices pack for AWS.

    Policy NameDescriptionFramework ReferenceFramework Specification
    pubsub-least-privilege-iamEnsures IAM policies follow least privilege principles for Pub/Sub services (SNS, SQS, Kinesis)1. Least PrivilegeEnsure all identities and services have only the minimum permissions required to perform their tasks.
    s3-bucket-least-privilegePrevents overly permissive S3 bucket policies1. Least PrivilegeEnsure all identities and services have only the minimum permissions required to perform their tasks.
    iam-policy-least-privilegeEnsures IAM policies follow least privilege principles1. Least PrivilegeEnsure all identities and services have only the minimum permissions required to perform their tasks.
    iam-role-least-privilegeEnsures IAM roles follow least privilege principles1. Least PrivilegeEnsure all identities and services have only the minimum permissions required to perform their tasks.
    iam-role-policy-least-privilegeEnsures IAM role policies follow least privilege principles1. Least PrivilegeEnsure all identities and services have only the minimum permissions required to perform their tasks.
    iam-user-policy-least-privilegeEnsures IAM user policies follow least privilege principles1. Least PrivilegeEnsure all identities and services have only the minimum permissions required to perform their tasks.
    iam-group-policy-least-privilegeEnsures IAM group policies follow least privilege principles1. Least PrivilegeEnsure all identities and services have only the minimum permissions required to perform their tasks.
    rds-cluster-disallow-unencrypted-storageChecks that RDS Clusters storage is encrypted.2. Resource Encryption at RestEncrypt all stored data using approved encryption mechanisms to protect against unauthorized access.
    ebs-volume-encryption-requiredChecks that EBS volumes are encrypted.2. Resource Encryption at RestEncrypt all stored data using approved encryption mechanisms to protect against unauthorized access.
    s3-bucket-encryptionS3 buckets must have server-side encryption configured using BucketServerSideEncryptionConfiguration resource2. Resource Encryption at RestEncrypt all stored data using approved encryption mechanisms to protect against unauthorized access.
    rds-encryption-enabledChecks that RDS instance storage is encrypted.2. Resource Encryption at RestEncrypt all stored data using approved encryption mechanisms to protect against unauthorized access.
    dynamodb-kms-encryption-enabledEnsures DynamoDB tables have encryption enabled using KMS keys.2. Resource Encryption at RestEncrypt all stored data using approved encryption mechanisms to protect against unauthorized access.
    ec2-instance-disallow-unencrypted-root-block-deviceChecks that EC2 instances does not have unencrypted root volumes.2. Resource Encryption at RestEncrypt all stored data using approved encryption mechanisms to protect against unauthorized access.
    ec2-instance-disallow-unencrypted-block-deviceChecks that EC2 instances do not have unencrypted block devices.2. Resource Encryption at RestEncrypt all stored data using approved encryption mechanisms to protect against unauthorized access.
    ec2-launch-template-disallow-unencrypted-block-deviceChecks that EC2 Launch Templates do not have unencrypted block device.2. Resource Encryption at RestEncrypt all stored data using approved encryption mechanisms to protect against unauthorized access.
    ec2-launch-configuration-disallow-unencrypted-block-deviceChecks that EC2 Launch Configurations do not have unencrypted block devices.2. Resource Encryption at RestEncrypt all stored data using approved encryption mechanisms to protect against unauthorized access.
    rds-instance-ssl-encryptionEnsures RDS instances have SSL/TLS encryption enabled through parameter group configuration3. Transport Layer EncryptionRequire secure protocols (e.g., TLS) for all data in transit to prevent interception or tampering.
    rds-clusterinstance-ssl-encryptionEnsures RDS cluster instances have SSL/TLS encryption enabled through parameter group configuration3. Transport Layer EncryptionRequire secure protocols (e.g., TLS) for all data in transit to prevent interception or tampering.
    rds-ssl-encryptionEnsures RDS instances have SSL/TLS encryption enabled3. Transport Layer EncryptionRequire secure protocols (e.g., TLS) for all data in transit to prevent interception or tampering.
    api-gateway-ssl-certificate-requiredEnsures API Gateway REST API stages have client certificates configured for SSL/TLS authentication to protect data in transit.3. Transport Layer EncryptionRequire secure protocols (e.g., TLS) for all data in transit to prevent interception or tampering.
    elb-disallow-unencrypted-trafficCheck that ELB Load Balancers do not allow unencrypted (HTTP) traffic.3. Transport Layer EncryptionRequire secure protocols (e.g., TLS) for all data in transit to prevent interception or tampering.
    rds-cluster-instance-disallow-public-accessChecks that RDS Cluster Instances public access is not enabled.4. No Public AccessProhibit direct public exposure of resources unless explicitly approved and required.
    neptune-clusterinstance-no-public-accessChecks that Neptune Cluster Instances public access is not enabled.4. No Public AccessProhibit direct public exposure of resources unless explicitly approved and required.
    rds-private-subnet-validationValidates that RDS DB subnet groups contain only private subnets4. No Public AccessProhibit direct public exposure of resources unless explicitly approved and required.
    s3-bucket-public-access-blockEnsures each S3 bucket has a public access block with all settings enabled4. No Public AccessProhibit direct public exposure of resources unless explicitly approved and required.
    ec2-instance-disallow-public-ipChecks that EC2 instances do not have a public IP address.4. No Public AccessProhibit direct public exposure of resources unless explicitly approved and required.
    dms-no-public-accessEnsures DMS replication instances are not publicly accessible to maintain security.4. No Public AccessProhibit direct public exposure of resources unless explicitly approved and required.
    environment-separation-taggingEnsures that resources are tagged to distinguish between production and non-production environments5. TaggingEnforce standardized resource tags for ownership, environment, and compliance tracking.
    resource-taggingEnsures all AWS resources must include tags for proper change tracking5. TaggingEnforce standardized resource tags for ownership, environment, and compliance tracking.
    vpc-flow-logsEnsures VPC flow logs use approved destinations for centralized monitoring6. Enforce LoggingEnable and retain audit logs for all security-relevant actions and events.
    api-gateway-access-loggingEnsures API Gateway stages have access logging enabled6. Enforce LoggingEnable and retain audit logs for all security-relevant actions and events.
    api-gateway-v2-access-loggingEnsures API Gateway V2 stages have access logging enabled6. Enforce LoggingEnable and retain audit logs for all security-relevant actions and events.
    s3-bucket-access-loggingEnsures each S3 bucket has access logging enabled6. Enforce LoggingEnable and retain audit logs for all security-relevant actions and events.
    elb-access-logging-enabledCheck that ELB Load Balancers uses access logging.6. Enforce LoggingEnable and retain audit logs for all security-relevant actions and events.
    cloudtrail-enabledEnsures CloudTrail is enabled with at least one active trail for audit logging.6. Enforce LoggingEnable and retain audit logs for all security-relevant actions and events.
    cloudwatch-log-retentionEnsures CloudWatch log groups have appropriate retention periods for compliance.6. Enforce LoggingEnable and retain audit logs for all security-relevant actions and events.
    rds-instance-high-availabilityEnsures RDS instances have Multi-AZ deployment enabled for high availability7. High AvailabilityDeploy resources in redundant, fault-tolerant configurations to ensure service continuity.
    elb-cross-zone-load-balancing-enabledClassic Load Balancers must have cross-zone load balancing enabled7. High AvailabilityDeploy resources in redundant, fault-tolerant configurations to ensure service continuity.
    sqs-dead-letter-queueEnsures SQS queues have dead letter queue configuration8. Require DLQEnsure all asynchronous messaging systems are configured with a dead-letter queue to handle failures.
    lambda-dead-letter-queue-requiredLambda functions must have dead letter queues configured for error handling and incident response8. Require DLQEnsure all asynchronous messaging systems are configured with a dead-letter queue to handle failures.
    limit-lambda-execution-timeEnsures that AWS Lambda functions are configured to time out after a specified duration to prevent extended access9. Resource AvailabilityDefine and enforce timeouts, quotas, and capacity limits to prevent resource exhaustion.
    dynamodb-streams-enabledEnforces that all DynamoDB tables have Stream settings enabled to capture all changes9. Resource AvailabilityDefine and enforce timeouts, quotas, and capacity limits to prevent resource exhaustion.
    lambda-concurrent-execution-limits-requiredLambda functions must have concurrent execution limits configured to protect resource availability9. Resource AvailabilityDefine and enforce timeouts, quotas, and capacity limits to prevent resource exhaustion.
    dynamodb-auto-scaling-enabledEnsures DynamoDB tables have auto-scaling or on-demand mode enabled for capacity management.9. Resource AvailabilityDefine and enforce timeouts, quotas, and capacity limits to prevent resource exhaustion.
    security-group-ssh-rdpEnsures security groups do not allow SSH/RDP from the internet11. NetworkingOnly allow required inbound and outbound traffic through network security groups, firewalls, or ACLs.
    security-group-default-denyEnsures Security Groups follow default deny with explicit allow principle11. NetworkingOnly allow required inbound and outbound traffic through network security groups, firewalls, or ACLs.
    security-group-strictEnsures security groups follow strict firewall rules with default deny11. NetworkingOnly allow required inbound and outbound traffic through network security groups, firewalls, or ACLs.
    lambda-function-documentationEnsures all AWS Lambda functions have a documented description attribute12. DocumentationMaintain up-to-date documentation of architectures, configurations, policies, and procedures to ensure clarity, consistency, and auditability.
    s3-bucket-replicationEnsures S3 buckets have replication configured for enhanced availability13. Data Backup and RecoveryRegularly back up critical data and systems, store backups securely, and test recovery procedures to ensure timely restoration after failures or disasters.
    s3-bucket-versioningS3 buckets must have versioning enabled using BucketVersioning resource13. Data Backup and RecoveryRegularly back up critical data and systems, store backups securely, and test recovery procedures to ensure timely restoration after failures or disasters.
    rds-instance-enable-backup-retentionChecks that RDS Instances backup retention policy is enabled.13. Data Backup and RecoveryRegularly back up critical data and systems, store backups securely, and test recovery procedures to ensure timely restoration after failures or disasters.
    kms-key-creationValidates KMS key creation with appropriate specifications and origins14. Key Management & RotationManage encryption keys securely and enforce periodic key rotation to reduce the risk of compromise.
    kms-key-deletion-lifecycleValidates KMS key deletion windows and lifecycle management14. Key Management & RotationManage encryption keys securely and enforce periodic key rotation to reduce the risk of compromise.
    kms-key-rotation-enabledChecks that KMS Keys have key rotation enabled.14. Key Management & RotationManage encryption keys securely and enforce periodic key rotation to reduce the risk of compromise.
      Neo just got smarter about infrastructure policy automation