Práctica recomendada: Protege tus carpetas. Una explicación detallada del acceso al contenido

Estas prácticas recomendadas reflejan las recomendaciones compartidas por un equipo multifuncional de Lookers experimentados. Estas estadísticas provienen de años de experiencia trabajando con clientes de Looker desde la implementación hasta el éxito a largo plazo. Las prácticas están redactadas para que funcionen para la mayoría de los usuarios y situaciones, pero como siempre usa el mejor criterio cuando las implementes.

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

En primer lugar, esta es una analogía para comprender las funciones principales de Looker en este contexto:

Un proyecto es como una casa.

Un model es una habitación de la casa que está llena de contenido específico.

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

Un conjunto de permisos es una lista de tareas de actividades que especifica lo que las personas pueden hacer en una habitación (comer, jugar o dormir).

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

Un rol se refiere a cómo asignar a grupos de personas sus listas de tareas de actividades en diferentes conjuntos de salas.

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

Situación

El siguiente es un ejemplo de una startup con equipos de finanzas, ventas y productos. La directora general es nuestra única administradora y quiere que cada equipo vea solo el contenido que es relevante para ellos, con la excepción de que el vicepresidente de cada equipo debe tener acceso al contenido de todos los equipos. Quiere tener acceso a distintas funciones para los empleados, gerentes y vicepresidentes estándar.

  • Los empleados estándar deben poder ver y explorar los datos en sus propios modelos.
  • Los administradores deben tener acceso estándar y también poder descargar y programar contenido.
  • Los vicepresidentes deben tener casi todos sus privilegios, excepto algunos exclusivos para el director general.

El director general quiere que los vendedores puedan ver los datos de sus propias actividades, pero que no puedan ver las cifras de ventas individuales de otro vendedor. Sin embargo, los gerentes de ventas deberían poder ver las cifras de cada vendedor. Y, por último, hay algunos campos de finanzas con información sensible que quiere enmascarar para los empleados estándar que usan ese modelo.

El organigrama es el siguiente:

Organigrama de la startup en este ejemplo.

En el gráfico anterior, se revela la siguiente estructura organizativa para nuestra startup de ejemplo:

  • Director general
    • Vicepresidente de Finanzas
      • Gerente de Finanzas
        • Contador
    • Vicepresidente de Ventas
      • Gerente de Ventas en el oeste
        • Vendedor Oeste
      • Gerente de Ventas en el este
        • Vendedor Este
    • Vicepresidente de Producto
      • Administrador de productos
        • Ingeniero

La implementación de los controles de acceso deseados requerirá los siguientes pasos:

  1. Crear un proyecto: Un proyecto es el vínculo estructural entre una conexión de base de datos y los modelos de datos.
  2. Agregar modelos: Decide qué datos se mostrarán a qué usuarios.
  3. Crear conjuntos de modelos: Agrupa modelos relevantes.
  4. Crear conjuntos de permisos: Define de forma explícita las acciones que los usuarios pueden realizar en un conjunto de modelos.
  5. Crear grupos: Crea buckets de usuarios similares.
  6. Crear roles: crea las conexiones entre conjuntos de modelos, conjuntos de permisos y grupos.
  7. Acceso de edición al contenido: Administra qué paneles y vistas pueden ver los usuarios a través de carpetas.
  8. Agrega filtros de datos: Filtra aún más los datos a los que pueden acceder usuarios específicos dentro de un modelo.

1. Crea un proyecto.

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

En la página New Project, crearemos un proyecto con la siguiente configuración:

  • En la sección Nombre, le 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 nuestra conexión de base de datos.
  • En la sección Crear vistas desde, para este ejemplo, seleccionamos la opción Todas las tablas a fin de que el generador de LookML cree un archivo de vista para cada tabla de tu base de datos.

Una vez que establezcas la configuración deseada para el proyecto nuevo, seleccionamos Crear proyecto.

Cuando crees un proyecto, se te redireccionará al modelo de LookML generado automáticamente del proyecto. En este punto, deberás usar el botón Configurar Git para configurar el control de versión del proyecto. Las instrucciones detalladas para configurar el control de versión se encuentran en la página de documentación Configura y prueba una conexión de Git.

2. Agregar modelos

Un model de datos es como un portal personalizable en la base de datos. Cada modelo puede exponer datos diferentes a los usuarios. En nuestro ejemplo, nuestros vendedores necesitan datos diferentes a los de nuestros ingenieros, por lo que agregaremos modelos separados para exponer la información adecuada de la base de datos a cada tipo de usuario.

En nuestro proyecto de LookML, agregaremos nuevos archivos de modelo de LookML con los nombres de cada uno de los modelos que desees (finance, sales y product). Asegúrate de definir al menos un elemento Explore en cada archivo de modelo; esto nos permitirá seleccionar el modelo cuando creemos conjuntos de modelos (de lo contrario, no aparecerán en la selección). Para obtener referencias adicionales sobre cómo usar el parámetro explore en tu archivo de modelo, consulta la página de documentación Información sobre el modelo y la vista de archivos.

Una vez que hayamos agregado correctamente los modelos, tendremos que configurarlos. Para configurar los modelos, regresaremos a la página Proyectos en la sección Desarrollo, que ahora debería mostrar el texto en rojo que indica “Configuración necesaria para el uso” intercalado con el nombre de cada modelo.

Junto a cada modelo, selecciona Configurar. Nos aseguraremos de que el nombre de nuestro proyecto sea correcto, junto con las conexiones que permitiremos que use este modelo y, luego, guardaremos.

La página Configurar un modelo te permite verificar el nombre del modelo, el proyecto y las conexiones permitidas para este.

Después de que todos los modelos estén configurados correctamente, los mensajes de problema de configuración en rojo que encontramos anteriormente ya no aparecerán.

Recuerda que, en Looker, otorgar a un usuario el permiso see_lookml o develop sobre un modelo le otorga ese permiso para todos los modelos de ese proyecto. Por lo tanto, debes crear proyectos separados si quieres particionar el permiso para ver o desarrollar LookML. De lo contrario, solo debes crear un modelo nuevo. Los permisos de modelo son suficientes para garantizar que solo determinadas personas puedan consultar ciertos datos.

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

3. Crear conjuntos de modelos

Ahora que se configuraron los modelos de datos para cada departamento, agregaremos el modelo correspondiente para cada departamento a los conjuntos de modelos que creemos. Para crear nuevos conjuntos de modelos, navegaremos a la página Roles del panel Admin y seleccionaremos New Model Set. Para obtener más instrucciones sobre cómo crear nuevos conjuntos de modelos, consulta la página de documentación Funciones.

Una vez que se hayan creado los nuevos conjuntos de modelos, se mostrarán en la sección Conjuntos de modelos de la página Funciones, como en la siguiente captura de pantalla de ejemplo:

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

4. Cómo crear conjuntos de permisos

A continuación, crearemos conjuntos de permisos con los conjuntos de modelos que acabamos de crear. Como mencionamos cuando configuramos la situación, queremos cuatro niveles de permisos correspondientes a los cuatro niveles jerárquicos del gráfico de la organización, y los niveles superiores deben incluir los permisos para los niveles que se indican a continuación. En nuestro caso, identificaremos los conjuntos de permisos de la siguiente manera:

  • El director general tiene configurado el permiso de Administrador.
  • Los vicepresidentes tienen configurado el permiso de Administrador limitado.
  • Los administradores tienen configurado el permiso de descarga y uso compartido.
  • Los empleados estándar tienen configurado el permiso Ver y explorar.

Para crear nuevos conjuntos de permisos, navegaremos a la página Roles del panel Administrador y seleccionaremos Nuevo conjunto de permisos. Para cada nivel de permisos, seleccionaremos los permisos adecuados. En general, los conjuntos de permisos deben superponerse lo menos posible y cada uno debe agregar solo los permisos específicos que queremos que tengan los usuarios con este conjunto de permisos. Esto se debe a que les daremos a algunos usuarios varios conjuntos de permisos y queremos saber exactamente qué permite cada uno. Sin embargo, debido a la estructura de árbol, a menudo se necesita cierta superposición.

En nuestro ejemplo, queremos que el conjunto de permisos Ver y explorar permita a los usuarios ver contenido, hacer preguntas y guardar tarjetas útiles. Por lo tanto, le daremos permisos asociados con la visualización de contenido (como see_looks y see_user_dashboards), los permisos explore y save_content. Las excepciones más destacadas aquí son see_lookml, que es posible que solo debamos para los desarrolladores, y see_sql, que reservamos para quienes entienden SQL y son confiables para ver la estructura de la base de datos. Todos estos permisos están estrictamente sujetos a la rama access_data. No otorgaremos ninguno de los permisos see en la parte inferior del árbol porque son permisos administrativos.

Para el conjunto de permisos Descargar y compartir, agregaremos los permisos asociados con la descarga, la programación, el uso compartido y la creación de vistas públicas (que permite compartir vistas con usuarios ajenos a Looker) y see_schedules (debido a que pueden crear programas, es lógico que también puedan verlas en el panel de administración).

Los únicos campos que se seleccionaron cuando se configuraron los conjuntos de permisos Ver y explorar y Descargar y compartir son los permisos superiores que se requieren para seleccionar los permisos secundarios agregados en la rama access_data. Por lo tanto, dado que los usuarios con el permiso Descargar y compartir también tendrán establecido el permiso 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 necesario para el conjunto de permisos de Descargar y compartir.

Por último, para nuestro conjunto de permisos de Administrador limitado, agregaremos la mayoría de los permisos administrativos al final del árbol, sin incluir los privilegios manage_models y sudo que el director general quiere solo para sí misma. Se ve de la siguiente manera:

Cuando todo esté listo, los conjuntos de permisos incluirán los siguientes permisos:

  • Administrador: El conjunto de permisos Administrador, que está reservado para el director general de nuestra empresa de ejemplo, incluye todos los permisos.
  • Administrador limitado: El conjunto de permisos de 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 existente, navega a la sección Conjuntos de permisos de la página de administrador de Funciones.

5. Crear grupos

El siguiente paso es crear los grupos y bucket a nuestros usuarios. Crearemos grupos para los empleados estándar y los gerentes de cada departamento, ya que, finalmente, coincidirán con los distintos roles que crearemos más adelante. Los vicepresidentes estarán en su propio grupo y el director general no necesita uno. Cuando se complete, en la página Grupos, se deberían enumerar los siguientes grupos y sus IDs correspondientes, que Looker genera automáticamente. Por ejemplo:

ID Nombre
1 Todos los usuarios
3 Finanzas
4 Ventas
5 Producto
7 Gerente de Ventas
8 Administrador de productos
9 Gerente de Finanzas
10 Vicepresidentes

Una vez creados los grupos, necesitaremos agregar usuarios a esos grupos. Para obtener instrucciones sobre cómo agregar usuarios a los grupos, consulta la página de documentación de Grupos.

Cuando agregues usuarios a los grupos que creamos, recuerda que, debido a la forma en que tenemos permisos estructurados, los grupos de nivel superior pueden incluirse en los de nivel más bajo. Por ejemplo, queremos los vicepresidentes en el grupo de Finanzas, pero no queremos los gerentes de ventas en el grupo Producto. Una forma eficiente de abordar esto es comenzar agregando usuarios a los grupos de nivel superior (como vicepresidentes), para que podamos agregarlos como grupo a los niveles inferiores.

6. Crea roles

Ahora que ya implementamos nuestros conjuntos de modelos, conjuntos de permisos y grupos, podemos unirlos mediante las funciones. Cada rol tendrá un solo conjunto de permisos y un solo conjunto de modelos, y puede incluir uno o más grupos. Debido a que los roles deben incluir un conjunto de modelos, volveremos a crear roles para los empleados estándar y para los gerentes 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 administradores para ese departamento y al vicepresidente. Por ejemplo, asigna el rol de Finanzas estándar a los grupos Finanzas y Gerente de finanzas, y al vicepresidente de Finanzas.
  • Roles de administrador:Los roles de administrador tendrán configurado el permiso Descargar y compartir, junto con el conjunto de modelos correspondiente. Estas funciones deben asignarse al grupo de administradores del departamento correspondiente y al vicepresidente del departamento.
  • Roles de administrador:Los roles de administrador tendrán configurado el permiso Descargar y compartir, junto con el conjunto de modelos correspondiente. Estas funciones deben asignarse al grupo de administradores del departamento correspondiente y al vicepresidente del departamento.
  • Rol de vicepresidente: El rol de vicepresidente tendrá configurado el permiso de Administrador limitado y el modelo Todos establecido. Este rol se asignará al grupo VP.

7. Editar acceso al contenido

El siguiente paso es organizar nuestros permisos de acceso a carpetas para que cada grupo tenga acceso a su propio contenido (y solo al suyo). A continuación, se muestra el diseño de las carpetas de nuestra instancia de ejemplo, que se puede ver en la página Acceso al contenido en el panel Administrador:

La carpeta Compartida contiene las carpetas Finanzas, Productos y Ventas, que contienen carpetas para 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 la documentación sobre los niveles de acceso y el control de acceso y la administración de permisos.

De acuerdo con las reglas de acceso a las carpetas, queremos otorgar acceso de Ver a todos los usuarios de la carpeta Compartido. Otorgaremos a cada grupo acceso de lectura a las carpetas superiores del árbol que se encuentra sobre las carpetas a las que el grupo tendrá acceso. De esta forma, a medida que desviamos por el árbol, si no queremos que un grupo vea una carpeta, no lo incluiremos cuando demos acceso.

Podemos otorgar el nivel de acceso Administrar acceso, Editar a los grupos de una carpeta en la que queremos controlar quiénes pueden ver esa carpeta. En nuestro ejemplo, solo queremos que el director general y los vicepresidentes tengan esos permisos; los demás solo tendrán acceso de ver a las carpetas que necesiten.

8. Agrega 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 filas o columnas de datos específicas desde un modelo al que tienen acceso. Recuerden que nuestro director general quiere que los vendedores puedan ver los datos de sus propias actividades individuales, pero no de las de otras. Sin embargo, los gerentes de ventas deberían poder ver las cifras de cada vendedor. Para ello, usaremos los atributos del usuario y el parámetro sql_always_where.

Crea atributos de usuario

Primero, crearemos un nuevo atributo de usuario llamado access_level que esté oculto para los usuarios. Esto nos permitirá definir niveles de acceso para los diferentes grupos que tengamos. Cuando creemos nuestro atributo de usuario, configuraremos los siguientes valores:

  • Nombre: access_level
  • Etiqueta: Nivel de acceso
  • Tipo de datos: string
  • Acceso de los usuarios: Editar
  • Ocultar valores: No

En nuestro ejemplo, dejaremos desmarcada la casilla Establecer un valor predeterminado.

Cuando creemos el campo, configuraremos tres niveles de acceso: Básico, Premium y Completo. Los asignaremos a los grupos Estándar, Administrador y Vicepresidente, respectivamente. Esto se hace en la pestaña Valores del grupo de la misma sección. Para obtener más detalles, consulta la sección Cómo asignar valores a los grupos de usuarios de la documentación sobre Atributos de usuario.

Debido a que el orden de estas reglas es importante, queremos colocar los valores de acceso más altos al principio de la lista para anular los valores de acceso más bajos en la parte inferior. Este comportamiento se explica con más detalle en nuestra página de documentación Atributos de usuario.

Filtra datos de filas con atributos de usuario

Imaginaremos que ya se está creando una exploración con toda la información de ventas incluida. Verificaremos el nivel de acceso del usuario que consulta la exploración. Si el nivel de acceso es Básico (que otorgamos a todos nuestros vendedores estándar), siempre filtraremos la exploración en el nombre del usuario para que solo puedan acceder a las filas de cada vendedor. Si el nivel de acceso es Premium o Completa, no se filtrará la consulta. De forma predeterminada, tenemos un atributo de usuario llamado Nombre, que es el nombre del usuario de Looker. LookML para Explorar se verá de la siguiente manera:

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

Filtra datos de columnas con atributos de usuario

Por último, también hay algunas columnas de PII (información de identificación personal) en el modelo de finanzas que también queremos ocultar de algunos de nuestros usuarios. Para ello, podemos usar los atributos de usuario que creamos, junto con las instrucciones para aplicar permisos a nivel de la base de datos en Looker, en la página de documentación Atributos de usuario, para otorgar a los usuarios con nivel de acceso Completo la capacidad de ver los campos de PII.

¡Ya está! Terminamos de configurar nuestros controles de contenido y acceso a los datos, y todos los usuarios pueden explorar Looker con libertad. De esta manera, podemos estar seguros de que solo verán el contenido que les permitimos ver.