-
-
Notifications
You must be signed in to change notification settings - Fork 2.6k
Server Side Encryption
chrislusf edited this page Sep 16, 2025
·
3 revisions
If you're using SeaweedFS with the S3 API, you can encrypt objects at rest without changing your apps. We support the same server-side encryption (SSE) options as Amazon S3, so you can pick the one that fits how you already manage keys.
Use this quick guide to choose the right option:
| Encryption Type | Key Management | Use Case |
|---|---|---|
| SSE-KMS | External KMS providers | Enterprise key management, audit trails |
| SSE-C | Customer-provided | Full customer control, regulatory compliance |
| SSE-S3 | SeaweedFS-managed | Simple server-managed encryption, bucket defaults |
- Pick this if: You already use a KMS and want strong audit trails
- Keys live in: External providers (AWS KMS, Google Cloud KMS, OpenBao/Vault, Azure Key Vault [experimental])
- Why teams like it: Centralized key management, detailed audit logs, per-bucket key assignment, optional Bucket Key optimization
- Configuration: Requires KMS provider setup in the S3 config
- Documentation: SSE-KMS Guide
- Pick this if: You want to bring your own keys and keep full control
- Keys live in: Your application (sent per request)
- Why teams like it: No key storage on the server; maximum control for compliance-heavy environments
- Configuration: Keys provided via HTTP headers
- Documentation: SSE-C Guide
- Pick this if: You want simple, fully managed encryption with minimal setup
- Keys live in: SeaweedFS (we handle the key management for you)
-
Why teams like it: Works with explicit
x-amz-server-side-encryption: AES256and bucket default encryption; supports multipart uploads and range requests - Configuration: Optional bucket-level default encryption via the standard S3 bucket encryption API
# Configure KMS in s3 config file (see KMS Providers Integration guide)
# Then upload with KMS encryption
aws s3 cp file.txt s3://mybucket/file.txt \
--server-side-encryption aws:kms \
--ssekms-key-id test-key-123# Generate customer key
openssl rand 32 > customer-key.bin
# Upload with customer-provided key
aws s3 cp file.txt s3://mybucket/file.txt \
--sse-c AES256 \
--sse-c-key fileb://customer-key.bin# Explicit SSE-S3 on upload (or configure bucket default encryption)
aws s3 cp file.txt s3://mybucket/file.txt \
--server-side-encryption AES256Configure KMS providers and IAM settings in your S3 config file:
{
"identities": [
{
"name": "admin",
"credentials": [{"accessKey": "admin", "secretKey": "password"}],
"actions": ["Admin", "Read", "Write"]
}
],
"kms": {
"default_provider": "openbao",
"providers": {
"openbao": {
"type": "openbao",
"address": "http://localhost:8200",
"token": "root-token",
"transit_path": "transit"
}
}
}
}Note: The S3 config JSON file contains both KMS encryption settings AND IAM-style access control (user identities, credentials, permissions).
# Start with KMS config
weed s3 -config=s3_kms_config.jsonSupported Operations:
- All standard S3 operations (PUT, GET, HEAD, COPY, DELETE)
- Multipart uploads with consistent encryption
- Cross-encryption copy operations
- Object metadata preservation
- Range requests for SSE-C, SSE-KMS, and SSE-S3
AWS S3 Compatibility:
- Identical API behavior and headers
- Compatible with all S3 clients and SDKs
- Same error codes and responses
-
SSE-KMS: Supports AWS KMS, Google Cloud KMS, OpenBao/Vault; Azure Key Vault is available behind the
azurekmsbuild tag (experimental) - SSE-C: Full support with security best practices
- SSE-S3: Supported with SeaweedFS-managed keys and bucket default encryption
For hands-on setup guides and examples, see the individual encryption method docs linked above.
- Replication
- Store file with a Time To Live
- Failover Master Server
- Erasure coding for warm storage
- Server Startup via Systemd
- Environment Variables
- Filer Setup
- Directories and Files
- File Operations Quick Reference
- Data Structure for Large Files
- Filer Data Encryption
- Filer Commands and Operations
- Filer JWT Use
- TUS Resumable Uploads
- Filer Cassandra Setup
- Filer Redis Setup
- Super Large Directories
- Path-Specific Filer Store
- Choosing a Filer Store
- Customize Filer Store
- Migrate to Filer Store
- Add New Filer Store
- Filer Store Replication
- Filer Active Active cross cluster continuous synchronization
- Filer as a Key-Large-Value Store
- Path Specific Configuration
- Filer Change Data Capture
- Cloud Drive Benefits
- Cloud Drive Architecture
- Configure Remote Storage
- Mount Remote Storage
- Cache Remote Storage
- Cloud Drive Quick Setup
- Gateway to Remote Object Storage
- Amazon S3 API
- S3 Conditional Operations
- S3 CORS
- S3 Object Lock and Retention
- S3 Object Versioning
- S3 API Benchmark
- S3 API FAQ
- S3 Bucket Quota
- S3 Rate Limiting
- S3 API Audit log
- S3 Nginx Proxy
- Docker Compose for S3
- S3 Configuration - Start Here
-
S3 Credentials (
-s3.config) -
OIDC Integration (
-s3.iam.config) - Amazon IAM API
- AWS IAM CLI
- AWS CLI with SeaweedFS
- s3cmd with SeaweedFS
- rclone with SeaweedFS
- restic with SeaweedFS
- nodejs with Seaweed S3
- Hadoop Compatible File System
- run Spark on SeaweedFS
- run HBase on SeaweedFS
- run Presto on SeaweedFS
- Hadoop Benchmark
- HDFS via S3 connector
- Async Replication to another Filer [Deprecated]
- Async Backup
- Async Filer Metadata Backup
- Async Replication to Cloud [Deprecated]
- Kubernetes Backups and Recovery with K8up
- Structured Data Lake with SMQ and SQL
- Seaweed Message Queue
- SQL Queries on Message Queue
- SQL Quick Reference
- PostgreSQL-compatible Server weed db
- Pub-Sub to SMQ to SQL
- Kafka to Kafka Gateway to SMQ to SQL
- Large File Handling
- Optimization
- Volume Management
- Tiered Storage
- Cloud Tier
- Cloud Monitoring
- Load Command Line Options from a file
- SRV Service Discovery
- Volume Files Structure