Cada aplicación de software tiene secretos. La contraseña, la clave API y los tokens seguros entran en la categoría de secretos. Si tus claves secretas de producción cayeran en malas manos, las consecuencias serían nefastas. Deberás controlar estrictamente cómo y cuándo se puede acceder a tus claves secretas.
Couchbase ha añadido más servicios a su infraestructura y estos servicios tienen credenciales internas y externas, y almacenar las credenciales de estos servicios es un reto. Otro reto es la rotación de secretos para todos los servicios internos y externos.
Couchbase 4.6 introduce la gestión de secretos, donde todos los secretos compartidos son encriptados cuando se almacenan y se pasan correctamente a los nodos y servicios, junto con la facilidad de rotación de secretos. No va a haber impacto en cualquier cliente SDK o UI y rendimiento.
Couchbase mantiene 2 niveles de jerarquía de claves para facilitar la rotación de la contraseña maestra sin recodificar los datos, soportar múltiples contraseñas maestras y también será más fácil de integrar con el servidor KMIP. Al iniciar el nodo, la contraseña maestra es creada o suministrada por el usuario, a partir de la cual se crea una clave maestra utilizando una fuerte función de derivación de claves. Couchbase utiliza PBKDF2 para generar la clave.
También se crea una clave_de_datos aleatoria al iniciar el servidor, que luego se cifra con la clave maestra. Todos los secretos se cifran utilizando data_key en el disco. Couchbase utiliza un algoritmo AES de 256 bits en modo GCM para cifrar secretos.
Para arrancar el sistema, la llave maestra se utiliza para abrir la llave de datos encriptada. La clave de datos desencriptada se usa entonces para abrir los secretos encriptados, y los secretos se usan para arrancar el Servidor Couchbase. Couchbase recomienda usar una contraseña maestra fuerte.
Con Secret Management en 4.6, puedes rotar tus secretos en diferentes niveles de la jerarquía de claves periódicamente o en caso de violación.
La rotación de la contraseña maestra/primer nivel de rotación y restablecimiento de la contraseña se puede hacer usando REST API o cli. Couchbase permite la flexibilidad de establecer una contraseña maestra por nodo. En caso de que se pierda la contraseña maestra y se detenga el servidor, se perderá el nodo. Los datos del nodo pueden ser recuperados usando otras herramientas con el servidor.
El segundo nivel de rotación puede realizarse cambiando la clave de datos mediante la API REST o cli.
Toda la rotación y configuración de la contraseña maestra es auditada por la aplicación.
Un ejemplo de configuración de servidor para contraseña maestra usando cli en ubuntu 14.
- Instalar y configurar el servidor couchbase.
- Configure la contraseña maestra usando cli, ejecute el siguiente comando y pase la contraseña en el prompt.
/opt/couchbase/bin/couchbase-cli master-password -c 192.168.0.1:8091 -u Administrador -p contraseña -nueva-contraseña
- Detener el servidor - /etc/init.d/couchbase-server stop
- Configurar una variable de entorno
export CB_MASTER_PASSWORD=
- Iniciar el servidor - /etc/init.d/couchbase-server start
Tenga en cuenta que si utiliza sudo para iniciar el servidor, utilice la opción -E de sudo para iniciar el servidor.
- Gira la llave de datos usando cli, ejecuta el comando de abajo:
/opt/couchbase/bin/couchbase-cli master-password -c 192.168.0.1:8091 -u Administrador -p contraseña -rotate-data-key
- Para cambiar la contraseña maestra, ejecute el siguiente comando. Introduzca la contraseña en el prompt
/opt/couchbase/bin/couchbase-cli master-password -c 192.168.0.1:8091 -u Administrador -p contraseña -nueva-contraseña
Detalles del registro:
| Cambio de contraseña de inicio de sesión de niñera | [ns_server:info,2017-01-20T13:12:30.079Z,babysitter_of_ns_1@127.0.0.1:encryption_service:encryption_service:call_gosecrets_and_store_data_key:227]Se ha realizado con éxito el cambio de contraseña maestra. |
| La niñera inicia sesión con una contraseña maestra incorrecta durante el inicio del servidor o la variable de entorno está configurada incorrectamente. | [ns_server:error,2017-01-20T13:13:07.066Z,babysitter_of_ns_1@127.0.0.1:encryption_service:encryption_service:init:174]Contraseña maestra incorrecta. Error: {error, "cifrado: falló la autenticación del mensaje"} |
| Registro de niñera cuando la contraseña maestra se establece correctamente para CB Server | =========================PROGRESS REPORT=========================
supervisor: {local,ns_babysitter_sup} iniciado: [{pid,}, {nombre,servicio_cifrado}, {mfargs,{servicio_de_cifrado,start_link,[]}}, {tipo_reinicio,permanente}, {apagado,1000} {tipo_niño,trabajador}] [ns_server:debug,2017-01-22T12:08:46.432Z,babysitter_of_ns_1@127.0.0.1::supervisor_cushion:init:39]iniciando ns_port_server con retraso de 5000 |