Encryption At Rest
Understand encryption at rest in Couchbase Server and how to configure it using the Autonomous Operator.
Overview
Encryption at rest is a security feature introduced in Couchbase Server 8.0.0 that protects your data by encrypting it on disk. When enabled, sensitive data stored on the Couchbase nodes is encrypted, ensuring that even if the underlying storage is compromised, the data remains secure.
What Data Can Be Encrypted?
Encryption at rest supports encrypting multiple types of data within your Couchbase deployment:
-
Data in buckets - The actual documents and data stored in your buckets
-
Cluster configuration - Sensitive cluster settings and configurations
-
Logs - Server log files (note: encrypting logs will break fluent-bit log streaming)
-
Audit logs - Security audit trail data
|
Field-Level Encryption in Applications
Applications can use the SDK to encrypt specific fields. Depending on your application’s requirements, field-level encryption may be more appropriate than encrypting the entire bucket. See the SDK documentation for your development language for more information. For example:
|
Key Types
Couchbase offers flexibility in how encryption keys are managed through three different key types:
Couchbase Server Managed Keys
Also called AutoGenerated keys, these are the simplest option. Couchbase Server automatically generates and manages these keys without requiring external services. This is ideal for:
-
Environments without external key management infrastructure
-
Use cases where key management can be handled within Couchbase
AWS KMS Keys
AWS Key Management Service (KMS) integration allows you to use AWS-managed encryption keys. This is recommended when:
-
Running Couchbase in AWS (EKS or EC2)
-
Your organization uses AWS KMS for centralized key management
-
You need compliance with AWS security standards
KMIP Keys
Key Management Interoperability Protocol (KMIP) is an industry standard that works with enterprise key management systems from vendors like Thales, IBM, or HashiCorp Vault. Choose KMIP when:
-
You have an existing enterprise key management system
-
You need vendor-neutral key management
-
Compliance requires external key management
Key Concepts
Key Encryption Keys (KEK) and Data Encryption Keys (DEK)
Couchbase uses a two-tier key hierarchy:
-
Key Encryption Keys (KEK) - The master keys you define through
CouchbaseEncryptionKeyresources. These encrypt other keys or data. -
Data Encryption Keys (DEK) - Temporary keys generated by Couchbase to encrypt actual data. These are encrypted by KEKs.
Key Rotation
Key rotation is an important security practice. With encryption at rest:
-
KEK rotation can be scheduled through the
CouchbaseEncryptionKeyresource -
DEK rotation happens automatically based on the
rotationIntervalsetting -
When a key rotates, new data is encrypted with the new key while old data remains accessible
Key Usage Restrictions
You can restrict what each key encrypts by setting usage parameters:
-
configuration- Cluster configuration data -
key- Other encryption keys -
log- Log files -
audit- Audit logs -
allBuckets- All bucket data
By default, keys can encrypt anything. Restricting usage improves security through separation of concerns.
How to Enable Encryption At Rest
Enabling encryption at rest with the Autonomous Operator involves three main steps:
Step 1: Enable Encryption Management
First, enable encryption at rest management on your CouchbaseCluster resource:
apiVersion: couchbase.com/v2
kind: CouchbaseCluster
metadata:
name: my-cluster
spec:
security:
encryptionAtRest:
managed: true
Step 2: Create Encryption Keys
Create one or more CouchbaseEncryptionKey resources. Here’s a simple example with an auto-generated key:
apiVersion: couchbase.com/v2
kind: CouchbaseEncryptionKey
metadata:
name: my-key
spec:
keyType: AutoGenerated
For AWS KMS or KMIP keys, additional configuration is required (see Couchbase Encryption At Rest).
Step 3: Apply Encryption to Data
Configure which data should be encrypted on your cluster or buckets:
apiVersion: couchbase.com/v2
kind: CouchbaseCluster
metadata:
name: my-cluster
spec:
security:
encryptionAtRest:
managed: true
configuration:
enabled: true
keyName: "my-key"
audit:
enabled: true
keyName: "my-key"
For bucket-level encryption:
apiVersion: couchbase.com/v2
kind: CouchbaseBucket
metadata:
name: secure-bucket
spec:
name: secure-bucket
memoryQuota: 512Mi
encryptionAtRest:
keyName: "my-key"
Security Considerations
When implementing encryption at rest:
-
Key Protection - Consider encrypting your data keys with a dedicated Key Encryption Key (KEK) rather than using the cluster master password
-
Key Rotation - Implement regular key rotation schedules appropriate for your security requirements
-
External Key Management - For sensitive environments, consider using AWS KMS or KMIP instead of auto-generated keys
-
Log Encryption Trade-offs - Be aware that encrypting logs prevents log streaming to monitoring systems
Next Steps
For detailed configuration instructions and advanced features, see:
-
How to Configure Encryption At Rest - Complete configuration guide with all options