Couchbase Capella

Añadir RBAC externo a los datos de Couchbase usando Permit.io

A medida que las aplicaciones web crecen en complejidad, es esencial garantizar que sólo los usuarios adecuados tengan acceso a los datos de Couchbase.

Sin un sistema de control de acceso bien definido, los usuarios no autorizados pueden acceder a información sensible o realizar acciones perjudiciales.

Integración de Permiso con Couchbase proporciona una solución robusta para gestionar el control de acceso en aplicaciones que utilizan Couchbase como base de datos. Permit está diseñado para agilizar el proceso de autorización, lo que permite a los desarrolladores implementar el control de acceso de grano fino aprovechando las capacidades avanzadas de gestión de datos de Couchbase.

En esta guía, veremos cómo construir un sistema de peticiones simple en el que pasamos una consulta a Couchbase y comprobamos si el usuario relevante tiene acceso para ejecutar esa consulta basándonos en comprobaciones de formato basadas en reglas. Si el usuario carece de permiso, se le denegará la ejecución de la consulta, si tiene permiso, puede continuar.

¿Qué es Couchbase?

Couchbase es una robusta base de datos NoSQL, optimizada para almacenar y gestionar documentos JSON. Su capacidad para manejar objetos JSON es lo que la diferencia de los almacenes de valores clave tradicionales. Esta flexibilidad permite a los desarrolladores ser capaces de almacenar, recuperar y gestionar datos no estructurados o semi-estructurados fácilmente, por lo que es extremadamente útil para aplicaciones con modelos de datos en evolución.

Uno de los principales puntos fuertes de Couchbase es su Capacidad de consulta SQL que proporciona una sintaxis familiar similar a SQL para documentos JSON (antes conocido como N1QL). Esto permite a los desarrolladores realizar consultas potentes en sus datos JSON, como poder añadir expresiones de tabla comunes, uniones y mucho más. Esta capa de consulta de Couchbase permite almacenar datos en formato JSON y, al mismo tiempo, realizar consultas sofisticadas.

¿Qué es RBAC?

Control de acceso basado en funciones (RBAC) es un modelo que ayuda a simplificar la gestión de permisos dentro de las aplicaciones mediante la organización de los permisos del sistema en torno a roles en lugar de individuos específicos. Proporciona un enfoque para gestionar y restringir el acceso a recursos específicos dentro de una aplicación u organización concreta.

Para implementar el control de acceso externo basado en roles con Couchbase, aprovecharemos Permit.io, una solución end-to-end para gestionar permisos y roles de usuario con una UI sencilla. Crearemos una aplicación React con el paquete Express donde el usuario pasa la consulta SQL++ con la ayuda de Couchbase. Después, veremos si el usuario tiene el permiso correspondiente. Si no lo tienen, enviaremos un mensaje. Si lo tienen, podemos modificar la petición.

Configurar un clúster Couchbase

El primer paso es crear una cuenta gratuita en Capella. Para ello, vaya a nube.couchbase.com y elija Crear una cuentaUtiliza una combinación de correo electrónico y contraseña. También puedes registrarte con tu cuenta de GitHub o Google.

Una vez que haya creado su cuenta en Capella, puede proceder a crear su cluster de base de datos. Puede elegir el Grada libre para el clúster.

En la página de inicio de su cuenta, después de iniciar sesión, haga clic en el botón + Crear base de datos en la esquina superior derecha y rellene los datos necesarios, incluido el nombre que haya elegido para la base de datos.

Cuando esté listo, siga adelante y haga clic en el botón final Crear base de datos botón.

Ya ha creado un clúster. El siguiente paso es añadir un bucket para almacenar los datos. Un bucket es similar a una tabla de base de datos, pero con diferencias significativas. Dado que estás trabajando con datos JSON no estructurados y semiestructurados, un único bucket puede contener diversos tipos de datos.

Visite la página Herramientas de datos donde encontrará un conjunto de datos previamente importado denominado viaje-muestra conjunto de datos.

Puede insertar más documentos o crear cubos completamente nuevos si es necesario. Pero para esta demostración utilizaremos el viaje-muestra conjunto de datos.

La siguiente figura ilustra la relación entre los distintos tipos de documentos del conjunto de datos de la muestra de viajes. Muestra los campos de clave primaria, ID y tipo que tiene cada documento, junto con algunos otros campos representativos de cada tipo de documento.


Utilizaremos este conjunto de datos para nuestra demostración. Para interactuar con tus datos en Capella desde tu aplicación, necesitas conocer la cadena de conexión y crear las credenciales de acceso.

Puede encontrar la cadena de conexión pulsando el botón Conectar en la barra de navegación superior del salpicadero.

Para añadir credenciales de acceso, vaya a esta página en la configuración de Capella, como se muestra a continuación, y haga clic en el botón + Crear acceso a base de datos botón . Introduzca un nombre y una contraseña y haga clic en Guardar. Asegúrese de añadir inmediatamente las credenciales a un .env ya que después no podrás recuperar la contraseña.

Después de crear sus credenciales, su configuración de Capella está completa. Pasemos a la parte de RBAC.

Configuración de permisos RBAC en Permit.io

Asegúrese de haber configurado su cuenta en Permit.io y creado un proyecto. En esta demostración, vamos a utilizar el proyecto por defecto que se creó.

Diríjase a la sección Editor de políticas y, dentro de la sección Recursos, añada los recursos pertinentes correspondientes a la directiva viaje-muestra conjunto de datos.

En este caso, añadiremos los recursos como Ruta, Aeropuerto, Hotel, y Línea aérea.

Asegúrese de que ha añadido las acciones pertinentes.

A continuación, diríjase al Funciones para añadir las funciones de usuario específicas asociadas al conjunto de datos de la muestra de viajes.

Para el conjunto de datos que estamos utilizando, tendrás que añadir las siguientes funciones: Viajero, Agente de viajes, Personal de la compañía aérea y Personal del hotel.


Ahora, dirígete a la Redactora política y defina las definiciones de control de acceso basadas en roles relevantes para cada rol específico correspondiente a los recursos definidos. Puede consultar en la imagen siguiente los atributos específicos que le ayudarán a crear las políticas. A continuación, vaya a la sección Redactora políticamarque todas las casillas de verificación como se muestra a continuación y guarde los cambios.

A continuación, dirígete a la sección de directorio para crear un nuevo tenant. Una vez creado el inquilino, añada usuarios en función de sus funciones.

Crearemos nuevos usuarios para el personal de los hoteles, las agencias de viajes y los viajeros.


Para cada usuario, añada su correo electrónico, nombre, apellidos y función específica en la sección de acceso de nivel superior.

Eso es todo lo que hizo falta para crear un modelo de control de acceso basado en funciones (RBAC) para el conjunto de datos de muestra de viajes utilizando Permit UI.

Implementación de RBAC detallado para Couchbase con Permit.io

Ahora vamos a implementar nuestro analizador de consultas SQL++ de Couchbase con Permit.

Primero, configuraremos un proyecto Node.js con Express para nuestro servidor backend. Usaremos el SDK de Couchbase para Node.js y el SDK de Permit.io.

Aquí está nuestro paquete.json con las dependencias necesarias:

Implantación del servidor

Desglosémoslo en componentes clave:

Inicialización

Comenzamos configurando nuestro servidor Express e inicializando el cliente Permit.io:

Análisis de consultas SQL

Para trabajar con las consultas entrantes de Couchbase, necesitamos parsearlas. Hemos implementado un simple analizador que extrae las cláusulas SELECT, FROM y WHERE de la consulta de entrada.

Veamos los componentes principales de nuestro analizador sintáctico:

Analizador de consultas

La clase QueryParser es la base de nuestra implementación de seguridad. Se encarga de dos tareas críticas:

  1. Análisis de consultas: Parses consultas SQL++ para determinar:
    • Tipo de operación SELECT, UPDATE, DELETE, INSERT
    • Recurso al que se accede
    • Validación de la estructura de consulta

 

2. Validación de seguridad: Implementa controles de seguridad para evitar la inyección SQL y otros ataques:

Gestión de permisos

En TravelQueryChecker se encarga de la lógica central de los permisos:

  1. Inicialización: Establece conexiones con Permit.io y Couchbase:

 

  1. Comprobación de permisos: Verifica los permisos de los usuarios a través de Permit.io:

Esta función utiliza el Permit.io SDK para comprobar si un usuario tiene permiso para realizar una acción específica en un recurso.

3. Ejecución de consultas: Gestiona el flujo completo desde la comprobación de permisos hasta la ejecución de la consulta:

Punto final de la API

Por último, exponemos un punto final de la API para gestionar las consultas entrantes:

 

Conexión Couchbase

Ahora definiremos el código de conexión a Couchbase en nuestro servidor backend Express, que nos ayudará a conectarnos al Cluster de Couchbase:

Código Frontend

Para demostrar la funcionalidad de la integración, hemos creado un sencillo frontend React que permite a los usuarios introducir consultas y ver los resultados.

Para la configuración, puede comprobar este código para los componentes de interfaz de usuario existentes:

Este componente React dado permite a los usuarios introducir una consulta y su identificador de usuario, y luego muestra los resultados o cualquier error relacionado con los permisos.

Para obtener el código completo, consulte la página Permiso-Demo Repositorio GitHub.

Demo

Con todo en su lugar, puede ejecutar el servidor Express backend y la aplicación React por separado. Una vez que ambos se estén ejecutando, verás una interfaz de usuario como la siguiente. Añade la consulta y el usuario correspondiente, luego haz clic en el botón Comprobar permisos botón.

Haga clic en la imagen para ver el vídeo de demostración

En el ejemplo anterior, puede ver el usuario que tiene permiso y el usuario que no tiene permiso para acceder al recurso.

Conclusión

En este tutorial, exploramos cómo instalar y configurar Permit para añadir ajustes RBAC para el conjunto de datos de muestra de viajes de Couchbase y cómo comprobar los permisos para una consulta SQL++ dada.

¿Y si desea un nivel de control más granular que las funciones de usuario, centrándose en identidades específicas de usuario? Para eso y mucho más, le recomendamos que siga explorando nuestros materiales de aprendizaje, como diferencia entre RBAC y ABAC y añadir ABAC a su aplicación con Permit.

¿Quiere saber más sobre la autorización? ¿Tiene alguna pregunta? Póngase en contacto a nosotros en nuestro Comunidad Slack.

 

 

Comparte este artículo
Recibe actualizaciones del blog de Couchbase en tu bandeja de entrada
Este campo es obligatorio.

Autor

Publicado por Shivay Lamba, Desarrollador Evangelista

Deja un comentario

¿Listo para empezar con Couchbase Capella?

Empezar a construir

Consulte nuestro portal para desarrolladores para explorar NoSQL, buscar recursos y empezar con tutoriales.

Utilizar Capella gratis

Ponte manos a la obra con Couchbase en unos pocos clics. Capella DBaaS es la forma más fácil y rápida de empezar.

Póngase en contacto

¿Quieres saber más sobre las ofertas de Couchbase? Permítanos ayudarle.