Key Encryption Service Settings
MinIO Server includes three groups of environment variables to manage how the MinIO Server interacts with the Key Encryption Service (KES), Key Management Service (KMS), or static key files. You may only define one of the three sets. If more than one type of environment variable sets is defined, MinIO returns an error.
Note
These settings do not have configuration setting options for use with mc admin config set
.
Define any one set of these environment variables in the host system prior to starting or restarting the MinIO process. Refer to your operating system’s documentation for how to define an environment variable.
Important
Each configuration setting controls fundamental MinIO behavior and functionality. MinIO strongly recommends testing configuration changes in a lower environment, such as DEV or QA, before applying to production.
Key Encryption Service
Define the following variables to use the Key Encryption Service (KES) to connect to a supported 3rd party Key Management Service provider.
- MINIO_KMS_KES_ENDPOINT
The endpoint(s) for the MinIO Key Encryption Service (KES) process to use for supporting SSE-S3 and MinIO backend encryption operations. Separate multiple KES endpoints with a
,
.
- MINIO_KMS_KES_KEY_NAME
The name of an external key on the Key Management system (KMS) configured on the KES server and used for performing en/decryption operations. MinIO uses this key for the following:
Encrypting backend data (IAM, server configuration).
The default encryption key for Server-Side Encryption with SSE-KMS.
The encryption key for Server-Side Encryption with SSE-S3.
Important
Enabling SSE on a MinIO deployment automatically encrypts the backend data for that deployment using the default encryption key.
MinIO requires access to KES and the external KMS to decrypt the backend and start normally. The KMS must maintain and provide access to the
MINIO_KMS_KES_KEY_NAME
. You cannot disable KES later or “undo” the SSE configuration at a later point.
- MINIO_KMS_KES_API_KEY
Preferred method for authenticating with the encryption service using the KES API key obtained from the kes identity new command.
This environment variable is mutually exclusive with the
MINIO_KMS_KES_KEY_FILE
andMINIO_KMS_KES_CERT_FILE
environment variables.
- MINIO_KMS_KES_KEY_FILE
The private key associated to the the
MINIO_KMS_KES_CERT_FILE
x.509 certificate to use when authenticating to the KES server. The KES server requires clients to present their certificate for performing mutual TLS (mTLS).See the KES wiki for more complete documentation on KES access control.
You must also set the
MINIO_KMS_KES_CERT_FILE
. This variable is mutually exclusive withMINIO_KMS_KES_API_KEY
.
- MINIO_KMS_KES_CERT_FILE
The x.509 certificate to present to the KES server. The KES server requires clients to present their certificate for performing mutual TLS (mTLS).
The KES server computes an identity from the certificate and compares it to its configured policies. The KES server grants the
minio
server access to only those operations explicitly granted by the policy.See the KES wiki for more complete documentation on KES access control.
You must also set the
MINIO_KMS_KES_KEY_FILE
. This variable is mutually exclusive withMINIO_KMS_KES_API_KEY
.
MinIO Key Management Server (KMS)
Define the following variables to use MinIO KMS to manage keys.
- MINIO_KMS_SERVER
The endpoint(s) for the MinIO Key Management Service (KMS) process to use for supporting SSE-S3 and MinIO backend encryption operations. Separate multiple KMS endpoints with a
,
.
Static Key Files
Provide a static KMS key or key file to use for encryption.