Servidor Couchbase

Autorización y Autenticación con RBAC (Parte 2)

Lectura de 6 minutos

La autorización y la autenticación son importantes para Couchbase. En marzo, Escribí en mi blog sobre algunos de los nuevos controles de acceso basado en roles (RBAC) que estamos mostrando en las compilaciones para desarrolladores de Couchbase Server 5.0. Este mes, me gustaría entrar un poco más en detalle ahora que el Ya está disponible la compilación para desarrolladores de abril de Couchbase Server 5.0 (asegúrate de hacer clic en la pestaña “Desarrollador”).

Autenticación y autorización

En versiones anteriores de Couchbase, los “buckets” se protegían con contraseña. En la versión 5.0, las contraseñas de los buckets para la autorización ya no existen. Ya no se puede crear una “contraseña de bucket” para la autorización. En su lugar, debe crear uno (o más) usuarios que tengan diferentes niveles de autorización para ese bucket. Observe que ya no hay un campo de “contraseña” (ni siquiera en la "Configuración avanzada del bucket"):

Create a new Couchbase bucket - no password for authorization

Así que ahora ya no tienes que compartir una contraseña que otorgue acceso total a un bucket. Puedes ajustar con precisión la autorización del bucket y otorgar varios conjuntos de credenciales con distintos niveles de acceso. Esto te ayudará a reforzar la seguridad y a reducir tu exposición.

Nota: El usuario administrador todavía existe y tiene permiso para hacer todo. Por lo tanto, todavía puedo ejecutar consultas N1QL (por ejemplo) en ese bucket mientras he iniciado sesión como una cuenta de administrador. Sin embargo, esta no es la cuenta que debes estar usando desde tus clientes.

Creación de un usuario autorizado

Para crear un nuevo usuario, debes haber iniciado sesión como administrador (o como un usuario con el rol de administrador). Ve a la pestaña “Seguridad”; ahí podrás ver una lista de usuarios y agregar otros nuevos.

Cree un nuevo usuario haciendo clic en “AGREGAR USUARIO”. Ingrese la información del usuario. Es posible que desee crear un usuario para una persona (por ejemplo, “Matt”), o tal vez quiera crear un usuario para un servicio (por ejemplo, “MyAspNetApplication”). Asegúrese de ingresar una contraseña segura y luego seleccione los roles apropiados para el usuario que desea crear.

Por ejemplo, creemos un usuario llamado “Matt” que solo tenga acceso para ejecutar SELECT consultas en el bucket que acabo de crear. En “Roles”, agrando “Query Roles”, después “Query Select”, y marco la casilla de “mynewbucket”, y luego “Save” para finalizar el usuario.

Create a new user with authorization to run a select query

La autorización en la práctica

Cuando cierro sesión en la cuenta de administrador y vuelvo a iniciar sesión como “Matt”, puedo ver que el nivel de autorización que tengo está severamente restringido. Solo “Dashboard”, “Servers”, “Settings” y “Query” son visibles. Si voy a “Query” puedo ejecutar SELECCIONAR 1;

Execute SELECT query logged in with only Query authorization

Si intento algo más complejo, como SELECT COUNT(1) FROM mynewbucket, me aparece un mensaje de error como este:

Entonces, parece que tengo la autenticación correcta para iniciar sesión y tengo la autorización correcta para ejecutar una SELECT, pero no tengo la autorización necesaria para leer los datos. Volveré a iniciar sesión como administrador y agregaré la autorización de «Lector de datos».

User now has authorization for two roles

En este punto, cuando inicio sesión con “Matt”, SELECT COUNT(1) FROM mynewbucket; funcionará. Si estás siguiendo estos pasos, prueba SELECT * FROM mynewbucket;. Aparecerá un mensaje de error indicando que no hay ningún índice disponible. Sin embargo, si intentas CREAR ÍNDICE Necesitarás otro permiso para hacer eso. Ya te haces una idea.

Nuevas funciones de N1QL

Hay algunas funciones nuevas de N1QL que complementan las nuevas características de autenticación y autorización.

OTORGAR y REVOCAR FUNCIÓN

Puedes otorgar y revocar roles mediante comandos N1QL. Para ello, necesitas acceso de administrador.

Aquí hay un ejemplo rápido de cómo otorgar SELECT Solicitar autorización para un usuario llamado “Matt” en un bucket llamado “mynewbucket”:

GRANT ROLE query_select(mynewbucket) A Matt;

Del mismo modo, puedes REVOCAR un rol siguiendo un procedimiento similar:

REVOKE ROLE query_select(mynewbucket) DE Matt;

Creación de usuarios con REST

No hay forma (por ahora) de crear usuarios con N1QL, pero puedes usar la API REST para hacerlo. La documentación completa llegará más adelante, pero aquí te explicamos cómo puedes crear un usuario con la API REST:

  • PONER en el /configuración/rbac/usuarios/integrados/ punto final.
  • Use credenciales de administrador para este punto de conexión (por ejemplo, Administrator:password con autenticación básica)
  • El cuerpo debe contener:
    • roles=
    • contraseña=

A continuación, se muestra un ejemplo. Puede usar cURL, Cartero, Violinista, o tu herramienta favorita para hacer la solicitud.

URL: PONER https://localhost:8091/settings/rbac/users/builtin/restman

Encabezados: Content-Type: application/x-www-form-urlencoded
Autorización: Basic QWRtaW5pc3RyYXRvcjpwYXNzd29yZA==

Cuerpo: roles=query_select[mynewbucket],query_update[mynewbucket]&password=password

Lo anterior asume que tienes un usuario/contraseña de administrador de Administrator/password (de ahí el token de autenticación básica QWRtaW5pc3RyYXRvcjpwYXNzd29yZA==).

Una vez que hayas ejecutado eso, verás un nuevo usuario llamado “restman” con los dos permisos especificados.

Create a new user with a REST command

¡Espera, hay más!

El sistema de RBAC es demasiado complejo para cubrirlo en una sola publicación de blog, y la documentación completa está en camino. Mientras tanto, aquí tienes algunos detalles que podrían ayudarte a comenzar con la versión preliminar:

  • Es posible que hayas notado todo opción que se muestra en las capturas de pantalla anteriores. Puedes asignar roles a un usuario para cada depósito por separado, o puedes otorgar permiso para todo cubos (incluso cubos que aún no se han creado).
  • Cubrí los permisos de FTS en la publicación anterior del blog, pero hay permisos que cubren prácticamente todo: vistas, administración de cubos, respaldos, monitoreo, DCP, índices, etc.
  • Ya no se pueden crear buckets con contraseña. El equivalente es crear un usuario con el mismo nombre que el bucket y otorgarle autorización a un rol llamado “Bucket Full Access”. Esto será útil para fines de actualización y transición.

¡Seguimos esperando tus comentarios!

Mantente al tanto de las novedades en el Blog de Couchbase para obtener información sobre las novedades de la próxima versión para desarrolladores.

¿Te interesa probar algunas de estas nuevas funciones? Descargar Couchbase Server 5.0 Abril 2017 Developer Build ¡hoy!

El lanzamiento de la versión 5.0 se acerca rápidamente, ¡pero aún queremos saber tu opinión!

ErroresSi encuentras un error (algo que esté roto o no funcione como esperas), por favor abre una incidencia en nuestro Sistema JIRA en issues.couchbase.com o envíe una pregunta en el Foros de Couchbase. O bien, contáctame con una descripción del problema. Con mucho gusto te ayudaré o reportaré el error por ti (mis coordinadores de Couchbase me dejan tomarme selfies en nuestro sofá, que es tan grande que parece de caricatura, cuando reporto errores importantes).

RetroalimentaciónHazme saber lo que piensas. ¿Algo que no te guste? ¿Algo que te guste mucho? ¿Falta algo? Ahora puedes enviar comentarios directamente desde la consola web de Couchbase. Busca el feedback icon icono en la parte inferior derecha de la pantalla.

En algunos casos, puede resultar complicado decidir si tu comentario es un error o una sugerencia. Usa tu buen juicio o, de nuevo, no dudes en contactarme si necesitas ayuda. Me gustaría saber tu opinión. La mejor manera de contactarme es: Twitter @mgroves o envíame un correo matthew.groves@couchbase.com.

Compartir este artículo

Autor

Matthew D. Groves es un tipo al que le encanta programar. No importa si se trata de C#, jQuery o PHP: envía solicitudes de incorporación de cambios para cualquier cosa. Se ha dedicado profesionalmente a la programación desde que escribió una aplicación de punto de venta en QuickBASIC para la pizzería de sus papás allá por los años 90. Actualmente trabaja como gerente sénior de mercadotecnia de productos en Couchbase. Dedica su tiempo libre a su familia, a ver a los Reds y a participar en la comunidad de desarrolladores. Es autor de *AOP in .NET* y *Pro Microservices in .NET*, colaborador de Pluralsight y MVP de Microsoft.

5 respuestas

  1. Avatar de atom992

    maybe you can post example roles sets for some frequently-used use case,such as the role of Sync Gateway connect Couchbase Server; the role to run FTS; the role to run prepared statement.

    1. Avatar de Matthew Groves, Developer Advocate

      Documentation is coming :)

      The FTS roles I covered in part 1: https://www.couchbase.com/authentication-authorization-rbac/

      I don’t think there’s a role specifically for Sync Gateway connectivity. It would probably be something like a Cluster Admin or Bucket Admin role or something like that.

      Prepared statements would probably be covered by query_* roles.

  2. […] See Matthew’s Introduction to Role-Based Access Control: Part 1 & Part 2 […]

  3. Avatar de Tyler Mitchell
    Tyler Mitchell

    To use the new features you have will need to upgrade your client applications. Here’s how: https://www.couchbase.com/new-sdk-authentication/

Deja un comentario

¿Listo para comenzar con Couchbase Capella?

Comenzar a construir

Visita nuestro portal para desarrolladores para explorar NoSQL, consultar recursos y comenzar con los tutoriales.

Usa Capella gratis

Empieza a usar Couchbase en tan solo unos clics. Capella DBaaS es la forma más fácil y rápida de comenzar.

Ponte en contacto

¿Quieres saber más sobre las ofertas de Couchbase? Permítenos ayudarte.