└── README.md /README.md: -------------------------------------------------------------------------------- 1 | # Secure By Default: Encrypted by Default in AWS Tracker 2 | 3 | Fog Security: https://www.fogsecurity.io/ \ 4 | Accompanying Blog Post: www.fogsecurity.io/blog/are-my-aws-resources-encrypted-or-unencrypted-by-default 5 | 6 | Contact info@fogsecurity.io for help and feedback. Please feel free to submit additions or feedback here as well. 7 | 8 | The following is a tracker for Encryption by Default (At Rest) for AWS Resources. We researched 51 types of resources across 43 AWS services including compute, database, storage, AI and machine learning, management and governance. These include EC2, Sagemaker, DynamoDB, S3, Secrets Manager, CloudWatch, RDS, and more. 9 | 10 | Not all AWS Resources are default encrypted at rest. 11 | 12 | - Encryption can offer an additional layer of access control and security. 13 | - Not all encryption mechanisms in AWS [are created equally in KMS](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#kms_keys). AWS Managed Keys, AWS Customer Managed Keys, AWS Owned Keys all have different access implications. 14 | - AWS Managed Keys are used only for your AWS Account. AWS Owned Keys are used in multiple AWS Accounts (can be across many customers). 15 | - Depending on your organization's security and compliance guardrails, certain encryption mechanisms or resources must be encrypted. Check with your organization's security best practices and ensure compliance requirements such as HIPPA, PCI, GDPR, and more are met. 16 | - We recommend checking resources and their encryption status for security and compliance. 17 | - We also recommend where possible, to encrypt all resources by default. 18 | 19 | More research on cloud encryption management to come. 20 | 21 | ## Total Numbers (As of December 2024) 22 | 23 | Encrypted by Default: 40 (78.43%) \ 24 | Unencrypted by Default: 11 (21.57%) \ 25 | Default AWS Owned: 23 (Includes AES-GCM for CloudWatch Logs) \ 26 | Default AWS Managed: 17 \ 27 | AWS Services Covered: 43 \ 28 | Total Resources: 51 29 | 30 | ## AWS Resource Encrypted by Default (At Rest) Table 31 | 32 | | AWS Resource | AWS Service | Encrypted by Default (API/CLI) | Default Encryption Type | 33 | | ------------- | ----------- | ------------- | ------------------ | 34 | | S3 Bucket | Simple Storage Service (S3) | Yes | AWS Owned (S3 Managed) | 35 | | DynamoDB Table | DynamoDB | Yes | AWS Owned | 36 | | RDS Database Instance | RDS | Yes | AWS Managed | 37 | | EFS File System | EFS | Yes | AWS Managed | 38 | | Redshift Cluster | Redshift | No | - | 39 | | Aurora Instance | Aurora | Yes | AWS Managed | 40 | | Redis Cache | ElastiCache | Yes | AWS Owned | 41 | | Memcached Cache | ElastiCache | Yes | AWS Owned | 42 | | Global Datastore (Cluster) | Elasticache | No | - | 43 | | Keyspaces Table | Keyspaces (Cassandra) | Yes | AWS Owned | 44 | | MemoryDB Database | MemoryDB for Redis | Yes | AWS Owned | 45 | | Neptune Instance | Neptune | Yes | AWS Managed | 46 | | QLDB Ledger | Quantum Ledger Database (QLDB) | Yes | AWS Owned | 47 | | LiveAnalytics Database | Timestream | Yes | AWS Managed | 48 | | Lightsail Managed DB | Lightsail | Yes | AWS Managed | 49 | | Secret | Secrets Manager | Yes | AWS Managed | 50 | | SecureString Parameter | Systems Manager Parameter Store | Yes | AWS Managed | 51 | | String Parameter | Systems Manager Parameter Store | No | - | 52 | | StringList Parameter | Systems Manager Parameter Store | No | - | 53 | | EBS Volume | Elastic Block Store (EBS) | No | - | 54 | | Lambda Envrionment Variables | Lambda | Yes | AWS Managed | 55 | | Location Trackers | Location Service | Yes | AWS Owned | 56 | | Location Geofence Collection | Location Service | Yes | AWS Owned | 57 | | SQS Queue | Simple Queue Service (SQS) | Yes | AWS Owned | 58 | | SNS Topic | Simple Notification Service (SNS) | No | - | 59 | | CloudWatch Log Group | CloudWatch | Yes | AES-GCM | 60 | | Prometheus Workspace | Prometheus | Yes | AWS Owned | 61 | | Glue Data Catalog Connection Passwords | Glue | No | - | 62 | | Glue Data Catalog Metadata | Glue | No | - | 63 | | Firehose Stream | Kinesis | No | - | 64 | | MSK Cluster | Managed Streaming for Apache Kafka (MSK) | Yes | AWS Managed | 65 | | SageMaker Notebook Instance | SageMaker | Yes | AWS Owned | 66 | | Comprehend Analysis Job | Comprehend | No | - | 67 | | Traces | X-Ray | Yes | AWS Managed | 68 | | OpenSearch Domain | OpenSearch | No | - | 69 | | OpenSearch Collection | OpenSearch | Yes | AWS Owned | 70 | | ActiveMQ Broker | MQ | Yes | AWS Owned | 71 | | RabbitMQ Broker | MQ | Yes | AWS Owned | 72 | | Kendra Index | Kendra | Yes | AWS Owned | 73 | | ECR Repository | ECR | Yes | AWS Owned | 74 | | Replication Instance | Data Migration Service (DMS) | Yes | AWS Managed | 75 | | Kinesis Video Stream | Kinesis Video | Yes | AWS Managed | 76 | | File System | FSx | Yes | AWS Managed | 77 | | AppFlow Flow | AppFlow | Yes | AWS Owned | 78 | | DAX Cluster | DynamoDB Accelerator (DAX) | Yes | AWS Managed | 79 | | CodeArtifact Domain | CodeArtifact | Yes | AWS Managed | 80 | | CodeCommit Repository | CodeCommit | Yes | AWS Managed | 81 | | HealthLake DataStore | HealthLake | Yes | AWS Owned | 82 | | MWAA Environment | Managed WorkFlows for Apache Airflow (MWAA) | Yes | AWS Owned | 83 | | EMR Serverless Application Managed Logs | EMR Serverless | Yes | AWS Owned | 84 | | Amazon Q Business Application | Amazon Q | Yes | AWS Owned | 85 | 86 | * [CloudWatch Logs Documentation](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/encrypt-log-data-kms.html) states CW Logs by default use server-side AES-GCM. We assume this functions similarly to AWS Owned encryption. 87 | 88 | ## Methodology 89 | 90 | To validate the above resources, the following methods and process were used: 91 | - Many resources were created with the [AWS CLI](https://awscli.amazonaws.com/v2/documentation/api/latest/index.html). 92 | - Default encryption and encryption type were validated with [AWS CLI](https://awscli.amazonaws.com/v2/documentation/api/latest/index.html) Describe and Get calls. 93 | - Additional validation of default encryption was performed via AWS console. 94 | - CLI Documentation and [AWS Documentation](https://docs.aws.amazon.com/) were referenced to validate default encryption and encryption type as well. 95 | 96 | Note: Encryption results may be misleading. See [our Quantum Ledger Database (QLDB) research here](https://www.fogsecurity.io/blog/encryption-state-of-amazon-qldb) for an example of misleading reporting on encryption status. 97 | 98 | Contact info@fogsecurity.io for help and feedback. 99 | --------------------------------------------------------------------------------