¿Sabes cómo gestiona Google la autorización de usuarios?

En cualquier plataforma software multi-usuario encontramos un sistema de gestión de permisos o roles de usuario para poder responder a las preguntas "¿puede el usuario X realizar la acción Y?", o "¿puede el usuario X acceder al item Y?". No existe una manera estándar de gestionar este control de acceso. Por eso, la mayoría de compañías desarrollan su propio servicio de autorización ad-hoc. Y Google no es una excepción.

El servicio de autorización de Google es Zanzibar. Esta herramienta les permite configurar listas de acceso de manera centralizada para cada uno de sus servicios (Calendar, Drive, YouTube, etc...).

Al tratarse de un servicio transversal a todos los productos de la compañía y, por tanto, un posible punto de errores críticos, el desarrollo de Zanzibar se ha enfocado principalmente en la consistencia, la flexibilidad y la alta disponibilidad. Como dato curioso, en los últimos años, Google Zanzibar ha tenido una disponibilidad del 99.999%.

Internamente, Google Zanzibar almacena las listas de acceso de millones de usuarios en una base de datos Spanner: el sistema de almacenamiento escalable y distribuido desarrollado por la misma compañía (https://research.google/pubs/pub39966/).

Pero, ¿qué forma tienen estas listas de acceso de Zanzibar? Cada relación entre un usuario y un objeto se representa usando tuplas. La idea es sencilla, aquí van unos ejemplos.

  • El usuario 25 es el propietario de la imagen 31:

picture:31#owner@25

  • El usuario 13 es miembro del grupo devs:

group:devs#member@13

  • Los miembros del grupo devs son "viewers" del documento 982:

doc:982#viewer@group:devs#member

Google Zanzibar permite al usuario crear los objetos (documento, imagen, grupo, etc...) y las relaciones (miembro, owner, etc...) que necesite, según la naturaleza de la aplicación que se esté desarrollando.

Los clientes de Zanzibar pueden invocar varias operaciones sobre el servicio de autorización: leer tuplas, crear nuevas tuplas, suscribirse a cambios y comprobar si una tupla existe. Al ser un servicio usado por todos (o casi todos) los productos de la compañía y, además, a una escala gigantesca en cuanto a número de peticiones, Google Zanzibar tiene una latencia y un tiempo de respuesta mínimo para ejecutar estas operaciones.

Si quieres conocer más en profundidad como funciona Google Zanzibar, te dejo el enlace a un paper oficial: https://research.google/pubs/pub48190.

Espero que te haya parecido interesante el artículo.

¡Nos vemos! 👋

-

¿Quieres que te notifique cuando escriba más artículos como este? Suscríbete en este enlace: https://tinyletter.com/hvalls