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. A desenvolvedor gostaria de incorporar um painel do Looker Studio no aplicativo para que, quando um cliente fizer login, ele tenha acesso apenas aos dados de vendas das lojas aos quais eles têm 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 de incorporação. O token pode ser usado para procurar informações de filtro nem criptografar as informações dos filtros.
  • O conector da comunidade precisa ser capaz de converter o token em valores de filtro.

Limitações

  • Se você for um cliente do G Suite e seu administrador tiver desativado o compartilhamento arquivos do Drive para “Qualquer pessoa com o link”, não será possível compartilhar o 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 ao seu aplicativo da Web. passar esse token para o painel incorporado em uma etapa posterior.

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

  • Criar um endpoint de API que retorne dados filtrados ou as informações do usuário para um token específico.
  • criptografar as informações do usuário no token para que ele possa ser descriptografado posteriormente. no conector.

Criar um novo conector da comunidade

Leia Como os conectores da comunidade funcionam e conclua a Codelab sobre os conectores da comunidade para começar. Use o Ferramentas de desenvolvimento locais para criar conectores de desenvolvimento de software.

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 pela 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 REST Ponto de extremidade da API para ver uma lista de IDs de loja. Esses IDs de loja são usados para criar uma consulta SQL para 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 "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 um relatório do Looker Studio incorporado.
    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 informações token inválido.