Cómo cifrar ETCD de Kubernetes con OVHcloud KMS
Descubra cómo configurar Kubernetes para cifrar el almacenamiento ETCD con la interfaz KMIP de OVHcloud KMS
Objetivo
Esta guía explica cómo configurar el proveedor de cifrado del kube-apiserver, que permite a los clústeres de Kubernetes cifrar y descifrar los datos en reposo utilizando OVHcloud KMS a través del protocolo KMIP.
Requisitos
- Disponer de una cuenta de cliente de OVHcloud.
- Haber contratado un dominio OKMS.
Procedimiento
Instalación del binario
El binario puede instalarse directamente a partir de los paquetes de Go.
O bien puede compilarlo a partir de las fuentes.
Configuración de OVHcloud KMS (OKMS)
Para utilizar OVHcloud KMS como proveedor de cifrado para Kubernetes, necesitará los siguientes elementos:
- Un usuario de OVHcloud y permisos para gestionar las claves KMIP de OKMS.
- Un certificado de acceso para su dominio OKMS.
- Una clave KMIP AES en su OKMS.
Creación del usuario y de los permisos de acceso
Cree un usuario local IAM con permisos de acceso sobre su dominio.
Si utiliza políticas IAM en su lugar, el usuario debe tener al menos los siguientes permisos sobre el dominio OKMS:
okms:kmip:encryptokms:kmip:decryptokms:kmip:locate
De lo contrario, el usuario debe pertenecer a un grupo que tenga el rol ADMIN.
Por otro lado, es posible crear un usuario utilizando la CLI OVHcloud:
Creación del certificado de acceso
Cree un certificado de acceso OKMS y vincule el usuario creado anteriormente.
Guarde el certificado cert.pem y la clave privada key.pem generados, ya que serán necesarios para la configuración del proveedor de cifrado.
Creación de la clave KMIP AES
Para crear una clave KMIP AES, puede utilizar la CLI OKMS:
Comience descargando el binario de la última versión o compilándolo a partir de las fuentes.
A continuación, puede crear una clave utilizando:
Conserve el ID de la clave generada. Para el resto de la guía, utilizaremos el ID 70001308-5674-43fe-93dd-6270ecac0710 como ejemplo.
Para más información sobre el uso de okms-cli, consulte el repositorio de GitHub.
Configuración del proveedor de cifrado
El proveedor de cifrado puede ejecutarse directamente en los hosts kube-apiserver con el siguiente comando:
El proveedor de cifrado admite las siguientes opciones:
Configuración de Kubernetes
Basándose en la guía oficial de Kubernetes para cifrar los datos con un proveedor KMS, añada las siguientes opciones a su kube-apiserver:
Asegúrese de montar en el kube-apiserver el directorio que contiene el socket Unix en el que escucha el servidor KMS.
Un ejemplo de encryption-config.yaml:
Validación de la configuración
Cree un secret con kubectl create secret generic okms-test-secret -n default --from-literal=mykey=mydata y, a continuación, compruebe el contenido del secret en el almacenamiento ETCD ejecutando el siguiente comando:
El resultado debería ser ilegible:
Implementación de la rotación de claves
Para rotar su clave, deberá ejecutar dos proveedores de cifrado, cada uno escuchando en un socket Unix diferente.
A continuación se muestra un ejemplo de archivo de configuración de cifrado para todos los servidores API antes de utilizar la nueva clave:
Una vez que todos los servidores API se hayan reiniciado y sean capaces de descifrar utilizando la nueva clave, coloque el proveedor con la nueva clave en primer lugar.
Una vez que todos los secrets se hayan vuelto a cifrar con la nueva clave, puede eliminar el antiguo proveedor de cifrado.
Más información
Interactúe con nuestra comunidad de usuarios.
Descubra cómo utilizar Kubernetes External Secrets Operator con Secret Manager.