Seguridad

Autenticación y autorización con RBAC en .NET

La autenticación y autorización han mejorado enormemente en Couchbase Server 5.0. Llevamos tiempo publicando en el blog las nuevas funciones RBAC de la versión preliminar para desarrolladores.

Ahora que Couchbase Server 5.0 Beta ha sido lanzado, estoy escribiendo una entrada en el blog más en profundidad sobre cómo utilizar el SDK .NET de Couchbase junto con estas nuevas características.

Los ejemplos de código completos utilizados en esta entrada del blog son los siguientes disponible en Github.

Crear un cubo

Como he mencionado en los posts anteriores, los días de los buckets con contraseñas han pasado. El futuro pertenece a los usuarios, usuarios que tienen permisos específicos para cubos específicos.

Empecemos por crear un bucket. En la interfaz de usuario de Couchbase, inicia sesión como el administrador que creaste al instalar Couchbase. Ve a "Buckets" y haz clic en "ADD BUCKET" (arriba a la derecha). Verás el cuadro de diálogo "Añadir cubo de datos". Observa que ya no existe el campo "contraseña" (ni siquiera en "Configuración avanzada de cubos").

Add new bucket - no authentication options anymore

Dale al cubo un nombre y una cantidad de memoria, y haz clic en "Añadir cubo". Ya tiene un cubo. Pero, aparte de un administrador en la interfaz de usuario, nadie puede acceder a este cubo todavía.

Crear un usuario

Para tener acceso a este bucket, debes crear un usuario. En Couchbase 5.0, los "usuarios" son una característica completamente nueva, trayendo características más ricas de autenticación y autorización a Couchbase Server.

Mientras sigue conectado como administrador, vaya a "Seguridad" para ver una lista de usuarios. Haz clic en "AÑADIR USUARIO" (arriba a la derecha).

Adding a new user for authentication and authorization

Cree un usuario con el nombre y la contraseña que desee. Puede elegir qué funciones tiene el usuario y para qué cubos (si procede). Vamos a dar a este usuario los roles de Escritor de Datos y Lector de Datos, para el cubo que se acaba de crear (por ejemplo, "mi cubo"), pero NO cualquier rol de Consulta.

Adding authorization for data read and data write

Una vez añadido el usuario, puede pasar el ratón por encima de los roles para obtener una descripción de lo que significa el rol.

Authorization tool tip

Autenticación y autorización con el SDK .NET de Couchbase

Ahora que tenemos un cubo y un usuario, veamos cómo utilizarlos con el SDK .NET.

Empiece por crear un Grupo objeto.

Tiene un clúster, pero su programa aún no se ha autenticado. Utilice un PasswordAuthenticator para especificar las credenciales. A continuación, utilice ese objeto con la función Autentificar método. En este ejemplo, estoy usando credenciales incorrectas.

Ahora, si intento realizar una operación como OpenBucket en el cluster, se lanza una excepción.

Error in authentication

Ahora, intentémoslo de nuevo usando las credenciales correctas. La autenticación funcionará. Pero hablemos ahora de la autorización.

Recuerda que sólo le di a este usuario los roles de Escritor de Datos y Lector de Datos (para mybucket). Por lo tanto, si me autentifico e inserto un documento ahora, funciona.

Console output when authentication and authorization are valid

Pero si intentara, por ejemplo, ejecutar un Consulta N1QL (SQL para JSON)fallaría. Esto se debe a que ese usuario no está autorizado a ejecutar consultas.

Sólo estoy haciendo un simple CONTAR(1) consulta de agregación. Como ese usuario no está autorizado, esto es lo que se muestra:

No authorization for running a query

Una cosa más

Si te preocupa el efecto que esto tendrá al actualizar de Couchbase Server 4.x a Couchbase Server 5.0, aquí tienes un consejo. Si creas un usuario con el mismo nombre que el bucket (por ejemplo, un bucket llamado "foo" y un usuario llamado "foo"), entonces las antiguas APIs .NET de Couchbase que todavía esperan una contraseña de bucket funcionarán como antes. Sólo dale a ese usuario un rol de "Administrador de Cluster" por ahora. Esta es una buena solución temporal hasta que puedas rediseñar tu sistema para usar una aproximación regimentada a los roles.

Resumen

¡Couchbase Server 5.0 ya está en beta! Estas características de autenticación basada en roles (RBAC) hacen de Couchbase un líder en seguridad de bases de datos de documentos, y personalmente estoy muy contento de que Couchbase vaya en esta dirección. La seguridad es importante, pero a menudo los desarrolladores la pasan por alto.

Si tiene alguna pregunta, por favor pregunte en los foros de Couchbasedeje un comentario a continuación, o ping me on Twitter @mgroves.

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

Author

Posted by Matthew Groves

Matthew D. Groves is a guy who loves to code. It doesn't matter if it's C#, jQuery, or PHP: he'll submit pull requests for anything. He has been coding professionally ever since he wrote a QuickBASIC point-of-sale app for his parent's pizza shop back in the 90s. He currently works as a Senior Product Marketing Manager for Couchbase. His free time is spent with his family, watching the Reds, and getting involved in the developer community. He is the author of AOP in .NET, Pro Microservices in .NET, a Pluralsight author, and a Microsoft MVP.

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.