La autorización y la autenticación son importantes para Couchbase. En marzo, He publicado en el blog algunas de las nuevas funciones de control de acceso basado en roles (RBAC) que estamos mostrando en las Couchbase Server 5.0 Developer Builds. Este mes, me gustaría entrar un poco más en detalle ahora que el April Couchbase Server 5.0 Developer Build está disponible (asegúrate de hacer clic en la pestaña "Desarrollador").

Autenticación y autorización

En versiones anteriores de Couchbase, los buckets estaban protegidos por una contraseña. En 5.0, las contraseñas de cubo para la autorización han desaparecido. Ya no se puede crear una "contraseña de cubo" para la autorización. En su lugar, debes crear uno (o más) usuarios que tengan diferentes niveles de autorización para ese bucket. Observe que ya no hay ningún campo de "contraseña" (ni siquiera en la "Configuración avanzada de cubos"):

Create a new Couchbase bucket - no password for authorization

De este modo, ya no tiene que dar una contraseña que dé acceso completo a un cubo. Puede ajustar la autorización de los cubos y proporcionar varios conjuntos de credenciales con distintos niveles de acceso. Esto le ayudará a reforzar la seguridad y a reducir su exposición.

Nota: El usuario administrador todavía existe, y tiene permiso para hacer todo. Así que todavía puedo ejecutar consultas N1QL (por ejemplo) en ese bucket mientras estoy conectado como cuenta de administrador. Sin embargo, esta no es la cuenta que deberías estar usando desde tus clientes.

Crear un usuario autorizado

Para crear un nuevo usuario, debes iniciar sesión como administrador (o como un usuario que tenga el rol de Admin). Ve a la pestaña "Seguridad" y podrás ver una lista de usuarios y añadir otros nuevos.

Cree un nuevo usuario haciendo clic en "AÑADIR USUARIO". Introduzca la información del usuario. Puede que desee crear un usuario para una persona (por ejemplo, "Matt"), o puede que desee crear un usuario para un servicio (por ejemplo, "MyAspNetApplication"). Asegúrese de introducir una contraseña segura y, a continuación, seleccione las funciones adecuadas para el usuario que desea crear.

Por ejemplo, creemos un usuario "Matt" que sólo tenga acceso para ejecutar SELECCIONE en el cubo que acabo de crear. En "Roles", despliego "Query Roles", luego "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

Autorización en acción

Cuando salgo de la cuenta de administrador, y vuelvo a entrar como "Matt", puedo ver que el nivel de autorización que tengo está severamente restringido. Sólo son visibles "Panel de control", "Servidores", "Configuración" y "Consulta". Si voy a "Consulta" puedo ejecutar SELECCIONAR 1;

Execute SELECT query logged in with only Query authorization

Si intento algo más complejo, como SELECT COUNT(1) FROM mynewbucketme aparecerá un mensaje de error del tipo:

Por lo tanto, parece que tengo la autenticación correcta para iniciar sesión, y tengo la autorización correcta para ejecutar un SELECCIONEpero no tengo la autorización correcta para leer los datos. Volveré a entrar como administrador y añadiré la autorización de lector de datos.

User now has authorization for two roles

En este momento, cuando me conecto con "Matt", SELECT COUNT(1) FROM mynewbucket; funcionará. Si nos está siguiendo, intente SELECT * FROM mynewbucket;. Aparecerá un mensaje de error que indica que no hay ningún índice disponible. Pero, si intenta CREAR ÍNDICE necesitarás otro permiso para hacerlo. Ya te haces una idea.

Nueva funcionalidad N1QL

Además de las nuevas funciones de autenticación y autorización, N1QL incorpora otras nuevas.

conceder y revocar funciones

Puedes otorgar y revocar roles con comandos N1QL. Para ello se necesita acceso de administrador.

He aquí un ejemplo rápido de concesión SELECCIONE autorización de consulta a un usuario llamado "Matt" en un bucket llamado "mynewbucket":

GRANT ROLE query_select(mynewbucket) A Matt;

Y del mismo modo, puedes REVOCAR un rol haciendo algo similar:

REVOKE ROLE query_select(mynewbucket) DE Matt;

Creación de usuarios con REST

No hay forma (actualmente) de crear usuarios con N1QL, pero puedes usar la API REST para hacerlo. La documentación completa vendrá más adelante, pero aquí está cómo se puede crear un usuario con la API REST:

  • PUT al /configuración/rbac/usuarios/builtin/ punto final.
  • Utilice credenciales de administrador para este punto final (por ejemplo, Administrador:contraseña con autenticación básica).
  • El cuerpo debe contener:
    • roles=
    • contraseña=

A continuación se muestra un ejemplo. Puede utilizar cURL, Cartero, Violinistao cualquiera que sea su herramienta favorita para realizar la solicitud.

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

Cuerpo: roles=query_select[minuevocubo],query_update[minuevocubo]&password=contraseña

Lo anterior asume que usted tiene un usuario/contraseña de administrador de Administrator/password (de ahí el auth token básico de QWRtaW5pc3RyYXRvcjpwYXNzd29yZA==).

Después de ejecutarlo, 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 RBAC es demasiado rico para cubrirlo en una sola entrada de blog, y la documentación completa está en camino. Mientras tanto, aquí tienes algunos detalles que pueden ayudarte a empezar con la vista previa:

  • Es posible que se haya dado cuenta de que todos en las capturas de pantalla anteriores. Puede asignar funciones a un usuario cubo por cubo, o puede dar permiso a todos (incluso los que aún no se han creado).
  • Cubrí los permisos de FTS en la entrada anterior del blog, pero hay permisos que cubren casi todo: vistas, administración de cubos, copias de seguridad, supervisión, DCP, índices, etc.
  • Ya no se pueden crear buckets con contraseña. El equivalente es crear en su lugar un usuario con el nombre como el cubo, y darle autorización a un rol llamado "Bucket Full Access". Esto será útil a efectos de actualización y transición.

Seguimos esperando sus comentarios.

Permanezca atento a la Blog de Couchbase para más información sobre la próxima versión para desarrolladores.

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

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

Bichos: Si encuentra un error (algo que no funciona o que no funciona como cabría esperar), presente un problema en nuestra sección Sistema JIRA en issues.couchbase.com o envíe una pregunta a Foros de Couchbase. O ponte en contacto conmigo con una descripción del problema. Estaré encantado de ayudarte o de enviar el error por ti (mis gestores de Couchbase me dejan hacerme selfies en nuestro sofá caricaturescamente grande cuando envío buenos errores).

Comentarios: Dígame lo que piensa. ¿Algo que no te guste? ¿Algo que te guste mucho? ¿Falta algo? Ahora puedes dar tu opinión directamente desde la Consola Web de Couchbase. Busca el icono feedback icon en la parte inferior derecha de la pantalla.

En algunos casos, puede resultar difícil decidir si su comentario es un error o una sugerencia. Usa tu mejor criterio o, de nuevo, no dudes en ponerte en contacto conmigo para pedirme ayuda. Quiero saber de ti. La mejor forma de contactar conmigo es Twitter @mgroves o envíeme un correo electrónico matthew.groves@couchbase.com.

Autor

Publicado por Matthew Groves

A Matthew D. Groves le encanta programar. No importa si se trata de C#, jQuery o PHP: enviará pull requests para cualquier cosa. Lleva codificando profesionalmente desde que escribió una aplicación de punto de venta en QuickBASIC para la pizzería de sus padres, allá por los años noventa. Actualmente trabaja como Director de Marketing de Producto para Couchbase. Su tiempo libre lo pasa con su familia, viendo a los Reds y participando en la comunidad de desarrolladores. Es autor de AOP in .NET, Pro Microservices in .NET, autor de Pluralsight y MVP de Microsoft.

5 Comentarios

  1. tal vez usted puede publicar conjuntos de roles de ejemplo para algunos casos de uso frecuente, como el papel de Sync Gateway conectar Couchbase Server, el papel para ejecutar FTS, el papel para ejecutar declaración preparada.

    1. La documentación está en camino :)

      Las funciones del FTS ya se trataron en la primera parte: https://www.couchbase.com/authentication-authorization-rbac/

      No creo que exista un rol específico para la conectividad de Sync Gateway. Probablemente sería algo así como un papel Cluster Admin o Bucket Admin o algo por el estilo.

      Las sentencias preparadas probablemente estarían cubiertas por los roles query_*.

  2. [...] Ver la Introducción de Matthew al control de acceso basado en roles: Parte 1 & Parte 2 [...]

  3. Tyler Mitchell mayo 4, 2017 a 1:35 pm

    Para utilizar las nuevas funciones tendrá que actualizar sus aplicaciones cliente. He aquí cómo hacerlo: https://www.couchbase.com/new-sdk-authentication/

Dejar una respuesta