Couchbase soporta ahora el cifrado de disco LUKS para proteger sus datos en reposo. ¿Hasta qué punto es seguro LUKS?
Couchbase 7.0 pone un gran énfasis en la seguridad, estrenando soporte tanto para control de acceso basado en funciones (RBAC) para ámbitos y coleccionesy cifrado de datos en reposo mediante Linux Unified Key Setup (LUKS).
El cifrado de discos es una parte vital de la estrategia de seguridad de datos de cualquier organización y del cumplimiento de PCI DSS, FIPS, FISMA, GDPR y otras normas reglamentarias.
Entonces, ¿es seguro el cifrado LUKS? En este post vamos a empezar con una visión general de las opciones de seguridad para las tres etapas de los documentos en un clúster de Couchbase Server - datos en proceso, datos en tránsito y datos en reposo (ver la tabla de abajo) - a continuación, profundizar en los detalles de la seguridad de los datos en reposo a través de LUKS cifrado en disco.
| Escenario | Descripción | Caso práctico | Opciones de cifrado en Couchbase |
| Datos en curso | Datos activos, memoria del sistema | Documentos en uso | Cifrado a nivel de campo en la capa de aplicación |
| Datos en tránsito | Datos que se mueven entre sistemas | Replicación, replicación entre centros de datos (XDCR) | Cifrado TLS, Certificados X.509 |
| Datos en reposo | Datos que no están en uso activo | Cubos en el disco de una máquina desconectada | Varias opciones, incluido LUKS y compatibilidad con soluciones de terceros como Thales Vormetric |
¿Por qué utilizar el cifrado de datos en reposo?
El cifrado de datos en reposo protege los sistemas de almacenamiento bloqueados o desconectados e impide que los datos se lean sin la autoridad y el acceso adecuados. Los datos cifrados en reposo no permanecen protegidos mientras un dispositivo está en línea, desbloqueado y operativo. Para ello, debes utilizar uno de los otros métodos de cifrado mencionados en la tabla anterior.
Los siguientes son escenarios comunes para el cifrado de datos en reposo:
-
- Proteger la información confidencial o personalmente identificable contra cualquier posible violación de los datos.
- Por defecto en dispositivos como los smartphones (a menudo denominado cifrado de disco completo).
- En entornos como la nube, donde varios usuarios acceden al mismo hardware subyacente
Cifrado de disco LUKS
LUKS es una herramienta totalmente de código abierto que constituye el estándar de facto para el cifrado de discos en entornos Linux.
Está incluido en todos los sistemas operativos Linux certificados por Couchbase y es compatible con los respectivos proveedores de sistemas operativos. LUKS se sitúa en la capa del núcleo y cifra el almacenamiento a nivel de bloque de disco, lo que permite a los usuarios implementar de forma transparente cualquier sistema de archivos sobre este cifrado a nivel de bloque. LUKS puede cifrar particiones de almacenamiento, que pueden presentarse desde una única unidad, matrices RAID multidisco, Logical Volume Manager (LVM) e incluso particiones respaldadas por archivos.
Para qué sirve el cifrado LUKS...
LUKS es flexible y ofrece diversos conjuntos de cifrado.
Por defecto en un entorno Red Hat 8 Linux, LUKS utiliza una clave AES (Advanced Encryption Standard) de 512 bits altamente segura. Los volúmenes LUKS encriptados contienen múltiples ranuras para claves, lo que permite a los usuarios añadir claves de seguridad o frases de contraseña, además de utilizar funciones como la revocación de claves y la protección contra frases de contraseña erróneas mediante Argon2.
...¿y para qué no sirve?
LUKS no es una buena opción para instancias de Couchbase desplegadas en plataformas que no sean Linux, como MacOS y Windows. Tampoco es adecuado para clientes que no tengan un contrato de soporte activo con el proveedor del sistema operativo.
Tecnologías de cifrado estándar proporcionadas por el sistema operativo, como Microsoft Encrypted File System (EFS) o Socios externos de Couchbase para el cifrado en reposo son una mejor opción si su organización no utiliza Linux o no tiene un contrato de asistencia con un proveedor de sistemas operativos.
Uso de LUKS Security para cifrar los datos de Couchbase en reposo
Existen varias formas de implementar LUKS en un entorno Linux, la más habitual es utilizar dm-crypt(parte de la infraestructura de mapeo de dispositivos a nivel del núcleo) y el módulo cryptsetup utilidad de línea de comandos para configurar dm-crypt objetivos.
En el ejemplo de código que sigue, te mostraré un ejemplo de comandos que he usado en mi cluster de Ubuntu 16 Couchbase Server para montar un disco con LVM. Luego te mostraré cómo desplegar un volumen lógico encriptado LUKS y montarlo como directorio de datos para un nodo de Couchbase Server. Esto asegura que si tu Couchbase Server es violado, los datos confidenciales en tus Buckets de Couchbase no serán accesibles a usuarios no autorizados.
Los pasos proporcionados aquí son anteriores a la versión General Availability (GA) de Couchbase Server 7.0 y pueden cambiar en el momento del lanzamiento o con futuras actualizaciones. Siempre consulte la documentación de Couchbase sobre seguridad para obtener la información más actualizada sobre el producto.
Siga los siguientes pasos en un nodo de Couchbase Server antes de añadirlo a un cluster y cargar datos en los Buckets. Nota: Estos pasos borrarán todo lo que se encuentre actualmente en el disco de destino, así que tenga cuidado y asegúrese de que está escribiendo en el dispositivo correcto.
1. Instale el lvm y cryptsetup utilidad.
|
1 |
sudo apt-get install lvm2 cryptsetup |
2. Configure la unidad (/dev/sdb) y crear una nueva partición primaria para usar LVM.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
$ sudo fdisk /dev/sdb Command (m for help): n Partition type p primary (0 primary, 0 extended, 4 free) e extended (container for logical partitions) Select (default p): p Partition number (1-4, default 1): 1 First sector (2048-2097151, default 2048): Last sector, +sectors or +size{K,M,G,T,P} (2048-2097151, default 2097151): Created a new partition 1 of type 'Linux' and of size 1023 MiB. Command (m for help): t Selected partition 1 Partition type (type L to list all types): 8e Changed type of partition 'Linux' to 'Linux LVM'. Command (m for help): p Disk /dev/sdb: 1 GiB, 1073741824 bytes, 2097152 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0x980c1049 Device Boot Start End Sectors Size Id Type /dev/sdb1 2048 2097151 2095104 1023M 8e Linux LVM Command (m for help): w The partition table has been altered. Calling ioctl() to re-read partition table. Syncing disks. |
3. Configurar LVM para utilizar /dev/sdb1 como un volumen físico.
|
1 2 |
$ sudo pvcreate /dev/sdb1 Physical volume "/dev/sdb1" successfully created |
4. Cree un grupo de volúmenes en el que residirá el volumen físico. Lo llamaremos couchbase.
|
1 2 |
$ sudo vgcreate couchbase /dev/sdb1 Volume group "couchbase" successfully created |
5. Cree un volumen lógico de 500 MB denominado cbdata en el couchbase grupo de volumen.
|
1 2 |
$ sudo lvcreate -L 500M -n cbdata /dev/couchbase Logical volume "cbdata" created. |
6. Utiliza el cryptsetup para cifrar el cbdata volumen lógico.
|
1 2 3 4 5 6 7 8 9 10 |
$ sudo cryptsetup --verbose --verify-passphrase luksFormat /dev/couchbase/cbdata WARNING! ======== This will overwrite data on /dev/couchbase/cbdata irrevocably. Are you sure? (Type uppercase yes): YES Enter passphrase: Verify passphrase: Command successful. |
7. Desbloquear el cifrado cbdata y hacerlo accesible como un dispositivo llamado cbdata-luks.
|
1 2 |
$ sudo cryptsetup luksOpen /dev/couchbase/cbdata cbdata-luks Enter passphrase for /dev/couchbase/cbdata: |
8. Escribir un sistema de archivos sobre cbdata-luks dispositivo.
|
1 2 3 4 5 6 7 8 9 10 11 |
$ sudo mkfs.ext4 /dev/mapper/cbdata-luks mke2fs 1.42.13 (17-May-2015) Creating filesystem with 509952 1k blocks and 127512 inodes Filesystem UUID: a26d318b-afdd-45ca-857a-063899183ffd Superblock backups stored on blocks: 8193, 24577, 40961, 57345, 73729, 204801, 221185, 401409 Allocating group tables: done Writing inode tables: done Creating journal (8192 blocks): done Writing superblocks and filesystem accounting information: done |
9. Cree un directorio en /couchbase-data para montar el sistema de archivos, que se utilizará para el directorio de datos Couchbase, a continuación, montar el sistema de archivos.
|
1 2 |
$ sudo mkdir /couchbase-data $ sudo mount /dev/mapper/cbdata-luks /couchbase-data |
10. Ahora tenemos un dispositivo de almacenamiento encriptado LUKS montado en /couchbase-dataque utilizamos como destino para el directorio de datos de Couchbase Server. Verifique esto con el monte y cryptsetup comandos así:
|
1 2 3 |
$ mount … /dev/mapper/cbdata-luks on /couchbase-data type ext4 (rw,relatime,data=ordered) |
|
1 2 3 4 5 6 7 8 9 |
$ sudo cryptsetup status /dev/mapper/cbdata-luks /dev/mapper/cbdata-luks is active and is in use. type: LUKS1 cipher: aes-xts-plain64 keysize: 256 bits device: /dev/mapper/couchbase-cbdata offset: 4096 sectors size: 1019904 sectors mode: read/write |
Más información sobre Couchbase 7.0
¿Listo para profundizar en Couchbase 7.0 y todas sus características? Echa un vistazo a estos recursos:
Documentación
Notas de la versión de Couchbase 7.0
Entradas de blog relacionadas
El lenguaje de consulta N1QL ya admite transacciones ACID distribuidas
Descargas y asistencia
La asistencia al cliente de Enterprise Edition está disponible a través de sus canales de asistencia habituales. El soporte de la comunidad está disponible a través de los foros de Couchbase
Prueba Couchbase 7