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 los datos de ventas de diferentes tiendas. Cada cliente tiene acceso a una lista diferente de tiendas. El desarrollador quiere incorporar un panel de Data 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 requerirá que el desarrollador cree un conector de la comunidad, pase un token a través de la URL de incorporación y, luego, filtre los datos según el token.

Requisitos

  • Los usuarios del panel accederán a la aplicación de terceros.
  • La aplicación debe pasar un token único al panel de Data Studio a través de la URL de incorporación. El token se puede usar para buscar información de filtros o para tener la información de filtros encriptada dentro.
  • El conector de la comunidad debe 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 el vínculo”, no podrás compartir el informe con usuarios externos a tu organización.

Solución

Completa todos los pasos siguientes para implementar la solución.

Genera un token de usuario en la app web

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

Debes usar el token para filtrar los datos pertinentes. Incluye las siguientes opciones:

  • Crea un endpoint 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 se pueda desencriptar más adelante en el conector.

Crea un conector de la comunidad nuevo

Consulta Cómo funcionan los conectores de la comunidad y completa el codelab del conector de la comunidad para comenzar. Usa las herramientas de desarrollo local para crear conectores y lograr un proceso de desarrollo más rápido y sencillo.

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 de incorporación.

    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 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 IDs de tiendas. Luego, estos IDs de tiendas se usan para construir la consulta en SQL para recuperar 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 las versiones para los conectores.
  2. Crea una implementación de producción para el conector.
  3. Usa el vínculo de implementación de producción para crear una fuente de datos y un informe en Data Studio.
  4. Para el parámetro de configuración token, permite que los usuarios del informe modifiquen los valores de los parámetros.
  5. Comparte el panel con los usuarios seleccionados o con “Cualquier persona con el vínculo”.
  6. Habilita la incorporación para el informe.

Incorpora el panel en tu plataforma

  1. Comprende cómo funcionan los parámetros de URL del informe.
  2. Pasa el valor del token generado de forma dinámica con parámetros de URL al informe de Data Studio incorporado.
    Tu URL de incorporación se verá de la siguiente manera:
    `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.