Seguridad a nivel de fila para lectores incorporados

Por ejemplo, supongamos que el desarrollador X tiene una aplicación web para sus clientes. Los clientes acceden a la app con sus propias credenciales y pueden ver datos de ventas de diferentes tiendas. Cada cliente tiene acceso a una lista diferente de tiendas. El desarrollador desea incorporar un panel de Looker Studio en su aplicación para que, cuando un cliente acceda, solo vea los datos de ventas de las tiendas a las que tiene acceso. Los clientes no deberían tener que acceder a su Cuenta de Google para que este proceso funcione.

La solución propuesta necesitará que el desarrollador cree un conector de comunidad, pase un token por la URL incorporada y, luego, filtre los datos según el token.

Requisitos

  • Los lectores del panel accederán a la aplicación de terceros.
  • La aplicación debe pasar un token único al panel de Looker Studio a través de la URL incorporada. El token se puede usar para buscar información de filtro o encriptar la información del filtro en ella.
  • El conector de comunidad debería poder convertir el token en los valores de filtro.

Limitaciones

  • Si eres cliente de G Suite y tu administrador inhabilitó el uso compartido de archivos de Drive con "Cualquier persona con un vínculo", no podrás compartir el informe con usuarios ajenos a tu organización.

Solución

Completa todos los pasos que se indican a continuación para implementar la solución.

Generar un token de usuario en la app web

Genera un token único para cada usuario que haya accedido a tu aplicación web.Pasarás este token al panel incorporado en un paso posterior.

Deberías usar el token para filtrar datos relevantes. Estas son algunas opciones:

  • Crea un extremo de API que muestre datos filtrados o la información del usuario para un token específico.
  • Encripta la información del usuario en el token para que pueda desencriptarse más tarde en el conector.

Crear un nuevo conector de comunidad

Para comenzar, consulta Cómo funcionan los conectores de comunidad y completa el Codelab sobre conectores de la comunidad. Usa las herramientas de desarrollo local para crear conectores a fin de agilizar y facilitar el proceso de desarrollo.

Escribe el código del conector

  1. getConfig() debe mostrar al menos un elemento de configuración. Se usará para capturar un token de los parámetros de la URL incorporada.

    function getConfig(request) {
      var cc = DataStudioApp.createCommunityConnector();
      var config = cc.getConfig();
    
      config
          .newTextInput()
          .setId('token')
          .setName('Enter user token');
    
      // TODO: Add additional config values if applicable for your connector
    
      config.setDateRangeRequired(false);
      config.setIsSteppedConfig(false);
    
      return config.build();
    }
    
  2. getData() tendrá acceso al token a través del objeto request.configParams. Usa el token para recuperar datos filtrados o filtrar los datos recuperados existentes.
    Siguiendo el ejemplo anterior, el token sería request.configParams.token. En getData(), el token se pasa a un extremo de la API de REST para obtener una lista de ID de tienda. Estos ID de tienda se usan para construir la consulta de SQL y, así, recuperar los datos de ventas.

    var STORE_ID_API = 'https://www.example.com/api/storeid';
    var QUERY_STRING_PREFIX = "SELECT StoreName, Sales from stores"
    
    function getData(request) {
      var token = request.configParams.token;
    
      var storeIds = getStoreIdList(token);
      var queryString = constructQueryString(storeIds);
      var fetchedData = fetchData(queryString);
    
      // rest of getData() implementation
    }
    
    function getStoreIdList(token) {
      var url = STORE_ID_API;
      var response = UrlFetchApp.fetch(url);
      var parsedResponse = JSON.parse(response);
      return parsedResponse.storeIds;
    }
    
    function constructQueryString(storeIds) {
      var storeIdString = storeIds.join(',');
      var queryString = QUERY_STRING_PREFIX
                        + ' WHERE storeId in ('
                        + storeIdString
                        + ')';
      return queryString;
    }
    

Crea el panel

  1. Comprende cómo funcionan las implementaciones y versiones para los conectores.
  2. Crea una implementación de producción para el conector.
  3. Usa el vínculo Implementación en producción para crear una fuente de datos y un informe en Looker Studio.
  4. Para el parámetro de configuración token, permite que los lectores de informes modifiquen los valores de los parámetros.
  5. Comparte el panel con los usuarios seleccionados o mediante “Cualquier persona con el vínculo”.
  6. Habilita la incorporación para el informe.

Incorporar el panel a tu plataforma

  1. Comprende cómo funcionan los parámetros de URL de informes.
  2. Pasa el valor del token generado de forma dinámica mediante parámetros de URL al informe incorporado de Looker Studio.
    Tu URL incorporada será similar a esta:
    `https://lookerstudio.google.com/embed/reporting/REPORT_ID/page/PAGE_ID?config=%7B%22ds0%22%3A%7B%22token%22%3A%22TOKEN_VALUE%22%7D%7D

Recomendaciones

  • Debes crear un token de corta duración.
  • Asegúrate de que el panel no filtre ninguna información con un token no válido que se haya visualizado.