Práctica recomendada: protege tus carpetas. Guía para acceder al contenido

Estas prácticas recomendadas reflejan las sugerencias de un equipo multidisciplinar de Lookers con experiencia. Estas estadísticas se han obtenido a lo largo de años de experiencia trabajando con clientes de Looker, desde la implementación hasta el éxito a largo plazo. Estas prácticas se han escrito para que funcionen en la mayoría de los casos y para la mayoría de los usuarios, pero, como siempre, aplique su mejor criterio a la hora de implementarlas.

En esta página se ofrece a los administradores de instancias de Looker un ejemplo guiado de cómo configurar los controles de acceso al contenido. Repasaremos el proceso de implementación, empezando por un nuevo proyecto y continuando con los modelos, los conjuntos de modelos, los conjuntos de permisos, los grupos, los roles y los atributos de usuario.

En primer lugar, vamos a usar una analogía para entender las funciones principales de Looker en este contexto:

Un proyecto es como una casa.

Un modelo es una habitación de la casa que contiene contenido específico.

Un conjunto de modelos es un grupo de habitaciones o una sola habitación (dormitorios, cocina).

Un conjunto de permisos es una lista de comprobación de actividades que especifica lo que pueden hacer los usuarios en una sala (comer, jugar, dormir).

Un grupo es una forma de combinar personas con características compartidas (adultos, niños, invitados).

Un rol es la forma de asignar listas de tareas a grupos de personas en diferentes conjuntos de salas.

Un atributo de usuario es una llave que abre elementos especiales de la casa (una tetera o herramientas eléctricas).

Situación

A continuación, se muestra un ejemplo de una startup con equipos de finanzas, ventas y producto. La CEO es la única administradora y quiere que cada equipo solo vea el contenido que le interese, con la excepción de que los vicepresidentes de cada equipo tengan acceso al contenido de todos los equipos. Quiere que los empleados estándar, los directores y los vicepresidentes tengan acceso a diferentes funciones.

  • Los empleados estándar deberían poder ver y explorar los datos de sus propios modelos.
  • Los gestores deben tener acceso estándar y poder descargar y programar contenido.
  • Los vicepresidentes deben tener casi todos los privilegios, excepto algunos que solo puede tener el director ejecutivo.

El director general quiere que los comerciales puedan ver los datos de sus propias actividades, pero no los de las ventas individuales de otros comerciales. Sin embargo, los responsables de ventas deberían poder ver las cifras de todos los vendedores. Por último, hay algunos campos financieros con información sensible que quiere ocultar a los empleados estándar que usan ese modelo.

Este es el organigrama:

Organigrama de la empresa emergente de este ejemplo.

En este gráfico se muestra la siguiente estructura organizativa de nuestra startup de ejemplo:

  • CEO
    • Vicepresidente de Finanzas
      • Responsable de Finanzas
        • Contable
    • Vicepresidente de Ventas
      • Director de Ventas (Oeste)
        • Comercial Oeste
      • Director de Ventas (zona este)
        • Comercial (este)
    • Vicepresidente de Producto
      • Responsable de producto
        • Ingeniero

Para implementar los controles de acceso deseados, debes seguir estos pasos:

  1. Crea un proyecto: un proyecto es el vínculo estructural entre una conexión de base de datos y los modelos de datos.
  2. Añadir modelos: decide qué datos se mostrarán a cada usuario.
  3. Crea conjuntos de modelos: agrupa los modelos relevantes.
  4. Crear conjuntos de permisos: define explícitamente las acciones que pueden realizar los usuarios en un conjunto de modelos.
  5. Crea grupos: agrupa a los usuarios similares.
  6. Crear roles: crea las conexiones entre conjuntos de modelos, conjuntos de permisos y grupos.
  7. Editar el acceso al contenido: gestiona qué paneles de control y Looks pueden ver los usuarios a través de las carpetas.
  8. Añadir filtros de datos: filtra aún más los datos a los que pueden acceder usuarios específicos en un modelo.

1. Crear un proyecto

Lo primero que necesitamos es un proyecto, que es un contenedor para uno o varios modelos. Si ya tienes un proyecto configurado, puedes saltarte este paso. De lo contrario, puedes ir a la página Proyectos de LookML seleccionando Proyectos en la sección Desarrollo de Looker y, a continuación, Nuevo proyecto de LookML para crear un proyecto. Para obtener instrucciones más detalladas sobre cómo crear un proyecto, consulta la página de documentación Generar un modelo.

En la página Nuevo proyecto, crearemos un proyecto con los siguientes ajustes:

  • En la sección Nombre, asignamos un nombre al proyecto.
  • En la sección Punto de partida, seleccionamos Generar modelo a partir del esquema de la base de datos.
  • En el menú desplegable Conexión, seleccionamos el nombre de la conexión de nuestra base de datos.
  • En la sección Crear vistas a partir de, en este ejemplo, seleccionamos la opción Todas las tablas para que el generador de LookML cree un archivo de vista para cada tabla de la base de datos.

Una vez que hayamos configurado los ajustes que queramos para el nuevo proyecto, seleccionaremos Crear proyecto.

Al crear un proyecto, se te dirigirá al modelo de LookML generado automáticamente del proyecto. En este punto, tendrás que usar el botón Configurar Git para configurar el control de versiones del proyecto. En la página de documentación Configurar y probar una conexión Git se incluyen instrucciones detalladas sobre cómo configurar el control de versiones.

2. Añadir modelos

Un modelo de datos es como un portal personalizable a la base de datos. Cada modelo puede exponer datos diferentes a los usuarios. En nuestro ejemplo, los comerciales necesitan datos diferentes a los ingenieros, por lo que añadiremos modelos independientes para mostrar la información adecuada de la base de datos a cada tipo de usuario.

En nuestro proyecto de LookML, añadiremos nuevos archivos de modelo de LookML con los nombres de cada uno de los modelos que queramos (finance, sales y product). Asegúrate de definir al menos un Exploración en cada archivo de modelo. De esta forma, podremos seleccionar el modelo al crear conjuntos de modelos (de lo contrario, no aparecerán en la selección). Para obtener más información sobre cómo usar el parámetro explore en tu archivo de modelo, consulta la página de documentación Información sobre los archivos de modelo y de vista.

Una vez que hayamos añadido los modelos correctamente, tendremos que configurarlos. Para configurar los modelos, volveremos a la página Proyectos de la sección Desarrollo, donde ahora debería aparecer el texto rojo "Se requiere configuración para usar" junto al nombre de cada modelo.

Junto a cada modelo, selecciona Configurar. Nos aseguraremos de que el nombre del proyecto sea correcto, así como las conexiones que permitiremos que use este modelo. Después, guardaremos los cambios.

En la página Configurar un modelo, puede consultar el nombre del modelo, el proyecto y las conexiones permitidas para el modelo.

Una vez que todos los modelos estén configurados correctamente, ya no aparecerán los mensajes de error de configuración rojos que hemos visto antes.

Recuerda que, en Looker, si le das a un usuario el permiso see_lookml o develop en un modelo, tendrá ese permiso en todos los modelos de ese proyecto. Por lo tanto, deberías crear proyectos independientes si quieres particionar el permiso para ver o desarrollar LookML. De lo contrario, solo tienes que crear un modelo. Los permisos de modelo son suficientes para asegurar que solo determinadas personas puedan consultar ciertos datos.

Para obtener más información sobre los permisos, consulta nuestra documentación sobre roles.

3. Crear conjuntos de modelos

Ahora que se han configurado los modelos de datos de cada departamento, añadiremos el modelo correspondiente a cada departamento en los conjuntos de modelos que creemos. Para crear conjuntos de modelos, ve a la página Roles del panel Administrar y selecciona Nuevo conjunto de modelos. Para obtener más instrucciones sobre cómo crear conjuntos de modelos, consulta la página de documentación Roles.

Una vez creados los nuevos conjuntos de modelos, se mostrarán en la sección Conjuntos de modelos de la página Roles, como se muestra en la siguiente captura de pantalla:

Los modelos de finanzas, productos y ventas corresponden a los conjuntos de modelos de finanzas, productos y ventas de la página Conjuntos de modelos.

4. Crear conjuntos de permisos

A continuación, crearemos conjuntos de permisos con los conjuntos de modelos que acabamos de crear. Como hemos mencionado al configurar el escenario, queremos cuatro niveles de permisos que se correspondan con los cuatro niveles jerárquicos del organigrama, y los niveles superiores deben incluir los permisos de los niveles inferiores. En nuestro caso, identificaremos los conjuntos de permisos de la siguiente manera:

  • El director ejecutivo tiene el permiso Administrador.
  • Los VPs tienen el permiso Administrador limitado.
  • Los administradores tienen el permiso Descargar y compartir.
  • Los empleados estándar tienen el permiso Ver y explorar.

Para crear conjuntos de permisos, ve a la página Roles del panel Administrar y selecciona Nuevo conjunto de permisos. Seleccionaremos los permisos adecuados para cada nivel. Por lo general, los conjuntos de permisos deben solaparse lo menos posible. Cada conjunto debe añadir solo los permisos específicos que queremos que tengan los usuarios con ese conjunto de permisos. Esto se debe a que vamos a dar a algunos usuarios varios conjuntos de permisos y queremos saber exactamente qué permite cada uno de ellos. Sin embargo, debido a la estructura de árbol, a menudo es necesario que haya cierto solapamiento.

En nuestro ejemplo, queremos que el permiso Ver y explorar permita a los usuarios ver contenido, hacer preguntas y guardar las tarjetas útiles. Por lo tanto, les daremos permisos asociados a la visualización de contenido (como see_looks y see_user_dashboards), el permiso explore y el permiso save_content. Las excepciones notables son see_lookml, que solo queremos que tengan los desarrolladores, y see_sql, que reservamos para los usuarios que entienden SQL y en los que confiamos para que vean la estructura de la base de datos. Todos estos permisos se encuentran estrictamente en la rama access_data. No vamos a conceder ninguno de los permisos de see que aparecen en la parte inferior del árbol, ya que son permisos de administrador.

En el conjunto de permisos Descargar y compartir, añadiremos los permisos asociados a la descarga, la programación, el uso compartido y la creación de Looks públicos (que permite compartir Looks con usuarios que no tienen Looker) y see_schedules (ya que pueden crear programaciones, es lógico que también puedan verlas en el panel de administración).

Los únicos campos que se han seleccionado al configurar los conjuntos de permisos Ver y explorar y Descargar y compartir son los permisos de los padres necesarios para seleccionar los permisos de los hijos añadidos en la rama access_data. Por lo tanto, como los usuarios con el conjunto de permisos Descargar y compartir también tendrán el conjunto de permisos Ver y explorar, no es necesario incluir permisos como see_lookml_dashboards, see_user_dashboards y explore en el conjunto de permisos Descargar y compartir, ya que estos permisos no contienen ningún permiso secundario que se necesite para el conjunto de permisos Descargar y compartir.

Por último, en el conjunto de permisos de Administrador limitado, añadiremos la mayoría de los permisos de administrador en la parte inferior del árbol, excepto los privilegios manage_models y sudo, que el director general quiere que solo tenga él. Tiene este aspecto:

Cuando haya terminado, los conjuntos de permisos incluirán los siguientes permisos:

  • Administrador: el conjunto de permisos Administrador, reservado para el director general de nuestra empresa de ejemplo, incluye todos los permisos.
  • Administrador limitado: el conjunto de permisos Administrador limitado incluye los permisos create_prefetches, login_special_email, manage_homepage, manage_spaces, see_alerts, see_datagroups, see_logs, see_pdts, see_queries, see_users y update_datagroups.
  • Descargar y compartir: el conjunto de permisos Descargar y compartir incluye los permisos access_data, create_public_looks, download_with_limit, download_without_limit, save_content, schedule_external_look_emails, schedule_look_emails, see_looks, see_schedules, send_outgoing_webhook, send_to_s3 y send_to_sftp.
  • Ver y explorar: el conjunto de permisos Ver y explorar incluye los permisos access_data, create_table_calculations, explore, save_content, see_drill_overlay, see_lookml_dashboards, see_looks y see_user_dashboards.

Para ver los permisos que pertenecen a un conjunto de permisos, ve a la sección Conjuntos de permisos de la página de administración Roles.

5. Crear grupos

El siguiente paso es crear los grupos y clasificar a los usuarios. Crearemos grupos para los empleados estándar y los responsables de cada departamento, ya que estos grupos se corresponderán con los diferentes roles que crearemos más adelante. Los vicepresidentes estarán en su propio grupo y el director ejecutivo no necesita un grupo. Cuando haya terminado, en la página Grupos deberían aparecer los siguientes grupos y sus correspondientes IDs de grupo, que Looker genera automáticamente. Por ejemplo:

ID Nombre
1 Todos los usuarios
3 Finanzas
4 Ventas
5 Producto
7 Director de ventas
8 Responsable de producto
9 Responsable de Finanzas
10 VPs

Una vez creados los grupos, tendremos que añadir usuarios a ellos. Para obtener instrucciones sobre cómo añadir usuarios a grupos, consulta la página de documentación Grupos.

Al añadir usuarios a los grupos que hemos creado, recuerda que, debido a la forma en que hemos estructurado los permisos, los grupos de nivel superior pueden incluirse en los grupos de nivel inferior. Por ejemplo, queremos que los vicepresidentes del grupo Finanzas, pero no los directores de ventas del grupo Producto. Una forma eficaz de hacerlo es empezar añadiendo usuarios a los grupos de nivel superior (como los vicepresidentes) para poder añadirlos como grupo a los niveles inferiores.

6. Crear roles

Ahora que tenemos los conjuntos de modelos, los conjuntos de permisos y los grupos, podemos combinarlos todos mediante roles. Cada rol tendrá un único conjunto de permisos y un único conjunto de modelos, y podrá incluir uno o varios grupos. Como los roles deben incluir un conjunto de modelos, volveremos a crear roles tanto para los empleados estándar como para los administradores de cada departamento.

  • Roles estándar: los roles estándar incluirán el conjunto de permisos Ver y explorar, junto con el conjunto de modelos correspondiente. Asigna roles estándar a los grupos estándar y de gestores de ese departamento, así como al vicepresidente. Por ejemplo, asigna el rol Finanzas estándar a los grupos Finanzas y Director de Finanzas, así como al vicepresidente de Finanzas.
  • Roles de gestor: los roles de gestor tendrán el permiso Descargar y compartir, junto con el conjunto de modelos correspondiente. Estos roles deben asignarse al grupo de administradores del departamento correspondiente y al vicepresidente del departamento.
  • Roles de gestor: los roles de gestor tendrán el permiso Descargar y compartir, junto con el conjunto de modelos correspondiente. Estos roles deben asignarse al grupo de administradores del departamento correspondiente y al vicepresidente del departamento.
  • Rol de vicepresidente: este rol tendrá el conjunto de permisos Administrador limitado y el conjunto de modelos Todos. Este rol se asignará al grupo VPs.

7. Editar el acceso al contenido

El siguiente paso es organizar los permisos de acceso a las carpetas para que cada grupo tenga acceso a su propio contenido (y solo a él). Esta es la estructura de carpetas de nuestra instancia de ejemplo, que se puede ver en la página Acceso al contenido del panel de administración:

La carpeta Compartido contiene las carpetas Finanzas, Producto y Ventas, que a su vez contienen carpetas para el uso de sus departamentos.

El acceso a las carpetas sigue las reglas de la herencia jerárquica. Para obtener más información sobre cómo funciona, consulta nuestra documentación sobre niveles de acceso y sobre gestión de permisos y control de acceso.

Siguiendo las reglas de acceso a carpetas, queremos dar acceso de lectura a todos los usuarios de la carpeta Compartida. Daremos a cada grupo acceso de Ver a las carpetas superiores del árbol que se encuentren por encima de las carpetas a las que tendrá acceso el grupo. De esta forma, a medida que recorremos el árbol, si no queremos que un grupo vea una carpeta, no lo incluiremos al conceder acceso.

Podemos dar el nivel de acceso Gestionar acceso y editar a los grupos de una carpeta en la que queramos controlar quién puede verla. En nuestro ejemplo, solo queremos que el CEO y los vicepresidentes tengan esos permisos. El resto de los usuarios solo tendrán acceso de lectura a las carpetas que necesiten.

8. Añadir restricciones de acceso a los datos con atributos de usuario

En esta sección se muestran métodos para evitar que usuarios específicos accedan a determinadas filas o columnas de datos de un modelo al que tienen acceso. Recuerda que nuestro CEO quiere que los comerciales puedan ver los datos de sus actividades, pero no los de otros. Sin embargo, los jefes de ventas deberían poder ver las cifras de todos los vendedores. Para ello, usaremos los atributos de usuario y el parámetro sql_always_where.

Crear atributos de usuario

Primero, crearemos un atributo de usuario llamado access_level que estará oculto para los usuarios. De esta forma, podremos definir niveles de acceso para los diferentes grupos que tengamos. Definiremos los siguientes valores al crear nuestro atributo de usuario:

  • Nombre: access_level
  • Etiqueta: Nivel de acceso
  • Tipo de datos: cadena
  • Acceso de usuario: editar
  • Ocultar valores: no

En nuestro ejemplo, dejaremos la casilla Definir un valor predeterminado sin marcar.

Al crear el campo, configuraremos tres niveles de acceso: Básico, Premium y Completo. Asignaremos esos niveles a los grupos estándar, administrador y vicepresidente, respectivamente. Para ello, ve a la pestaña Agrupar valores de la misma sección. Consulta más información en la sección Asignar valores a grupos de usuarios del artículo Atributos de usuario.

Como el orden de estas reglas es importante, queremos colocar los valores de acceso más altos en la parte superior de la lista para que prevalezcan sobre los valores de acceso más bajos que se encuentran en la parte inferior. Este comportamiento se explica con más detalle en la página de documentación Atributos de usuario.

Filtrar datos de filas con atributos de usuario

Vamos a suponer que ya se ha creado un Exploración con toda la información de ventas. Comprobaremos el nivel de acceso del usuario que consulta la exploración. Si el nivel de acceso es Básico (que hemos asignado a todos nuestros comerciales estándar), siempre filtraremos la exploración por el nombre del usuario, de modo que cada comercial solo pueda acceder a sus propias filas. Si el nivel de acceso es Premium o Completo, la consulta no se filtrará. De forma predeterminada, tenemos un atributo de usuario llamado Nombre, que es el nombre del usuario de Looker. El LookML del Explore tendrá este aspecto:

explore: sales_info {
  sql_always_where: {% if {{_user_attributes['access_level']}} == "Basic" %}
    ${sales_info.name} = "{{_user_attributes['name']}}"
    % endif %
  ;;
}

Filtrar datos de columnas con atributos de usuario

Por último, hay algunas columnas de información personal identificable (IPI) en el modelo financiero que también queremos ocultar a algunos de nuestros usuarios. Para ello, podemos usar los atributos de usuario que hemos creado, junto con las instrucciones para aplicar permisos a nivel de base de datos en Looker, que se encuentran en la página de documentación Atributos de usuario, para que solo los usuarios con el nivel de acceso Completo puedan ver los campos de IPI.

¡Y hemos terminado! Hemos terminado de configurar nuestros controles de acceso al contenido y a los datos, y todos nuestros usuarios pueden explorar Looker. De esta forma, nos aseguramos de que solo vean el contenido al que les hemos dado acceso.