Cloud
Guardrails

Your Quick Reference to Cloud Best Practices

An open-source collection of cloud infrastructure best practices, for bootstrapping your own cloud platform.

Ready to contribute?

Cloud Guardrails

If you're interested in contributing guidance, please start with these instructions.

Filters
Filters
Categories
Clear
Maturity Level
Clear
Functions
Clear
Cloud Provider
Clear
Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.
Account Size - Use Small Accounts
High
AWS
Mark Andersen
Summary
Aggressively use accounts as your permissions and blast radius boundary.
Applicable to
When designing your account structure and connectivity for all your cloud applications.
When to use/avoid
Public access block
Low
AWS, GCP
Travis McPeak
Summary
Prevent public bucket exposure by enabling public access block.
Applicable to
Always applies
When to use/avoid
Rotate IAM access keys
AWS
Adam Cotenoff
Summary
Rotate IAM access keys where IAM users are still required
Applicable to
To IAM users
When to use/avoid
Enable ELB / ALB / NLB logging
Medium
AWS
Mark Andersen
Summary
Enable access logs for all load balancers.
Applicable to
When using ELB / ALB / NLB
When to use/avoid
Limit IAM users
Medium
AWS
Adam Cotenoff
Summary
Limit the creation of new IAM users, and prefer using IAM roles when possible.
Applicable to
Always
When to use/avoid
Change window
Low
AWS, GCP, Azure
Travis McPeak
Summary
Avoid time windows that are potentially sensitive (night/weekend/holidays) for making changes to critical resources.
Applicable to
Always
When to use/avoid
Centralize cloudtrail logging
Medium
AWS
Travis McPeak
Summary
Configure CloudTrail to log to a bucket in a central account with specific prefixes based on the application or role sending them.
Applicable to
Always
When to use/avoid
DynamoDB Backup Configured
Medium
AWS
Will Bengtson
Summary
Require DynamoDB to have a backup enabled for DR.
Applicable to
To all important data in DynamoDB
When to use/avoid
Protected accounts/regions
Medium
AWS, GCP, Azure
Travis McPeak
Summary
Require approval of changes for accounts or regions with sensitive infrastructure.
Applicable to
Companies should have a multi-account and/or multi-region strategy before adopting this
When to use/avoid
Cloudfront verbs matter
AWS
Houston Hopkins
Summary
Avoid Cloudfront AllowedMethods beyond GET HEAD and OPTIONS.
Applicable to
Possibly mitigated by Cloudfront domain validation
When to use/avoid
Account per region
High
AWS
Mark Andersen
Summary
Use an account per region to avoid having a single account take down your application.
Applicable to
When you need extremely high availability application setup
When to use/avoid
Restrict OIDC Integrations
Medium
AWS
Will Bengtson
Summary
Restrict OIDC integrations so you don't have backdoor or rogue access.
Applicable to
Always
When to use/avoid
Use a central identity account
Medium
AWS
Travis McPeak
Summary
Centralize identities into a single account.
Applicable to
Companies that have a multi-account strategy should generally adopt this pattern
When to use/avoid
Naming convention for buckets
Low
AWS, GCP
Travis McPeak
Summary
Enforce naming conventions for storage buckets with a unique prefix to avoid collisions.
Applicable to
Always
When to use/avoid
CloudWatch Log Group TTL
Medium
AWS
Will Bengtson
Summary
Require TTL on CloudWatch logs
Applicable to
All scaled usage of CloudWatch
When to use/avoid
Multi-party approval (MPA) and multi-factor authentication (MFA) should be required for all changes to production
Medium
AWS
Adam Cotenoff
Summary
Limiting engineers' access to production environments by managing infrastructure through Infrastructure as Code (IaC), enforcing identity-based changes, multi-party approval, MFA, and security linting helps ensure accountability, consistency, and reduces security risks.
Applicable to
Applies when a robust IaC CI/CD workflow is in place
When to use/avoid
Service owners do not need admin permissions into their cloud accounts
Medium
AWS
Adam Cotenoff
Summary
Service owners don't need admin permissions, and should be given a minimal set of permissions as-necessary (e.g. read-only).
Applicable to
When service teams own their accounts
When to use/avoid
Set up one system to collect your resource inventory in all your accounts
Medium
AWS
Houston Hopkins
Summary
Avoid throttling issues from multiple AWS describe calls by fostering solutions that collect data once, share it across tools, and store it in a centralized system like AWS Config or a data warehouse for efficient reporting.
Applicable to
Always
When to use/avoid
Account Segmentation
Low
AWS
Mark Andersen
Summary
Applicable to
When designing your account structure and connectivity for all your cloud applications.
When to use/avoid
Cloud Guardrails

If you're interested in contributing guidance, please start with these instructions.

Filters
Filters
Categories
Clear
Maturity Level
Clear
Functions
Clear
Cloud Provider
Clear
Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.
Name
AWS presigned URL vigilance
Categories
Maturity Level
Medium
Functionality
Cloud Provider
Author
Houston Hopkins
Base Image Used and is only N days old
Categories
Maturity Level
Medium
Functionality
Cloud Provider
Author
Nick Siow
Deploy all resources in multiple AZ's (including the Load Balancers)
Categories
Maturity Level
Medium
Functionality
Cloud Provider
Author
Houston Hopkins
Cloudfront OAI usage
Categories
Maturity Level
Low
Functionality
Cloud Provider
Author
Houston Hopkins
Guardrails to prevent removal of security services/tooling
Categories
Maturity Level
Medium
Functionality
Cloud Provider
Author
Adam Cotenoff
Use SSO for user access
Categories
Maturity Level
Medium
Functionality
Cloud Provider
Author
Adam Cotenoff
prefer CDN fronted private buckets for serving static assets
Categories
Maturity Level
Low
Functionality
Cloud Provider
Author
Adam Cotenoff
Explicity chose what AWS services to allow
Categories
Maturity Level
Medium
Functionality
Cloud Provider
Author
Mark Andersen
Use SystemsManager if you need to SSH
Categories
Maturity Level
Low
Functionality
Cloud Provider
Author
Mark Andersen
Limit public IP addresses, centralize network access through ingress proxies
Categories
Maturity Level
Medium
Functionality
Cloud Provider
Author
Adam Cotenoff
Defend against Subdomain Takeover
Categories
Maturity Level
Medium
Functionality
Cloud Provider
Author
Houston Hopkins
Approval for reconfiguration of sensitive resources
Categories
Maturity Level
Low
Functionality
Cloud Provider
Author
Travis McPeak
EBS Volume Encryption at Account Level
Categories
Maturity Level
Low
Functionality
Cloud Provider
Author
Will Bengtson
Use application-specific roles
Categories
Maturity Level
High
Functionality
Cloud Provider
Author
Travis McPeak
Avoid relying on control plane AWS calls during an application/AWS issue
Categories
Maturity Level
High
Functionality
Cloud Provider
Author
Mark Andersen
Protect against data deletion
Categories
Maturity Level
Medium
Functionality
Cloud Provider
Author
Mark Andersen
Use reserved concurrency limits on lambdas by default
Categories
Maturity Level
Low
Functionality
Cloud Provider
Author
Mark Andersen
External-facing services must implement protections against DoS - use a WAF
Categories
Maturity Level
High
Functionality
Cloud Provider
Author
Adam Cotenoff
IAM Service Users can only assume into a role which has actual permissions
Categories
Maturity Level
Medium
Functionality
Cloud Provider
Author
Adam Cotenoff
Uniform bucket-level access
Categories
Maturity Level
Low
Functionality
Cloud Provider
Author
Travis McPeak
Cloud Tagging Standards
Categories
Maturity Level
Medium
Functionality
Cloud Provider
Author
Adam Cotenoff
Restrict what regions you run in
Categories
Maturity Level
Low
Functionality
Cloud Provider
Author
Houston Hopkins
Retain X>90 days of cloudtrail logs in a searchable tool
Categories
Maturity Level
Medium
Functionality
Cloud Provider
Author
Travis McPeak
RDS Databases with automatic daily snapshot
Categories
Maturity Level
Low
Functionality
Cloud Provider
Author
Will Bengtson
S3 bucket with versioning
Categories
Maturity Level
Low
Functionality
Cloud Provider
Author
Will Bengtson
Approval for sensitive network access
Categories
Maturity Level
Low
Functionality
Cloud Provider
Author
Travis McPeak
OIDC Integration for popular services
Categories
Maturity Level
Medium
Functionality
Cloud Provider
Author
Will Bengtson
Alternate account contacts
Categories
Maturity Level
Low
Functionality
Cloud Provider
Author
Nick Siow
Test your backups by restoring them
Categories
Maturity Level
Low
Functionality
Cloud Provider
Author
Mark Andersen
S3 bucket with replication to another account
Categories
Maturity Level
Medium
Functionality
Cloud Provider
Author
Will Bengtson
Approval for public resource exposure
Categories
Maturity Level
Medium
Functionality
Cloud Provider
Author
Nick Siow
AWS IMDSv2 enforcement
Categories
Maturity Level
Medium
Functionality
Cloud Provider
Author
Will Bengtson
S3 bucket with lifecycle
Categories
Maturity Level
Medium
Functionality
Cloud Provider
Author
Will Bengtson
Instances must be launched in Autoscaling Group
Categories
Maturity Level
High
Functionality
Cloud Provider
Author
Will Bengtson
Breakglass SS{M,H}
Categories
Maturity Level
High
Functionality
Cloud Provider
Author
Nick Siow
Infrastructure code must pass security linting checks to merge PRS to convergence branches
Categories
Maturity Level
Medium
Functionality
Cloud Provider
Author
Adam Cotenoff
Enable MFA on the Root Account
Categories
Maturity Level
Low
Functionality
Cloud Provider
Author
Mark Andersen
S3 bucket with replication to another account/region pair
Categories
Maturity Level
High
Functionality
Cloud Provider
Author
Will Bengtson
Approval of for used cloud services by Security/Compliance/Governance
Categories
Maturity Level
Medium
Functionality
Cloud Provider
Author
Adam Cotenoff
Databackup account
Categories
Maturity Level
Medium
Functionality
Cloud Provider
Author
Houston Hopkins
Account Size - Use Small Accounts
Categories
Maturity Level
High
Functionality
Cloud Provider
Author
Mark Andersen
Public access block
Categories
Maturity Level
Low
Functionality
Cloud Provider
Author
Travis McPeak
Rotate IAM access keys
Categories
Maturity Level
Functionality
Cloud Provider
Author
Adam Cotenoff
Enable ELB / ALB / NLB logging
Categories
Maturity Level
Medium
Functionality
Cloud Provider
Author
Mark Andersen
Limit IAM users
Categories
Maturity Level
Medium
Functionality
Cloud Provider
Author
Adam Cotenoff
Change window
Categories
Maturity Level
Low
Functionality
Cloud Provider
Author
Travis McPeak
Centralize cloudtrail logging
Categories
Maturity Level
Medium
Functionality
Cloud Provider
Author
Travis McPeak
DynamoDB Backup Configured
Categories
Maturity Level
Medium
Functionality
Cloud Provider
Author
Will Bengtson
Protected accounts/regions
Categories
Maturity Level
Medium
Functionality
Cloud Provider
Author
Travis McPeak
Cloudfront verbs matter
Categories
Maturity Level
Functionality
Cloud Provider
Author
Houston Hopkins
Account per region
Categories
Maturity Level
High
Functionality
Cloud Provider
Author
Mark Andersen
Restrict OIDC Integrations
Categories
Maturity Level
Medium
Functionality
Cloud Provider
Author
Will Bengtson
Use a central identity account
Categories
Maturity Level
Medium
Functionality
Cloud Provider
Author
Travis McPeak
Naming convention for buckets
Categories
Maturity Level
Low
Functionality
Cloud Provider
Author
Travis McPeak
CloudWatch Log Group TTL
Categories
Maturity Level
Medium
Functionality
Cloud Provider
Author
Will Bengtson
Multi-party approval (MPA) and multi-factor authentication (MFA) should be required for all changes to production
Categories
Maturity Level
Medium
Functionality
Cloud Provider
Author
Adam Cotenoff
Service owners do not need admin permissions into their cloud accounts
Categories
Maturity Level
Medium
Functionality
Cloud Provider
Author
Adam Cotenoff
Set up one system to collect your resource inventory in all your accounts
Categories
Maturity Level
Medium
Functionality
Cloud Provider
Author
Houston Hopkins
Account Segmentation
Categories
Maturity Level
Low
Functionality
Cloud Provider
Author
Mark Andersen
Process
Data
Architecture
Configuration
Change Management
Compliance
Identity
Cost Management
Reliability
Security
Standards
Azure
GCP
AWS