SSE-S3
Configure server-managed SSE-S3 encryption for RustFS buckets and object writes.
SSE-S3 uses the S3 AES256 encryption mode. RustFS generates a unique data encryption key for each encrypted object and uses the configured KMS service to wrap that key. Clients do not provide or retain the encryption key.
Requirements
- Configure and start KMS, create its default key, and verify the key is available before enabling SSE-S3.
- Install and configure
rc. - Create the target bucket and verify that normal object writes succeed.
KMS availability is required
RustFS accepts an SSE-S3 bucket default even when KMS is unavailable, but encrypted object writes then fail. Verify an encrypted write and read before using the bucket for production data.
Set bucket default encryption
Apply SSE-S3 to new writes that do not specify an object-level encryption mode:
rc bucket encryption set rustfs/my-bucket --mode sse-s3
rc bucket encryption info rustfs/my-bucketThe reported mode should be SSE-S3.
Upload and read a test object:
rc object copy /path/to/hello.txt rustfs/my-bucket/hello.txt
rc object show rustfs/my-bucket/hello.txtEncrypt one object explicitly
Apply SSE-S3 to a single destination without changing the bucket default:
rc object copy /path/to/hello.txt rustfs/my-bucket/hello.txt \
--enc-s3 rustfs/my-bucket/hello.txtFor recursive writes, the encryption selector must exactly match the destination prefix:
rc object copy ./reports/ rustfs/my-bucket/reports/ --recursive \
--enc-s3 rustfs/my-bucket/reports/Clear the bucket default
Remove the default rule:
rc bucket encryption clear rustfs/my-bucket
rc bucket encryption info rustfs/my-bucketClearing or changing the bucket default affects only later writes. It does not decrypt or rewrite existing objects.
Request contract
S3 clients request SSE-S3 with:
x-amz-server-side-encryption: AES256An object-level request overrides the bucket default for that write. If no object-level mode is supplied, RustFS resolves the effective mode from the bucket encryption configuration.
Next steps
Use SSE-KMS when you need an explicit KMS key ID, or compare SSE-C for client-held keys.