CLOUD CONCEPT

Server-Side Encryption

Server-side encryption is the encryption of data by the service receiving or storing it, rather than by the client before transmission.

Cloud Concepts Hub →

What is Server-Side Encryption

Server-side encryption protects stored data while allowing applications to use normal storage and database operations. Its security depends on the service’s encryption boundary, access controls, and key-management configuration, not merely on whether encryption is enabled.

Server-side encryption places responsibility for encrypting stored data on the receiving service. An application submits data, normally over a TLS-protected connection, and the service encrypts it before persisting it within its documented encryption boundary. When an authorized reader requests the data, the service decrypts it transparently. This makes encryption at rest practical without requiring every application to implement cryptographic operations or manage encrypted file formats.

The important distinction from client-side encryption is where encryption occurs. With client-side encryption, the application encrypts data before sending it, so the storage service can receive only ciphertext. With server-side encryption, the receiving service can process plaintext. A requirement that a storage provider must never receive plaintext therefore cannot be satisfied by server-side encryption alone. TLS remains necessary because encryption at rest does not protect network traffic.

Cloud services commonly use envelope encryption. A data key encrypts the data, and a separate key-encryption key protects that data key. The encrypted data key can be stored alongside the ciphertext. A key-management service or hardware security module protects the higher-level key and controls its use. This design avoids sending entire datasets to a key-management API and supports scalable encryption of objects, volumes, and databases.

Choose key management according to the required control model. Service-owned or service-managed keys minimize administrative work. Customer-managed keys can provide explicit key policies, separation of duties, auditability, and control over key availability. However, customer-managed does not mean that the service cannot decrypt the data: the service still needs an authorized path to use the key. Similarly, supplying a key with an individual storage request does not make the operation client-side encryption if the service performs the actual encryption.

For example, an object archive can use Amazon S3 server-side encryption with a customer-managed AWS KMS key when policy requires a designated key and controlled decryption permissions. An S3 bucket policy can enforce encryption request requirements, but it must account for how bucket default encryption applies when upload headers are absent. Changing the default encryption configuration does not re-encrypt existing objects; those require a separate rewrite or supported bulk operation. Database and block-storage services have their own rules for enabling encryption, migrating existing data, and copying snapshots.

AWS KMS is generally appropriate for managed key policies, service integrations, and audited cryptographic operations. AWS CloudHSM addresses requirements for dedicated HSMs and greater control over cryptographic infrastructure, but adds operational responsibility. It is not a universal drop-in key provider for managed storage services. Where supported, an AWS KMS custom key store backed by CloudHSM connects supported KMS operations to keys held in the HSM cluster; service compatibility and operational constraints must be checked.

Server-side encryption does not prevent an authorized application, compromised role, or overly permissive service identity from reading plaintext. Combine it with least-privilege access, appropriate key policies, logging, and data-access monitoring. Include backups, replicas, exports, and temporary storage in the design. Key rotation generally does not rewrite all existing ciphertext, and disabling or deleting a required key can interrupt workloads or make data unrecoverable. Test restore procedures, cross-account access, regional recovery, key availability, quotas, and costs before relying on the design in production.

Key aspects of Server-Side Encryption

Server-side encryption combines service-operated cryptography with explicit decisions about encryption scope, key control, access authorization, and recovery.

Service-side encryption boundary

The receiving service performs encryption and authorized decryption. Verify exactly which persisted components are covered, including snapshots, logs, temporary files, and metadata.

Transparent application access

Applications usually continue using ordinary read and write APIs without handling ciphertext. This simplifies integration, but authorized readers still receive plaintext.

Independent transport protection

Encryption at rest and encryption in transit address different threats. Require TLS even when storage encryption is enabled.

Key ownership and authorization

Select service-managed or customer-managed keys according to governance, audit, and access requirements. Customer-controlled keys provide additional policy controls but do not inherently prevent the service from decrypting data.

Envelope encryption and key lifecycle

Services commonly encrypt data with data keys and protect those keys with a higher-level key. Plan rotation, retention, recovery, and deletion carefully because losing a required key can make retained data unreadable.

Configuration and operational verification

Encryption defaults do not necessarily change existing data or cover every copy. Validate migration procedures, backups, replicas, enforcement policies, key permissions, and failure behavior.

Cloud services for Server-Side Encryption

Storage and database services perform encryption at their respective persistence boundaries, while key-management services control the keys used to protect data keys. Amazon S3, Amazon EBS, and Amazon RDS integrate with AWS KMS, allowing key policies and cryptographic audit events to complement each service’s data-access controls. AWS CloudHSM supports architectures requiring dedicated HSM control, including supported KMS custom key store configurations. A complete design coordinates service permissions, key permissions, backup encryption, and recovery access. Test these together: an intact object, volume snapshot, or database backup may still be unusable when its required key is unavailable.

Amazon Simple Storage Service image Amazon S3

Amazon S3 encrypts all new object uploads at rest by default using S3-managed keys unless another supported encryption configuration applies. Options include KMS-backed encryption and customer-provided keys; the key-management choice changes permissions, operational requirements, and costs.

Open Amazon S3 →
Amazon RDS image Amazon RDS

Amazon RDS supports KMS-backed encryption at rest for supported database configurations, including underlying storage and associated backups and snapshots. Enabling encryption for an existing unencrypted database generally requires a migration workflow, such as copying a snapshot with encryption and restoring a new instance.

Open Amazon RDS →
AWS CloudHSM image AWS CloudHSM

AWS CloudHSM provides dedicated HSMs for workloads requiring greater control over cryptographic keys and operations. It can back an AWS KMS custom key store for supported integrations, but it is not directly interchangeable with KMS across all managed services.

Open AWS CloudHSM →