Skip to content

Commit d27e580

Browse files
authored
PBM-922 Documented SSE-C support (#53)
* PBM-922 Documented SSE-C support modified: docs/details/storage-configuration.md modified: docs/reference/configuration-options.md
1 parent e7e41ac commit d27e580

File tree

2 files changed

+50
-6
lines changed

2 files changed

+50
-6
lines changed

docs/details/storage-configuration.md

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,37 @@ Percona Backup for MongoDB should work with other S3-compatible storages, but wa
2222

2323
* [MinIO](https://min.io/)
2424

25-
As of version 1.3.2, Percona Backup for MongoDB supports [server-side encryption](https://docs.percona.com/percona-backup-mongodb/glossary.html#term-Server-side-encryption) for [S3 buckets](../reference/glossary.md#bucket) with customer managed keys stored in AWS KMS.
25+
### Server-side encryption
26+
27+
As of version 1.3.2, Percona Backup for MongoDB supports [server-side encryption](https://docs.percona.com/percona-backup-mongodb/glossary.html#term-Server-side-encryption) for [S3 buckets](../reference/glossary.md#bucket) with customer-provided keys stored in AWS KMS (SSE-KMS).
28+
29+
30+
Starting with version 2.0.1, Percona Backup for MongoDB also supports server-side encryption with customer-provided keys that stored on the client side (SSE-C). Percona Backup for MongoDB provides the encryption keys as part of the requests to the S3 storage. The S3 storage uses them to encrypt/decrypt the data using the AES-256 encryption algorithm. In such a way you save on subscribing to AWS KMS services and can use the server-side encryption with the S3-compatible storage of your choice.
31+
32+
!!! admonition ""
33+
34+
SSE-C encryption should work with other S3-compatible storages, but was only tested with the AWS and MinIO. Check the support of this functionality with your S3 storage provider.
35+
36+
!!! warning
37+
38+
1. Enable/disable the server-side encryption only for the empty bucket. Otherwise, Percona Backup for MongoDB fails to save/retrieve objects to/from the storage properly.
39+
2. S3 storage doesn't manage nor store the encryption key. It is your responsibility to track what key was used to encrypt what object in the bucket. If you lose the key, any request for an object without the encryption key fails and you lose the object.
40+
41+
To use the SSE-C encryption, specify the following parameters in the Percona Backup for MongoDB configuration file:
42+
43+
```yaml
44+
serverSideEncryption:
45+
sseCustomerAlgorithm: AES256
46+
sseCustomerKey: <your_encryption_key>
47+
```
48+
2649
2750
!!! admonition "See also"
2851
29-
[Protecting Data Using Server-Side Encryption with CMKs Stored in AWS Key Management Service (SSE-KMS)](https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingKMSEncryption.html)
52+
AWS Documentation:
53+
54+
* [Protecting Data Using Server-Side Encryption with CMKs Stored in AWS Key Management Service (SSE-KMS)](https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingKMSEncryption.html)
55+
* [Protecting data using server-side encryption with customer-provided encryption keys (SSE-C)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/ServerSideEncryptionCustomerKeys.html)
3056
3157
### Debug logging
3258

docs/reference/configuration-options.md

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@ storage:
3030
serverSideEncryption:
3131
sseAlgorithm: aws:kms
3232
kmsKeyID: <your-kms-key-here>
33+
sseCustomerAlgorithm: AES256
34+
sseCustomerKey: <your_encryption_key>
3335
retryer:
3436
numMaxRetries: 3
3537
minRetryDelay: 30
@@ -151,12 +153,12 @@ Disables the TLS verification of the S3 storage. This allows Percona Backup for
151153

152154
## Server-side encryption options
153155

154-
### serverSideEncryption.sseAlgorythm
156+
### serverSideEncryption.sseAlgorithm
155157

156158
*Type*: string <br>
157-
*Required*: NO
159+
*Required*: NO
158160

159-
The key management mode used for server-side encryption
161+
The key management mode used for server-side encryption with the encryption keys stored in AWS KMS.
160162

161163
Supported value: `aws:kms`
162164

@@ -165,7 +167,23 @@ Supported value: `aws:kms`
165167
*Type*: string <br>
166168
*Required*: NO
167169

168-
Your customer-managed key
170+
Your customer-managed key stored in the AWS KMS.
171+
172+
### serverSideEncryption.sseCustomerAlgorithm
173+
174+
*Type*: string <br>
175+
*Required*: NO
176+
177+
The key management mode for [server-side encryption with customer-provided keys (SSE-C)](../details/storage-configuration.md#server-side-encryption).
178+
179+
Supported value: `AES256`
180+
181+
### serverSideEncryption.sseCustomerKey
182+
183+
*Type*: string <br>
184+
*Required*: NO
185+
186+
Your custom encryption key. This key is not stored on the S3 storage side. Thus, it is your responsibility to track what data is encrypted with what key and for storing the key.
169187

170188
## Upload retry options
171189

0 commit comments

Comments
 (0)