☁️ Cloud Security Checklist

AWS / Azure / GCP Security Checklist

Practical hardening checklist for all three major clouds. CIS benchmark mapped, domain-grouped, with persistent progress tracking.

Loading...
0%

Identity & Access Management

Avoid use of root account for daily operations
Use IAM users or roles. Root access keys should not exist.
CIS 1.1 Critical
Enable MFA on root account
Hardware MFA strongly preferred for root.
CIS 1.5 Critical
Enforce MFA for all IAM users with console access
Apply via IAM policy: deny all actions without MFA present.
CIS 1.10 Critical
No IAM users with AdministratorAccess or *.* wildcard
Apply least privilege. Use IAM Access Analyser to validate.
CIS 1.16 Critical
Rotate access keys every 90 days
Deactivate and delete keys older than 90 days.
CIS 1.14 High
Remove unused IAM credentials (>45 days inactive)
IAM Credential Report shows last used date.
CIS 1.3 High
Enable IAM Access Analyser in all regions
Detects externally accessible resources.
CIS 1.21 High
Do not use access keys for EC2 instances — use IAM roles
Attach instance profiles, never hardcode keys.
CIS 1.18 High

Logging & Monitoring

Enable CloudTrail in all regions with log file validation
Multi-region trail, management events, S3 object events.
CIS 3.1 Critical
Ensure CloudTrail logs are stored in a dedicated S3 bucket with MFA Delete
Prevent log tampering. Enable S3 Object Lock.
CIS 3.3 Critical
Enable AWS Config in all regions
Records configuration changes to all supported resources.
CIS 3.5 High
Enable GuardDuty in all regions
Threat detection for accounts, workloads, and data.
AWS Best Practice High
Enable Security Hub in all regions
Aggregates findings from GuardDuty, Macie, Inspector.
AWS Best Practice High
Set up CloudWatch alarms for root account usage
Alert on any root account API call.
CIS 4.3 High
Set up alarm for IAM policy changes
Alert on CreatePolicy, PutGroupPolicy, PutRolePolicy.
CIS 4.4 High
Set up alarm for CloudTrail configuration changes
Alert on StopLogging, DeleteTrail, UpdateTrail.
CIS 4.5 High
Set up alarm for console login without MFA
Filter CloudTrail for ConsoleLogin where MfaUsed=false.
CIS 4.2 High

Storage

Enable S3 Block Public Access at account level
Prevents any bucket from being made public.
CIS 2.1.5 Critical
Enable S3 server-side encryption by default
Use SSE-S3 or SSE-KMS on all buckets.
CIS 2.1.1 High
Enable S3 versioning on critical buckets
Protects against ransomware and accidental deletion.
CIS 2.1.3 High
Enable S3 access logging on buckets containing sensitive data
Log all read/write access.
CIS 2.1.4 High
Enforce HTTPS on all S3 buckets via bucket policy
Deny HTTP (aws:SecureTransport=false).
CIS 2.1.2 High

Compute & Network

No security groups with 0.0.0.0/0 on port 22 or 3389
Use Bastion Host, SSM Session Manager, or VPN.
CIS 5.2 Critical
No security groups with unrestricted inbound on all protocols
0.0.0.0/0 on -1 (all traffic) is a critical finding.
CIS 5.1 Critical
Enforce IMDSv2 on all EC2 instances
Prevents SSRF-based credential theft via IMDS.
AWS Best Practice Critical
Enable VPC Flow Logs in all VPCs
Critical for network forensics and anomaly detection.
CIS 3.9 High
Ensure no EC2 instances have public IPs unless required
Use private subnets with NAT gateway.
AWS Best Practice High
Enable EBS encryption by default
All new volumes encrypted with AWS-managed or CMK.
CIS 2.2.1 High
Use dedicated instances or hosts for sensitive workloads
Prevent hardware sharing with other AWS customers.
AWS Best Practice

Database & Secrets

Ensure RDS instances are not publicly accessible
PubliclyAccessible must be false.
CIS 2.3.3 Critical
Enable RDS encryption at rest
Must be set at creation time — requires snapshot+restore otherwise.
CIS 2.3.1 High
Enable automated backups for RDS
Minimum 7-day retention.
CIS 2.3.2 High
Use AWS Secrets Manager for credentials, not hardcoded in code or environment variables
Rotate secrets automatically.
AWS Best Practice Critical
Enable KMS key rotation
Annual automatic rotation for all CMKs.
CIS 2.8 High
Loading...
0%

Identity & Access

Enable Azure AD Security Defaults or Conditional Access
Enforces MFA for all users, blocks legacy auth.
CIS 1.22 Critical
Require MFA for all Global Administrators
Use Conditional Access or PIM with MFA activation.
CIS 1.1 Critical
Block legacy authentication protocols
Legacy auth bypasses MFA. Block via Conditional Access.
CIS 1.3 Critical
Enable Privileged Identity Management (PIM)
Just-in-time role activation for all privileged roles.
CIS 1.14 Critical
No permanent Global Administrator assignments
All admin role assignments should be eligible (PIM), not permanent.
CIS 1.13 High
Enable Azure AD Identity Protection
Risk-based policies for sign-in and user risk.
CIS 1.21 High
Ensure guest users have limited directory access
Restrict guest users from reading full directory.
CIS 1.20 High

Security Centre & Monitoring

Enable Microsoft Defender for Cloud on all subscriptions
Formerly Azure Security Centre — required for threat detection.
CIS 2.1 Critical
Enable all Defender for Cloud plans (Servers, Databases, Storage, etc.)
Each workload type requires separate enablement.
CIS 2.1 Critical
Enable diagnostic settings on all key resources
Key Vault, NSGs, Storage, Azure AD → Log Analytics.
CIS 5.1 Critical
Enable Azure Activity Log retention for 1 year minimum
Configure in Diagnostic Settings.
CIS 5.1.1 High
Enable Key Vault logging
All key/secret operations logged to Log Analytics.
CIS 8.5 High
Set up Defender for Cloud alerts email notifications
Admin email on High severity alerts.
CIS 2.14 High

Storage & Data

Disable public blob access at storage account level
allowBlobPublicAccess=false on all accounts.
CIS 3.5 Critical
Enable Soft Delete for blobs and containers
Protects against accidental/malicious deletion.
CIS 3.10 High
Enable storage account encryption with customer-managed keys
CMK in Azure Key Vault for sensitive data.
CIS 3.1 High
Enforce HTTPS-only traffic on storage accounts
Deny HTTP access (supportsHttpsTrafficOnly=true).
CIS 3.2 High
Enable Azure Defender for Storage
Detects unusual access patterns, malware uploads.
CIS 3.14 High

Network

Ensure no NSG allows inbound 0.0.0.0/0 on port 22 or 3389
Use Azure Bastion instead of direct RDP/SSH.
CIS 6.2 Critical
Enable Network Watcher in all regions
Required for network diagnostics and flow logs.
CIS 6.5 High
Enable NSG Flow Logs in all NSGs
Sent to Log Analytics for traffic analysis.
CIS 6.4 High
Enable Azure DDoS Protection Standard on critical VNets
Basic is insufficient for production workloads.
Azure Best Practice High
Use Private Endpoints for PaaS services
Key Vault, Storage, SQL via private link — no public endpoints.
CIS 6.6 High

Database & Key Vault

Enable Azure AD authentication for Azure SQL
Disable SQL authentication where possible.
CIS 4.1 High
Enable Azure SQL Auditing to Log Analytics
All database events logged for 90 days minimum.
CIS 4.2 High
Enable Advanced Threat Protection on Azure SQL
Detects SQL injection, anomalous access patterns.
CIS 4.2.4 High
Ensure Key Vault key expiry date is set
Keys should expire; enforce rotation.
CIS 8.1 High
Ensure Key Vault secret expiry date is set
Secrets with no expiry are a long-term risk.
CIS 8.2 High
Enable soft delete and purge protection on Key Vaults
Prevents accidental or malicious permanent deletion.
CIS 8.4 Critical
Loading...
0%

Identity & IAM

Avoid use of basic roles (Owner, Editor, Viewer) in production
Use predefined or custom roles with least privilege.
CIS 1.1 Critical
Do not assign service accounts the Editor or Owner role
Create custom roles with only required permissions.
CIS 1.5 Critical
Disable service account key creation via org policy
Use Workload Identity Federation instead of keys.
CIS 1.4 Critical
Enable 2-step verification for all users, especially admins
Enforce via Google Workspace admin.
CIS 1.13 Critical
Do not use default compute service account for workloads
Create dedicated SAs with minimal IAM roles.
CIS 1.6 High
Rotate service account keys every 90 days if keys required
Set org policy, audit key age regularly.
CIS 1.7 High
Remove service accounts not used for 90 days
Audit via IAM recommender.
CIS 1.3 High

Logging & Monitoring

Enable Cloud Audit Logs for Admin Activity, Data Access, and System Events
Data Access logs are off by default.
CIS 2.1 Critical
Export audit logs to Cloud Storage with 1-year retention
Bucket lock enabled.
CIS 2.2 Critical
Enable log sinks to a dedicated security project
Separate log project with restricted access.
CIS 2.2 High
Enable alerting for project ownership changes
assignIAMPolicy, setIAMPolicy on projects.
CIS 2.4 High
Enable alerting for custom role changes
CreateRole, UpdateRole, DeleteRole log entries.
CIS 2.6 High
Enable alerting for VPC firewall rule changes
Insert/Update/Delete on compute.firewalls.
CIS 2.7 High
Enable Security Command Centre (Standard or Premium)
Threat detection, vulnerability findings, compliance.
GCP Best Practice High

Storage

Prevent public access to GCS buckets via org policy
constraints/storage.publicAccessPrevention = enforced.
CIS 5.1 Critical
Enable uniform bucket-level access on all buckets
Disables legacy per-object ACLs.
CIS 5.2 High
Enable GCS bucket versioning for critical data
Protects against deletion and ransomware.
CIS 5.3 High
Enable Cloud KMS encryption for sensitive GCS buckets
CMEK on bucket creation.
GCP Best Practice High
Ensure retention policies on GCS log buckets
Lock prevents deletion during retention period.
CIS 2.3 High

Compute & Network

Ensure no firewall rules allow ingress from 0.0.0.0/0 on port 22 or 3389
Use IAP (Identity-Aware Proxy) for SSH/RDP.
CIS 3.6 Critical
Enable VPC Flow Logs on all subnets
Required for network forensics.
CIS 3.8 High
Use Private Google Access for instances without public IPs
Allows API access without internet exposure.
CIS 3.9 High
Restrict default network firewall rules
The "default" network allows internal traffic on all ports — restrict it.
CIS 3.1 High
Do not use default VPC network for production resources
Create custom VPCs with appropriate segmentation.
CIS 3.1 High
Enable OS Login on Compute instances
Manages SSH access via Google identity instead of keys.
CIS 4.4 High
Block project-wide SSH keys
Per-instance keys only, not project-level.
CIS 4.2 High

Database & Secrets

Ensure Cloud SQL instances are not publicly accessible
Set authorized networks to private IPs or Cloud SQL Proxy only.
CIS 6.2 Critical
Enable automated backups for all Cloud SQL instances
Minimum 7-day retention.
CIS 6.7 High
Enable Cloud SQL SSL/TLS for all connections
Require SSL connections, reject non-SSL.
CIS 6.1 High
Use Secret Manager for all credentials
Not environment variables or Compute instance metadata.
GCP Best Practice Critical
Rotate secrets in Secret Manager automatically
Set up rotation schedules via Cloud Scheduler.
GCP Best Practice High