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.
Cloud Tagging Standards
Medium
AWS
Adam Cotenoff
Summary
Adopting a well-defined and documented tagging strategy to assist with resource tracking, cost management, security, compliance, and incident management.
Applicable to
Always
When to use/avoid
Restrict what regions you run in
Low
AWS
Houston Hopkins
Summary
Restrict the regions that you run in to only those you operate in, to avoid unnecessary attack surface/cost/complexity.
Applicable to
All copmanies using AWS organizations
When to use/avoid
Retain X>90 days of cloudtrail logs in a searchable tool
Medium
AWS
Travis McPeak
Summary
Enable cloudtrail logs for more than 90 days to facilitate investigating changes to resources.
Applicable to
Always applies
When to use/avoid
RDS Databases with automatic daily snapshot
Low
AWS
Will Bengtson
Summary
Configure automatic daily snapshots of RDS databases for backup purposes.
Applicable to
Always
When to use/avoid
S3 bucket with versioning
Low
AWS
Will Bengtson
Summary
Enforce a bucket pattern with versioning to prevent malicious tampering and facilitate recovery
Applicable to
All important data
When to use/avoid
Approval for sensitive network access
Low
AWS, GCP, Azure
Travis McPeak
Summary
Require approval for adding new access to trusted/privileged resources.
Applicable to
As early as possible
When to use/avoid
OIDC Integration for popular services
Medium
AWS
Will Bengtson
Summary
Avoid using IAM users for popular services by creating a pattern to enable OIDC integrations.
Applicable to
Always
When to use/avoid
Alternate account contacts
Low
AWS
Nick Siow
Summary
AWS allows for contact info for billing/operations/security to be separated from the root user. This should be used to limit the employees with access to the root user email.
Applicable to
Always
When to use/avoid
Test your backups by restoring them
Low
AWS
Mark Andersen
Summary
Ensure your backups work by testing them on an interval.
Applicable to
Always
When to use/avoid
S3 bucket with replication to another account
Medium
AWS
Will Bengtson
Summary
Require replication to another account for disaster recovery
Applicable to
When effective DR is required
When to use/avoid
Approval for public resource exposure
Medium
AWS
Nick Siow
Summary
Any exposure of a resource to truly public (aka not restricted by Condition) users should require additional approval
Applicable to
Resources that are meant to be public, such as S3 buckets containing non-proprietary web assets or public datasets.
When to use/avoid
AWS IMDSv2 enforcement
Medium
AWS
Will Bengtson
Summary
Protect AWS credentials from SSRD vectors by enforcing AWS IMDSv2
Applicable to
Always
When to use/avoid
S3 bucket with lifecycle
Medium
AWS
Will Bengtson
Summary
Require lifecycle policy on S3 buckets for things like logs (1 yr deletion recommended)
Applicable to
Always
When to use/avoid
Instances must be launched in Autoscaling Group
High
AWS
Will Bengtson
Summary
Require autoscaling groups for resilient deployments in case your EC2 instances fail.
Applicable to
For relaible EC2 in AWS
When to use/avoid
Breakglass SS{M,H}
High
AWS
Nick Siow
Summary
For incident response and archaeology, all instances should have some sort of breakglass mechanism for direct access. A protected role with SSM access and/or tagging requirements on the instance can facilitate this.
Applicable to
When to use/avoid
Infrastructure code must pass security linting checks to merge PRS to convergence branches
Medium
AWS
Adam Cotenoff
Summary
Requiring infrastructure code to pass security linting checks before merging pull requests (PRs) to convergence branches is a critical security measure that can help prevent security issues from being introduced into the production environment.
Applicable to
To all IaC
When to use/avoid
Enable MFA on the Root Account
Low
AWS
Mark Andersen
Summary
Enable multi-factor authentication on the root account with alerting.
Applicable to
All AWS accounts
When to use/avoid
S3 bucket with replication to another account/region pair
High
AWS
Will Bengtson
Summary
Require S3 bucket replication to another account and region
Applicable to
When recovery is necessary
When to use/avoid
Approval of for used cloud services by Security/Compliance/Governance
Medium
AWS
Adam Cotenoff
Summary
When handling sensitive data in the cloud, it is important to ensure that the cloud services being used meet certain security, compliance, and governance requirements.
Applicable to
Always
When to use/avoid
Databackup account
Medium
AWS
Houston Hopkins
Summary
Create a Cold account for copying in data that can't be deleted.
Applicable to
Applies if you have data that has to persist for business operation, regulatory or legal reasons.
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