Incorporación firmada

La incorporación firmada es una forma de presentar vistas, visualizaciones, exploraciones, paneles o paneles de LookML incorporados privados a los usuarios sin necesidad de que accedan a Looker por separado. En su lugar, los usuarios se autenticarán a través de tu propia aplicación.

Con la incorporación firmada, se crea una URL especial de Looker que usarás en un iframe. La URL contiene la información que deseas compartir, el ID del usuario en tu sistema y los permisos que quieres que tenga el usuario. Luego, firmarás la URL con una clave secreta proporcionada por Looker.

Para la incorporación pública, consulta la sección Incorporación pública con etiquetas iframe de la página de documentación Incorporación, importación y uso compartido público de vistas.

Para que puedas usar la incorporación firmada en tu instancia de Looker, un administrador de Looker debe habilitar la incorporación firmada en el panel de administración de Looker y crear una clave secreta de incorporación. Para obtener instrucciones, consulta la página de documentación Primeros pasos con la incorporación: habilita la incorporación firmada.

Hosting adecuado para la incorporación firmada

Algunos navegadores (por ejemplo, Safari o aquellos con extensiones instaladas que bloquean anuncios o cookies de seguimiento) usan de forma predeterminada una política de cookies que bloquea las cookies de terceros. Cuando se habilita la función Incorporación sin cookies, los navegadores que bloquean cookies de terceros pueden autenticar a los usuarios en el iframe incorporado en diferentes dominios. La autenticación de incorporación sin cookies requiere una configuración del servidor. Consulta la página de documentación sobre incorporación sin cookies para ver ejemplos de configuración.

Si la función Incorporación sin cookies no está habilitada, Looker usa cookies para la autenticación de usuarios. En este caso, intentar autenticar el iframe incorporado en dominios no es posible en navegadores que bloquean cookies de terceros (a menos que el usuario modifique la configuración de privacidad de cookies de su navegador). Por ejemplo, si quieres incorporar información en https://mycompany.com, debes asegurarte de que Looker comparta el mismo dominio, como https://analytics.mycompany.com. En este caso, si Looker aloja tu instancia, comunícate con el equipo de asistencia de Looker para establecer la configuración de DNS necesaria y habilitar el uso de dominios personalizados. Esto permitirá que Looker comparta el mismo dominio que la aplicación de incorporación y use cookies propias, que se aceptan de forma predeterminada en todos los navegadores.

Si tienes una instancia de Looker alojada por el cliente, asegúrate de que la aplicación que usará la incorporación firmada use el mismo dominio que tu instancia de Looker.

Cómo controlar la visibilidad del cliente con un sistema cerrado

En una configuración de incorporación firmada, es común que los usuarios de Looker presenten datos a sus propios clientes y que tengan clientes de diferentes empresas o grupos que no deberían conocerse entre sí. En esta situación, para proteger la información privada de tus clientes, te recomendamos que configures Looker como un sistema cerrado, también llamado instalación multiusuario. En un sistema cerrado, el contenido se aísla para evitar que los usuarios de diferentes grupos se conozcan entre sí. Por este motivo, te recomendamos que habilites la opción Sistema cerrado antes de otorgar acceso a tu instancia a cualquier usuario externo.

Para obtener más información, consulta las páginas de documentación Diseña y configura un sistema de niveles de acceso y las Prácticas recomendadas de seguridad para estadísticas incorporadas.

Cómo generar la URL de incorporación firmada

Existen varias formas de generar la URL de incorporación firmada. Puedes usar uno de estos métodos:

Cómo programar manualmente la URL de incorporación firmada

Para programar la URL de incorporación firmada, primero recopila la información necesaria de Looker y, luego, crea la URL de incorporación firmada.

Recopila la información necesaria de Looker

Como punto de partida para crear tu URL, primero debes determinar toda la información que se deberá incluir. Necesitarás:

Incorporar URL

Recupera la URL de la vista, exploración, visualización de consultas o panel que quieras incorporar. Luego, quita el dominio y coloca /embed antes de la ruta de acceso, de la siguiente manera:

Elemento Patrón de URL normal Incorporar URL
Vista https://instance_name.looker.com/looks/4 /embed/looks/4
Explorar https://instance_name.looker.com/explore/my_model/my_explore /embed/explore/my_model/my_explore
Visualización de consultas https://instance_name.looker.com/explore/my_model/my_explore?qid=1234567890abcdefghij12

Los 22 caracteres alfanuméricos que siguen al parámetro qid= en la URL de Explorar componen Query.client_id. El valor Query.client_id es una cadena única que representa la consulta y la configuración de visualización.

Para incorporar una visualización de consulta, recupera el valor Query.client_id de la visualización de consulta y copia el Query.client_id en tu URL incorporada.

Puedes usar la IU de Explorar de Looker para crear una consulta con una visualización compatible y copiar el valor Query.client_id del parámetro qid= o recuperar el Query.client_id con la API de Looker, por ejemplo, con el método Get Query.
/embed/query-visualization/Query.client_id
Panel definido por el usuario https://instance_name.looker.com/dashboards/1

Incluye los valores de filtro del panel o, si ocultas los valores de filtro, el parámetro hide_filter en la URL del panel.
Panel heredado definido por el usuario https://instance_name.looker.com/dashboards-legacy/1 /embed/dashboards-legacy/1
panel de LookML https://instance_name.looker.com/dashboards/my_model::my_dashboard /embed/dashboards/my_model::my_dashboard
Panel de LookML heredado https://instance_name.looker.com/dashboards-legacy/my_model::my_dashboard /embed/dashboards-legacy/my_model::my_dashboard

El contenido incorporado siempre refleja la versión de producción del contenido. Los cambios realizados en el modo de desarrollo que afecten al contenido y que no se hayan implementado en producción no aparecerán en la incorporación.

Permisos

Un conjunto de permisos define lo que puede hacer un usuario o un grupo. Los permisos se pueden aplicar de dos maneras:

  • Específico del modelo: Este tipo de permiso se aplica solo a los conjuntos de modelos que forman parte del mismo rol.
  • Ancho de instancia: Este tipo de permiso se aplica a toda la instancia de Looker. Los usuarios incorporados con permisos para toda la instancia pueden realizar ciertas funciones en toda la instancia de Looker, pero no pueden acceder al contenido en función de modelos que no estén incluidos en su conjunto de modelos de roles.

Determina los permisos que querrás que tenga el usuario. En la siguiente lista, se muestran todos los permisos disponibles para la incorporación firmada. Los permisos que no se encuentran en la siguiente lista no son compatibles con la incorporación firmada:

Permiso Depende de Tipo Definición
access_data Ninguno Específico del modelo Permite que el usuario acceda a los datos (necesarios para ver las vistas, los paneles o las exploraciones)
see_lookml_dashboards access_data Específico del modelo Permite que el usuario vea los paneles de LookML
see_looks access_data Específico del modelo Permite que el usuario vea las vistas
see_user_dashboards see_looks Específico del modelo Permite que los usuarios vean los paneles definidos por el usuario y exploren carpetas desde una incorporación
explore see_looks Específico del modelo Permite que el usuario vea las páginas de Explorar
create_table_calculations explore Ancho de la instancia Se necesitaban crear cálculos de tablas en una exploración
create_custom_fields explore Ancho de la instancia AGREGADO 22.4 Es necesario para crear campos personalizados en una exploración.
can_create_forecast explore Ancho de la instancia AGREGADO 22.12 Permite a los usuarios crear o editar previsiones en las visualizaciones.
save_content see_looks Ancho de la instancia Permite que los usuarios realicen y guarden cambios en las vistas y los paneles
send_outgoing_webhook see_looks Específico del modelo Permite que el usuario programe entregas de contenido de Looker a un webhook arbitrario.
send_to_s3 see_looks Específico del modelo Permite que el usuario programe entregas de contenido de Looker en un bucket de Amazon S3.
send_to_sftp see_looks Específico del modelo Permite que el usuario programe entregas de contenido de Looker a un servidor SFTP.
schedule_look_emails see_looks Específico del modelo Permite que el usuario programe entregas de contenido de Looker a su propio correo electrónico (si se configura con un atributo de usuario llamado “correo electrónico”) o a una dirección de correo electrónico que cumpla con las limitaciones establecidas por la lista de dominios de correo electrónico permitidos. Permite que un usuario con permisos de create_alerts envíe notificaciones de alerta a una dirección de correo electrónico que se encuentre dentro de las limitaciones establecidas por la lista de dominios de correo electrónico permitidos.
schedule_external_look_emails schedule_look_emails Específico del modelo Permite que el usuario programe entregas de contenido de Looker a cualquier dominio de correo electrónico. Permite que un usuario con permisos de create_alerts envíe notificaciones de alerta a cualquier dominio de correo electrónico.
send_to_integration see_looks Específico del modelo Permite al usuario entregar contenido de Looker a los servicios de terceros integrados en Looker a través de Looker Action Hub. Este permiso no está relacionado con las acciones de datos.
create_alerts see_looks Ancho de la instancia Permite que los usuarios creen alertas en los mosaicos del panel para recibir notificaciones cuando se cumplan o se superen las condiciones especificadas. Los usuarios pueden editar, duplicar y borrar sus propias alertas y las alertas públicas de otros usuarios. Si el espacio de trabajo de Slack del usuario no está conectado a la instancia de Looker, este no podrá crear alertas que envíen notificaciones a Slack.
download_with_limit see_looks Ancho de la instancia Permite que el usuario descargue los resultados de una consulta con un límite aplicado
download_without_limit see_looks Ancho de la instancia Permite que el usuario descargue los resultados de una consulta sin límite aplicado
see_sql see_looks Específico del modelo Permite que el usuario vea SQL para consultas y cualquier error de SQL que resulte de la ejecución de consultas
clear_cache_refresh access_data Específico del modelo AGREGADO 21.14 Los usuarios pueden borrar la caché y actualizar los paneles incorporados, los paneles heredados, los mosaicos de panel, las vistas y las exploraciones.
see_drill_overlay access_data Específico del modelo Permite a los usuarios desglosar sin necesidad de acceder a la página Explorar completa.
embed_browse_spaces Ninguno Ancho de la instancia Habilita el navegador de contenido para que un usuario pueda buscar carpetas desde una incorporación. Todos los usuarios de incorporación al que se les otorgue el permiso embed_browse_spaces obtendrán acceso a la carpeta de incorporación personal y a la carpeta Compartida de tu organización (si la hay).

Se recomienda el permiso embed_browse_spaces para los usuarios que tienen el permiso save_content, de modo que puedan explorar las carpetas cuando seleccionen dónde guardar el contenido.

Para ver el contenido en carpetas, el usuario también necesita los permisos see_looks, see_user_dashboards y see_lookml_dashboards.
embed_save_shared_space Ninguno Ancho de la instancia AGREGAR 21.4 Permite que el usuario que también tiene el permiso save_content navegue hasta la carpeta Shared de la organización, si es que hay una, desde el cuadro de diálogo Guardar. Los usuarios que tengan el permiso save_content, pero no el permiso embed_save_shared_space, solo podrán guardar el contenido en su carpeta de incorporación personal.

El permiso embed_save_shared_space no anula los permisos de acceso al contenido. Por ejemplo, para permitir que el usuario pueda guardar en la carpeta Shared, aún necesita Administrar acceso, Editar acceso a la carpeta Compartido. Además, la falta del permiso embed_save_shared_space no impide que un usuario que tiene el permiso save_content y acceso de Administrar acceso y edición a la carpeta Compartido guarde contenido allí si tiene una forma alternativa de navegar a la carpeta Compartido, por ejemplo, con la opción Explorar desde aquí desde un panel incorporado.

Acceso al modelo

Determinar a qué modelos de LookML debe tener acceso el usuario Esto solo será una lista de nombres de modelos.

Atributos de usuario

Determina qué atributos debe tener el usuario, si corresponde. Necesitarás el nombre del atributo de usuario de Looker y el valor que debería tener el usuario para ese atributo.

Grupos

Determina a qué grupos debe pertenecer el usuario, si corresponde. Necesitarás los ID de los grupos en lugar de los nombres de los grupos. Agregar un usuario de incorporación firmado a un grupo de Looker te permite administrar el acceso de ese usuario a las carpetas de Looker. Los usuarios de incorporaciones firmadas tendrán acceso a todas las carpetas que se compartan con los miembros de sus grupos de Looker.

También puedes usar el parámetro external_group_id para crear un grupo externo a los grupos normales de Looker. En ese caso, los usuarios de incorporación firmados con el mismo external_group_id tendrán acceso a una carpeta compartida, llamada “Grupo”, que es exclusiva del grupo externo.

Roles incorporados

Los parámetros permissions y models crean una función para el usuario de incorporación. Este rol aparece como un “Rol incorporado” en la página Usuarios de la sección Administrador de Looker. Si los parámetros permissions, models y group_ids se especifican en la URL incorporada, el rol incorporado será aditivo para cualquier rol que ya esté asignado a los grupos enumerados en el parámetro group_ids. Esto es lo mismo que los roles estándar, ya que todos los roles en Looker son aditivos.

Por ejemplo, supongamos que ya tienes un grupo en Looker con el ID de grupo 1, que ya tiene el permiso explore para un modelo llamado model_one, y creas una URL incorporada con los siguientes parámetros:

  • group_ids = ["1"]
  • permissions = ["access_data","see_looks"]
  • models = ["model_two"]

En ese caso, el usuario incorporado heredará la capacidad de ver y explorar los datos en model_one, y el rol de incorporación creado con los parámetros anteriores también podrá ver los datos en model_two.

Cómo crear la URL incorporada

Una URL incorporada firmada tiene el siguiente formato:

https://HOSThttps://URL DE INCORPORACIÓNhttps://PARÁMETROShttps://SIGNATURE

Host

El host es la ubicación en la que se aloja tu instancia de Looker. Por ejemplo, analytics.mycompany.com. Asegúrate de incluir el número de puerto si no habilitaste la redirección de puertos, como analytics.mycompany.com:9999.

Incorporar URL

La URL incorporada se determinó previamente. Tendrá un formato como el siguiente:

  • /embed/looks/4
  • /embed/explore/my_model/my_explore
  • /embed/query-visualization/Query.client_id
  • /embed/dashboards/1 o /embed/dashboards-legacy/1
  • /embed/dashboards/my_model::my_dashboard o /embed/dashboards-legacy/my_model::my_dashboard

Esto significa que el patrón /embed//embed/ aparecerá en la URL final; es correcto.

Si usas eventos de JavaScript incorporados, asegúrate de agregar un elemento embed_domain (el dominio en el que se utiliza el iframe) al final de la URL incorporada, como se muestra a continuación:

/embed/looks/4
/embed/looks/4?embed_domain=https://mywebsite.com

embed_domain se agrega después de la URL incorporada y antes de los parámetros. Por lo tanto, si tienes parámetros existentes, como nonce=626, la adición del embed_domain se vería de la siguiente manera:

/embed/looks/4?nonce=626
/embed/looks/4?embed_domain=https://mywebsite.com?nonce=626

Si usas Embed SDK, asegúrate de agregar embed_domain y, además, incluir sdk=2 al final de la URL incorporada, de la siguiente manera:

/embed/looks/4
/embed/looks/4?embed_domain=https://mywebsite.com&sdk=2

El parámetro sdk=2 permite que Looker identifique si el SDK está presente y puede aprovechar las funciones adicionales que proporciona. El SDK no puede agregar este parámetro porque forma parte de la URL firmada.

Parámetros

Los siguientes parámetros de URL se usan para especificar la información necesaria para la incorporación firmada:

Parámetro Valor predeterminado Descripción Tipo de datos Ejemplo
nonce Valor requerido Cualquier cadena aleatoria que te guste, pero no puede repetirse en el transcurso de una hora y debe tener menos de 255 caracteres.

De esta forma, se evita que el atacante vuelva a enviar la URL de un usuario legítimo para recopilar información que no debería tener.
String JSON "22b1ee700ef3dc2f500fb7"
time Valor requerido Es la hora actual como una marca de tiempo de UNIX. Integer 1407876784
session_length Valor requerido La cantidad de segundos que el usuario debe permanecer conectado a Looker, entre 0 y 2,592,000 segundos (30 días). Integer 86400
external_user_id Valor requerido Es un identificador para cada usuario de la aplicación que incorpora Looker. Looker usa external_user_id para diferenciar a los usuarios de incorporaciones firmadas, por lo que cada usuario debe tener asignado un ID único.

Puedes crear un external_user_id para un usuario con cualquier cadena que desees, siempre que sea único para ese usuario. Cada ID se asocia con un conjunto de permisos, atributos de usuario y modelos. Un solo navegador puede admitir un solo external_user_id, o sesión de usuario, a la vez. No se pueden realizar cambios en los permisos ni en los atributos del usuario durante la sesión.

Por motivos de seguridad, asegúrate de no usar el mismo external_user_id en diferentes sesiones de incorporación para distintos usuarios interactivos y de no usar el mismo external_user_id para un solo usuario que tenga permisos, valores de atributos de usuario o acceso al modelo diferentes.

Si usas el mismo external_user_id para varios usuarios o el mismo usuario con varios permisos, atributos de usuario o conjuntos de modelos, es posible que los datos sean visibles para usuarios que, de otro modo, no tendrían acceso a ellos.
String de JSON "user-4"
permissions Valor requerido La lista de permisos que debe tener el usuario.

Consulta la sección Permisos en esta página para ver la lista de permisos permitidos.
Arreglo de strings [

  "access_data",

  "see_looks"

]
models Valor requerido La lista de nombres de modelos a los que el usuario debería tener acceso. Arreglo de strings [

  "model_one",

  "model_two"

]
group_ids [] La lista de grupos de Looker de los que debe ser miembro el usuario, si corresponde. Usa los IDs de grupo en lugar de nombres de grupos. Arreglo de strings ["4", "3"]
external_group_id "" Un identificador único para el grupo al que pertenece el usuario en la aplicación que está incorporando Looker, si lo deseas.

Los usuarios que tengan permiso para guardar contenido y compartir un ID de grupo externo podrán guardar y editar contenido en una carpeta compartida de Looker llamada “Grupo”. El parámetro external_group_id es el único método disponible para crear grupos externos de usuarios incorporados. No hay forma de configurar grupos de usuarios de incorporación externos desde la IU de Looker.
String de JSON "Accounting"
user_attributes {} Es la lista de atributos que debe tener el usuario, si corresponde. Contiene una lista de los nombres de los atributos de usuario seguidos del valor del atributo de usuario.

Si tu modelo de LookML está localizado, puedes usar el atributo de usuario locale en la URL incorporada para especificar el idioma de la incorporación. Por ejemplo, si incluyes el parámetro user_attributes { "locale" : "fr_FR" }, la incorporación cargaría el francés como idioma.
Hash de cadenas {

  "vendor_id" : "17",

  "company" : "xactness"

}
access_filters Valor requerido En Looker 3.10, se quitó este parámetro, pero aún es obligatorio en la URL. Usa access_filters con un marcador de posición vacío, por ejemplo, access_filters={}. Marcador de posición vacío {}
first_name "" Es el nombre del usuario. Si se deja en blanco, first_name retendrá el valor de la última solicitud o "Embed" (Incorporar) si nunca se estableció un nombre. String de JSON "Alice"
last_name "" El apellido del usuario. Si se deja en blanco, last_name retendrá el valor de la última solicitud o "Embed" (Incorporar) si no se estableció ningún apellido. String de JSON "Jones"
user_timezone "" Si habilitaste las Zonas horarias específicas del usuario, establece el valor de la opción Zona horaria del usuario en el menú desplegable Zona horaria de la vista o el panel incorporados. Este parámetro no cambia directamente la zona horaria en la que se muestra el contenido; el usuario deberá seleccionar una en el menú desplegable.

Consulta los valores válidos en la página de documentación de referencia de la zona horaria de incorporación firmada.

Sugerencia para el equipo de Chat: Si quieres que el contenido incorporado tenga la zona horaria del usuario de forma predeterminada, usa uno de los siguientes métodos:

  • Agrega el parámetro ?query_timezone=user_timezone a la URL incorporada. Por ejemplo:

    /embed/dashboards/1?query_timezone=user_timezone
  • Guarda el panel incorporado o la vista con la zona horaria predeterminada establecida en Zona horaria del usuario, que usará la zona horaria del usuario de forma predeterminada tanto para los usuarios incorporados como para los que no lo utilizan.
  • String JSON o nulo "US/Pacific"

    - o -

    null
    force_logout_login Valor requerido Si un usuario normal de Looker ya accedió a Looker y ve un elemento incorporado firmado, puedes elegir lo siguiente:

    1) deben ver el elemento con sus credenciales actuales.

    o

    2) Debe salir y volver a acceder con las credenciales de incorporación firmadas.
    Booleano (verdadero o falso) true

    Firma

    Para generar la firma, debe seguir estos pasos.

    1. Recopila los siguientes valores de parámetros en este orden:
      • Host, seguido de login/embed/ (por ejemplo, analytics.mycompany.com/login/embed/)
      • Incorporar URL
      • Nonce
      • Hora actual
      • Duración de la sesión
      • ID de usuario externo
      • Permisos
      • Modelos
      • IDs de grupo
      • ID de grupo externo
      • Atributos de usuario
      • Filtros de acceso (requiere un marcador de posición vacío)
    2. Aplica formato JSON a todos los valores que no sean las URL de host o de incorporación
    3. Concatena los valores con saltos de línea (\n)
    4. Firma HMAC en la cadena concatenada con la clave secreta de incorporación de Looker

    Codificación

    El último paso es codificar tu URL como URL.

    Antes de codificar la URL, una URL incorporada con el formato correcto que utiliza todos los parámetros posibles podría verse de la siguiente manera:

    https://analytics.mycompany.com/login/embed//embed/dashboards/1?
    nonce="22b1ee700ef3dc2f500fb7"&
    time=1407876784&
    session_length=86400&
    external_user_id="user-4"&
    permissions=["access_data","see_user_dashboards","see_looks"]&
    models=["model_one","model_two"]&
    group_ids=[4,3]&
    external_group_id="Allegra K"&
    user_attributes={"vendor_id":"17","company":"xactness"}&
    access_filters={}&
    first_name="Alice"&
    last_name="Jones"&
    user_timezone="US/Pacific"&
    force_logout_login=true&
    signature=123456789ABCDEFGHIJKL
    

    Como se indicó anteriormente, es correcto que /embed//embed/ aparezca en tu URL.

    Después de codificar la URL, se verá de la siguiente manera:

    https://analytics.mycompany.com/login/embed/%2embed%2Fdashboards%2F1?
    nonce=%2222b1ee700ef3dc2f500fb7&%22&
    time=1407876784&
    session_length=86400&
    external_user_id=%22user-4%22&
    permissions=%5B%22access_data%22%2C%22see_user_dashboards%22%2C%22see_looks%22%5D&
    models=%5B%22model_one%22%2C%22model_two%22%5D&
    group_ids=%5B4%2C3%5D&
    external_group_id=%22Allegra%20K%22&
    user_attributes=%7B%22vendor_id%22%3A%2217%22%2C%22company%22%3A%22xactness%22%7D&
    access_filters%7B%7D%26%0A
    first_name=%22Alice%22&
    last_name=%22Jones%22&
    user_timezone=%22US%2FPacific%22&
    force_logout_login=true&
    signature=123456789ABCDEFGHIJKL
    

    Usa el extremo de API de Create Embed Url

    La API de Looker incluye el extremo Crear URL de incorporación firmada, que toma un conjunto de parámetros de incorporación firmados que incluye la URL del contenido que quieres incorporar y muestra una URL completa, codificada y firmada de forma criptográfica.

    Para usar este extremo de API desde un servidor web, este debe poder autenticarse en la API de Looker con privilegios de administrador. El dominio del servidor web también debe aparecer en la lista de entidades permitidas de dominios de incorporación.

    También puedes utilizar el Explorador de API para generar una URL firmada que use este extremo. Puedes instalar el Explorador de APIs en tu instancia de Looker desde Looker Marketplace. Una vez generada, la URL firmada debe copiarse exactamente y usarse solo una vez; de lo contrario, fallará. El Explorador de APIs también es útil para generar una URL firmada y compararla con una URL firmada creada manualmente para solucionar problemas.

    Para obtener más información sobre la API de Looker, consulta la página de documentación Comienza a usar la API de Looker.

    Prueba la URL incorporada

    Para probar tu URL final, pégala en el validador de URI de incorporación de la página Incorporar de la sección Administrador de Looker. Aunque esta opción no puede indicarte si los datos y permisos que imaginas se configuraron correctamente, puede validar que tu autenticación funcione correctamente.