Segurança no nível da linha para leitores incorporados

Por exemplo, vamos supor que o desenvolvedor X tenha um aplicativo da Web para os clientes dele. Os clientes fazem login no app usando suas próprias credenciais e podem visualizar dados de vendas para diferentes lojas. Cada cliente tem acesso a uma lista diferente de lojas. O desenvolvedor quer incorporar um painel do Looker Studio no aplicativo para que, quando um cliente fizer login, ele veja apenas os dados de vendas das lojas a que tem acesso. Os clientes não precisarão fazer login na Conta do Google para que esse processo funcione.

A solução proposta precisará que o desenvolvedor crie um conector da comunidade, transmita um token pelo URL incorporado e filtre os dados com base no token.

Requisitos

  • Os visualizadores do painel farão login no aplicativo de terceiros.
  • O aplicativo precisa transmitir um token exclusivo para o painel do Looker Studio pelo URL incorporado. O token pode ser usado para pesquisar informações de filtro ou criptografar essas informações.
  • O conector da comunidade precisa ser capaz de converter o token em valores de filtro.

Limitações

  • Se você for cliente do G Suite e o administrador tiver desativado o compartilhamento de arquivos do Drive para "Qualquer pessoa com um link", não será possível compartilhar o relatório com usuários fora da organização.

Solução

Realize todas as etapas a seguir para implementar a solução.

Gerar um token de usuário no aplicativo da Web

Gere um token exclusivo para cada usuário conectado no aplicativo da Web.Esse token será transmitido para o painel incorporado em uma etapa posterior.

Você precisa usar o token para filtrar dados relevantes. As opções incluem:

  • Crie um endpoint de API que retorne dados filtrados ou as informações do usuário para um token específico.
  • Criptografe as informações do usuário no token para que elas possam ser descriptografadas posteriormente no conector.

Criar um novo conector da comunidade

Para começar, assista o vídeo Como os conectores da comunidade funcionam e conclua o codelab relacionado. Use as Ferramentas de desenvolvimento local para criar conectores, tornando o processo de desenvolvimento mais fácil e rápido.

Gravar o código do conector

  1. getConfig() precisa retornar pelo menos um item de configuração. Ele será usado para capturar um token dos parâmetros do URL incorporado.

    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() terá acesso ao token por meio do objeto request.configParams. Use o token para buscar dados filtrados ou filtrar dados atuais que foram pesquisados.
    Seguindo o exemplo acima, o token seria request.configParams.token. Em getData(), o token é transmitido para um endpoint da API REST para receber uma lista de IDs de loja. Esses IDs de loja são então usados para construir a consulta SQL e buscar dados de vendas.

    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;
    }
    

Criar o painel

  1. Entenda como as implementações e versões funcionam para os conectores.
  2. Crie uma implantação de produção para o conector.
  3. Use o link da implantação de produção para criar uma fonte de dados e um relatório no Looker Studio.
  4. Para o parâmetro de configuração token, permita que os leitores de relatórios modifiquem os valores dos parâmetros.
  5. Compartilhe o painel com os usuários escolhidos ou "Todos com o link".
  6. Ative a incorporação do relatório.

Incorporar o painel na sua plataforma

  1. Entenda como os parâmetros de URL do relatório funcionam.
  2. Transmita o valor do token gerado dinamicamente usando parâmetros de URL para o relatório incorporado do Looker Studio.
    Seu URL de incorporação vai ficar parecido com este:
    `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

Recomendações

  • Você precisa criar um token de curta duração.
  • Verifique se o painel não vaza nenhuma informação com a visualização com um token inválido.