En el vertiginoso mundo actual, la seguridad de los datos es de suma importancia, sobre todo cuando se trata de información sensible. Un componente clave de la seguridad de datos es la autenticación, que protege los datos de ser robados. HashiCorp Vault es una de las tecnologías que pueden ayudar a las empresas a asegurar aún más el acceso a su base de datos Couchbase.
¿Cómo puede ayudarme HashiCorp a aumentar aún más la seguridad de mi base de datos?
HashiCorp Vault puede almacenar y gestionar de forma segura credenciales de bases de datos, como nombres de usuario y contraseñas, y generar dinámicamente otras nuevas cuando sean necesarias. Esto reduce el riesgo de exposición accidental o intencionada de credenciales y facilita su revocación o rotación cuando ya no se necesitan.
Vault también puede proporcionar registros de auditoría detallados de todos los accesos a la base de datos y del uso de credenciales, lo que puede ayudar a las organizaciones a cumplir diversos requisitos normativos y a controlar las actividades sospechosas.
En esta entrada del blog tutorial, vamos a ver cómo integrar Couchbase Server con HashiCorp Vault.
Paso 1: Configurar la bóveda
El primer paso es configurar una instancia de HashiCorp Vault. Puedes descargar el binario de Vault desde el sitio web oficial, puedes utilizar un gestor de paquetes como Homebrew o Chocolatey o puedes ejecutar Vault utilizando Docker. En esta entrada del blog vamos a utilizar Docker para configurar el entorno.
-
- Configurar la red Docker
|
1 |
docker network create dev_couchbase |
-
- Inicie Vault en un contenedor Docker. Para iniciar Vault en modo desarrollador con una contraseña de root de contraseñasimplemente utilice el siguiente comando.
|
1 2 3 4 5 6 7 |
docker run --cap-add=IPC_LOCK --name="couchbase_vault" --rm \ --network dev_couchbase \ -e VAULT_DEV_ROOT_TOKEN_ID=password \ -e VAULT_DEV_LISTEN_ADDRESS=0.0.0.0:8200 \ -e VAULT_ADDR=https://0.0.0.0:8200 \ -p 8200:8200 \ vault server -dev |
El comando Docker anterior inicia el servidor Vault en modo de desarrollo, lo que no se recomienda para uso en producción. Crea un almacén de datos en memoria que se borra cuando se apaga el servidor. Sin embargo, es perfecto para realizar pruebas.
La interfaz de usuario de la cámara acorazada se ejecuta en https://localhost:8200.

Puedes utilizar una "contraseña" como token para acceder a la interfaz de usuario de Vault, ya que hemos especificado que sea el token raíz.
Paso 2: Comprobar la configuración de Vault
Una vez que el servidor Vault está en funcionamiento, es necesario asegurarse de que el plugin de base de datos Couchbase está instalado.
Ejecute el siguiente comando para comprobar si el plugin está instalado:
|
1 |
docker exec -it "couchbase_vault" /bin/ash -c "vault login password && vault plugin list" | grep couchbase |
Nota: en el comando anterior, nombramos el contenedor bóveda_sofáUsando el comando anterior se ejecutan los comandos de la bóveda dentro del contenedor que ejecuta HashiCorp Vault.
La salida de este comando debería listar el plugin couchbase:
|
1 |
couchbase-database-plugin database v0.9.0+builtin |
Si quieres experimentar con Vault puedes usar el siguiente comando para abrir un shell dentro del contenedor que ejecuta Vault:
|
1 |
docker exec -it "couchbase_vault" /bin/ash |
Puedes autenticarte con el token raíz que configuramos antes:
|
1 |
vault login password |
Si no está familiarizado con Vault, consulte la página documentación de comandos.
Paso 3: Iniciar un servidor Couchbase de demostración
Abra una nueva ventana de terminal y ejecute el siguiente comando para iniciar Couchbase:
|
1 2 3 4 5 6 7 8 9 10 11 |
docker run -it --rm \ --network dev_couchbase \ --name="couchbase_main" \ -e COUCHBASE_USERNAME=Administrator \ -e COUCHBASE_PASSWORD=password \ -w /opt/couchbase \ -p 8091-8094:8091-8094 \ -p 11210:11210 \ -p 18091-18094:18091-18094 \ --health-cmd "curl --fail https://localhost:8091/ui/index.html || exit 1" --health-interval=5s --health-timeout=3s --health-retries=10 --health-start-period=5s \ couchbase/server:7.1.3 |
Paso 4: Configurar Couchbase Server
Abre un tercer terminal. Lo usaremos para ejecutar comandos Docker para configurar Vault y Couchbase en los siguientes pasos.
-
- Inicializar nuestro clúster Couchbase
|
1 2 3 4 5 6 7 8 9 10 11 |
docker exec -it couchbase_main \ ./bin/couchbase-cli cluster-init \ -c couchbase://127.0.0.1 \ --cluster-name couchbase-playground \ --cluster-username Administrator \ --cluster-password password \ --services data,index,query,fts \ --cluster-ramsize 2048 \ --cluster-index-ramsize 512 \ --index-storage-setting default \ --node-to-node-encryption off |
-
- Importar algunos datos de muestra
|
1 2 3 4 |
docker exec -it couchbase_main \ curl -v https://localhost:8091/sampleBuckets/install \ -u Administrator:password \ -d '["gamesim-sample","travel-sample", "beer-sample"]' |
Es hora de inspeccionar nuestro clúster utilizando la interfaz de usuario. Puede abrir la ventana consola en https://localhost:8091 y utilizar Administrador como nombre de usuario y contraseña como contraseña para iniciar sesión.

Paso 5: Crear un usuario de Couchbase Server
Ahora que el Vault está configurado, y Couchbase Server está funcionando, necesitamos crear un usuario Couchbase. Este usuario será utilizado por el plugin Couchbase Vault para acceder a Couchbase Server y crear usuarios bajo demanda.
|
1 2 3 4 5 6 7 8 9 10 |
docker exec -it couchbase_main \ ./bin/couchbase-cli user-manage \ --cluster https://127.0.0.1 \ --username Administrator \ --password password \ --set \ --rbac-username couchbase-vault-user \ --rbac-password password \ --roles admin \ --auth-domain local |
Una vez creado el usuario, aparecerá también como usuario en la interfaz de usuario:

Paso 6: Integrar Vault y Couchbase Server
Ahora que tanto Vault como Couchbase Server están configurados, necesitamos integrarlos. Sigue estos pasos:
-
- Habilitar el motor de base de datos de Vault
|
1 |
docker exec -it "couchbase_vault" /bin/ash -c "vault login password && vault secrets enable database" |
-
- Inicializar el plugin Couchbase Server
|
1 |
docker exec -it "couchbase_vault" /bin/ash -c 'PEM=$(wget -O - https://Administrator:password@couchbase_main:8091/pools/default/certificate|base64 -w0) && vault login password && vault write database/config/demo-db plugin_name="couchbase-database-plugin" hosts="couchbases://couchbase_main" username=couchbase-vault-user password=password tls=true insecure_tls=true base64pem=${PEM} allowed_roles=*' |
Permítanme explicar el comando anterior un poco más en detalle.
- Utilizando wget descargamos el certificado de Couchbase Server ya que lo necesitaremos más adelante.
- Inicie sesión en Vault con acceso a la cámara acorazada.
- Crear un demo-db mediante la función complemento de base de datos couchbase. Necesitamos especificar nuestro servidor Couchbase y un usuario (couchbase-vault-user) para conectarse a él.
Tenga en cuenta lo siguiente: especificamos roles_permitidos ser * que no se recomienda en producción ya que permitirá la creación de un usuario Couchbase con cualquier rol disponible.
-
- Gire la contraseña del usuario couchbase
Dado que utilizamos una contraseña muy insegura para establecer la conexión entre Couchbase Server y Vault, es importante cambiar la contraseña ejecutando el siguiente comando:
|
1 |
docker exec -it "couchbase_vault" /bin/ash -c "vault login password && vault write -f database/rotate-root/demo-db" |
Comprobemos que la contraseña se ha cambiado. Podemos hacerlo intentando iniciar sesión como couchbase-vault-user utilizando la interfaz de usuario de Couchbase.
Deberías ver un mensaje de error Login failed. Esto confirma que Vault fue capaz de rotar la contraseña del usuario que Vault utiliza para hablar con Couchbase Server:

Paso 7: Crear una política de demostración de Vault
Por último, tenemos que crear una política de bóveda. Usa el comando vault policy. Esta política se utilizará para crear nuevos usuarios en Couchbase
El siguiente comando creará un rol HashiCorp Vault que puede crear usuarios con roles ro_admin en Couchbase.
|
1 |
docker exec -it "couchbase_vault" /bin/ash -c 'vault login password && vault write database/roles/couchbase-ro-admin-role db_name=demo-db default_ttl="5m" max_ttl="1h" creation_statements='\''{"roles":[{"role":"ro_admin"}]}'\''' |
Paso 8: Probar la integración
Ahora que la integración está completa, podemos probarla. Siga estos pasos:
-
- Crear un usuario
|
1 |
docker exec -it "couchbase_vault" /bin/ash -c "vault login password && vault read database/creds/couchbase-ro-admin-role" |
Si todo está configurado correctamente debería ver un nuevo usuario creado como el que se muestra a continuación:
|
1 2 3 4 5 6 7 |
Key Value --- ----- lease_id database/creds/couchbase-ro-admin-role/8EeLw4eerXDMeMZuG37wgBxA lease_duration 5m lease_renewable true password ujkm5Da-BrG-WcOJLEdQ username V_TOKEN_COUCHBASE-RO-ADMIN-ROLE_ZAIDHM1UCOED9XDSTECN_1686320194 |
Ahora puede utilizar este usuario para iniciar sesión en Couchbase o utilizar la interfaz de usuario para ver si el usuario existe:

Nota: Este usuario tiene un contrato de arrendamiento de cinco minutos. Si espera cinco minutos, el usuario será desaprovisionado automáticamente por Vault. Puede utilizar Vault para prorrogar el contrato o crear un nuevo usuario. Para más información, consulte Documentación de Vault.
Conclusión
Integrar Couchbase Server con HashiCorp Vault es una gran manera de asegurar el acceso a tus datos. En esta entrada de blog, hemos visto cómo hacer precisamente eso. Siguiendo los pasos descritos anteriormente, puedes integrar fácilmente Couchbase Server con HashiCorp Vault.
Teniendo en cuenta que los pasos que hemos descrito son únicamente para pruebas y demostraciones, es crucial entender que cuando se trata de despliegues de producción seguros, adherirse a las mejores prácticas de la industria es primordial. Para garantizar que tanto tu Vault como tu servidor Couchbase están configurados y fortificados apropiadamente, lo cual va más allá del alcance de este artículo, te recomendamos encarecidamente que sigas estas prácticas recomendadas.
Hay algunas cosas a tener en cuenta a la hora de crear cuentas de usuario en Couchbase. La creación de usuarios es asíncrona en ns_server. Sólo estará 100% disponible en el nodo en el que se hizo la petición y luego se crean en los otros nodos de forma asíncrona. Como ejemplo, si se creara un usuario cada minuto y se borrara, se llegaría a 525600 usuarios borrados en un año, lo que sigue siendo seguro para muchos años. Sólo ten en cuenta que crear millones de usuarios podría tener un impacto en el rendimiento de creación de usuarios de tu cluster y crear muchos millones de usuarios está más allá de lo que hemos probado hasta ahora.