Prácticas recomendadas de seguridad para las estadísticas incorporadas

Con Looker Embedded Analytics, puedes empoderar a tus usuarios y clientes para que exploren datos incorporados en iframes en cualquier página web, portal o aplicación con formato HTML. El iframe ejecuta toda la aplicación de Looker y solicita solo los datos necesarios para mostrar tu consulta. Por diseño, no se permite que un iframe lea o escriba datos de tu sitio web o aplicación externos.

En ocasiones, los datos de incorporación pueden presentar problemas de seguridad o privacidad. Sugerimos que los administradores de Looker sigan estas prácticas recomendadas para mitigar estas inquietudes:

  • Si incorporas contenido de Looker para los clientes, configura el contenido del cliente en una instancia de Looker independiente de la que usas para las estadísticas internas.
  • Solo conecta datos a la instancia incorporada de Looker a la que deberían acceder los usuarios incorporados, que pueden ser públicos.
  • Protege los tokens aleatorios dentro de las URLs de incorporación públicas como si fueran credenciales de usuario y, si no se usan, inhabilita las URLs públicas.
  • Un valor external_user_id asignado debe ser único para cada conjunto de permisos, atributos de usuario y modelos. Asegúrate de no usar el mismo external_user_id en diferentes sesiones de incorporación para diferentes usuarios interactivos y de no usar el mismo external_user_id para un solo usuario que tenga diferentes permisos, valores de atributos de usuario o acceso al modelo.
  • Habilita un sistema cerrado.
  • Protege el secreto de incorporación firmada como si fueran credenciales de administrador para tu instancia de Looker incorporada y mantén inhabilitada la incorporación firmada si no la usas.
  • Usa una autenticación sólida para tus instancias incorporadas de Looker (incorporación firmada, SAML, Google OAuth, 2FA).
  • Si usas la incorporación sin cookies, protege el token de referencia de la sesión para que solo se pueda acceder a él en el servidor host de la aplicación incorporada. El token de referencia de la sesión nunca debe exponerse en el navegador.
  • Si usas la incorporación sin cookies y estableces el dominio de incorporación permitido cuando adquieres la sesión sin cookies, nunca confíes en el origen del navegador del usuario incorporado. Siempre mantén una asignación del usuario incorporado al origen de confianza del usuario incorporado en el servidor de la aplicación incorporada.

Looker ofrece diferentes tipos de métodos de incorporación según el nivel de autenticación que requieren los usuarios que acceden a tus datos: pública, privada y incorporación firmada. Con cualquiera de estos métodos, puedes interactuar con el iframe mediante JavaScript.

Incorporación pública

Con la opción Acceso público de una imagen habilitada, puedes incorporar una visualización o una tabla de datos en un sitio web externo con una etiqueta iframe HTML. También puedes compartir públicamente la URL de la imagen o importar datos a Google o Excel aplicaciones de hojas de cálculo.

La URL y la URL de incorporación dentro de la etiqueta iframe contienen un token aleatorio y no se pueden adivinar, pero cualquier persona con la URL de incorporación puede acceder a los datos, y no se aplican filtros ni restricciones adicionales. Te recomendamos que consideres las implicaciones de seguridad de crear y compartir una URL pública para una imagen determinada antes de habilitar URLs públicas.

Las URLs públicas y las URLs de incorporación públicas nunca vencen y no se pueden revocar. Cuando compartes una URL pública, compartes la consulta y no los datos reales.

Incorporación privada

Si no quieres permitir el acceso público a tu imagen, también puedes incorporar una imagen (o una exploración o un panel) de forma privada en un iframe, de modo que se requiera un acceso a Looker para ver el contenido.

Los usuarios autenticados solo pueden acceder al contenido que dictan sus permisos de Looker asignados. Si cambias sus permisos en Looker, la URL de incorporación no cambia, pero lo que el usuario puede ver cuando accede a la URL puede cambiar.

Si el usuario no está autenticado, puedes mostrar un error o una pantalla de acceso en el iframe. Sin embargo, habilitar una pantalla de acceso en el iframe no es compatible con las protecciones de mismo origen de Looker.

Las URLs de incorporación privadas nunca vencen y no se pueden revocar. Sin embargo, como el vínculo solo funciona para alguien que tiene acceso a tu instancia de Looker y a esos datos, enviar un vínculo no debería causar un problema de seguridad.

Incorporación firmada

Comunícate con un especialista en ventas de Google Cloud para actualizar tu licencia para esta función.

La incorporación firmada lleva la incorporación privada un paso más allá. La incorporación firmada no requiere que los usuarios se autentiquen con una cuenta de usuario de Looker. En cambio, se pueden autenticar a través de tu propia aplicación con la URL en un iframe. La autenticación crea una nueva sesión del navegador y emite una cookie en el navegador.

Los permisos, los identificadores y los atributos del usuario se pasan como parámetros dentro de la URL, que se firma con una clave secreta. Cualquier persona con acceso a la clave secreta puede crear una URL para acceder a cualquier modelo al que esté conectada la instancia de Looker, como cualquier usuario, con cualquier permiso. Consulta nuestro código de ejemplo para aprender a generar URLs firmadas.

El clickjacking es un problema de seguridad del navegador que puede ocurrir cuando el código o una secuencia de comandos incorporados ejecutan una función sin el conocimiento o el consentimiento del usuario, como un botón que parece hacer otra cosa. Por lo general, el clickjacking requiere una URL estática. La URL generada para una incorporación firmada es secreta, y solo el usuario que ve la incorporación debería tenerla. El uso de la incorporación firmada no aumenta el riesgo de clickjacking en el sitio web externo.

Parámetros de incorporación firmada

Los parámetros incluidos en la URL del iframe son visibles para los usuarios incorporados, pero no se pueden editar. Estos pueden incluir:

  • user_attributes: Se usan para filtrar aún más los datos. user_attributes son potentes, así que considera cómo se pueden aplicar a tu instancia de Looker.
  • session_length: Mantén este valor en el tiempo mínimo necesario.

Algunos parámetros, como user_attributes, se pueden ocultar en la IU, pero aún se codificarían en la URL de incorporación. Esto puede ser indeseable si, por ejemplo, una contraseña es un valor dentro de un user_attribute del usuario. Una forma de evitar esto es crear un grupo temporal, establecer la contraseña como un atributo a nivel del grupo y, luego, pasar el ID del grupo en la URL de incorporación. Puedes borrar el grupo después de la sesión de incorporación para evitar un exceso de grupos vencidos.

La parte firmada de la URL contiene una marca de tiempo. Una vez que se usa la URL para acceder, esa hora debe ser +/- 5 minutos de la hora actual. Puedes especificar en session_length cuánto puede durar la sesión de incorporación desde que se usa la URL para acceder.

Administra el acceso a la incorporación firmada

Cuando compiles la URL para tu contenido incorporado, haz lo siguiente:

  • Usa el nivel de permisos más bajo necesario.
  • Solo asigna acceso a los modelos específicos a los que el usuario debería poder acceder.
  • Usa group_ids para asignar un usuario a un grupo y permitir que el usuario incorporado controle el acceso a su carpeta de Looker.

API de Looker

Con la API de Looker, puedes habilitar el acceso al contenido incorporado a través de una aplicación de proxy o un servidor proxy inverso. En este caso, la autenticación se realiza con claves de API, que están vinculadas a un usuario específico y tienen los mismos permisos que el usuario que las genera. Las claves de API se componen de un ID de cliente y una clave secreto del cliente.

Administra el acceso a la incorporación con la API

Cuando habilites el acceso al contenido incorporado con la API de Looker, te recomendamos lo siguiente:

  • Crear cuentas de servicios dedicadas para el acceso programático a la API con el conjunto mínimo de privilegios necesarios
  • Proteger el ID de cliente y el secreto del cliente que componen la clave de API (si se autentica con un SDK)

Cualquier atributo de usuario establecido para los usuarios incorporados con la API, pero no especificado en la URL de incorporación firmada, se restablece a sus valores predeterminados cuando se vuelve a acceder a la URL de incorporación firmada.

Eventos de JavaScript incorporados

Después de configurar tu iframe de incorporación (de forma pública, privada, con incorporación firmada o a través de la API), puedes interactuar con ese iframe mediante JavaScript. Para validar que la información con la que trabajas realmente provenga del iframe de Looker, puedes escuchar los eventos de JavaScript.

Cuando agregues dominios a la lista de entidades permitidas, usa el comodín para permitir que solo los subdominios específicos accedan a tus eventos de JavaScript.

Si usas la función eval de JavaScript, asegúrate de que el valor de cadena en el argumento eval provenga de una fuente confiable, como el servidor o la CDN de Looker, y esté en transporte HTTPS.

Los datos del cliente nunca pasan por las CDN de Looker. Solo los elementos estáticos de la aplicación web de Looker (código JavaScript, páginas HTML, estilos CSS) se entregan desde la CDN.

Implementaciones alojadas por el cliente

Alojamiento de tu propia instancia de Looker puede parecer la forma segura de bloquear el acceso a los datos, en especial al contenido incorporado. Sin embargo, si tus usuarios necesitan acceder a la URL de incorporación a través de Internet, no hay ventajas especiales para alojar Looker por tu cuenta.

Las implementaciones alojadas por el cliente pueden ser más adecuadas en los siguientes casos:

  • No es necesario que tus usuarios accedan a Looker a través de Internet.
  • Estás usando Looker y accedes al contenido incorporado con la API.