You can configure encryption at rest for a MongoDB deployment managed by the Kubernetes Operator by using a KMIP server.
Considerações
Antes de configurar a criptografia em descanso, considere o seguinte:
Você deve ter um servidor KMIP em execução.
Não é possível fazer a transição de sua implantação que usa criptografia em descanso baseada em keyfilespara criptografia em descanso baseada em KMIP.
If you want to enable KMIP encryption at rest for an already deployed MongoDB resource, contact MongoDB Support.
Procedimento
O procedimento a seguir descreve como definir uma configuração KMIP de exemplo para um conjunto de réplicas MongoDB. Ajuste os nomes e caminhos dos arquivos, o namespace Kubernetes, os nomes dos recursos e a versão do MongoDB conforme necessário para seu sistema.
Crie o ConfigMap da CA.
Execute o seguinte comando para criar um ConfigMap para manter o CA que assinou o certificado do servidor KMIP:
kubectl -n mongodb create configmap mongodb-kmip-certificate-authority-pem --from-file=ca.pem
Crie o segredo para o Certificado do cliente e a Chave Privada PEM.
Execute o seguinte comando para criar um segredo para manter o certificado do cliente concatenado e a chave privada para verificar a chave mestre do servidor KMIP :
kubectl -n mongodb create secret generic mongodb-kmip-client-pem --from-file=cert.pem
Configure a implantação para usar o servidor KMIP.
Configure as configurações do additionalMongodConfig em sua especificação de recurso personalizado para utilizar o servidor KMIP. Por exemplo:
apiVersion: mongodb.com/v1 kind: MongoDB metadata: name: kmip namespace: mongodb spec: type: ReplicaSet members: 3 backup: encryption: kmip: client: clientCertificatePrefix: "mdb" additionalMongodConfig: security: enableEncryption: true kmip: clientCertificateFile: /kmip/cert/cert.pem serverCAFile: /kmip/ca/ca.pem serverName: pykmip-server.pymongo port: 5696 featureCompatibilityVersion: '8.0' version: 8.0.0 opsManager: configMapRef: name: my-project credentials: my-credentials podSpec: podTemplate: spec: containers: - name: mongodb-enterprise-database volumeMounts: - name: mongodb-kmip-client-pem mountPath: /kmip/cert - name: mongodb-kmip-certificate-authority-pem mountPath: /kmip/ca volumes: - name: mongodb-kmip-client-pem secret: secretName: mongodb-kmip-client-pem - name: mongodb-kmip-certificate-authority-pem configMap: name: mongodb-kmip-certificate-authority-pem items: - key: ca.pem path: ca.pem
Importante
If you set the spec.backup.encryption.kmip setting in your resource, the API keys linked with the value of spec.credentials must have the Global Owner role.