Sicurezza a livello di riga per i visualizzatori incorporati

Ad esempio, supponiamo che lo sviluppatore X abbia un'applicazione web per i suoi clienti. I clienti accedono all'app utilizzando le proprie credenziali e possono visualizzare i dati di vendita di diversi negozi. Ogni cliente ha accesso a un elenco diverso di negozi. Lo sviluppatore vorrebbe incorporare una dashboard di Data Studio nella sua applicazione in modo che, quando un cliente accede, veda solo i dati di vendita dei negozi a cui ha accesso. Per il corretto funzionamento di questa procedura, i clienti non devono accedere al proprio Account Google.

La soluzione proposta richiede allo sviluppatore di creare un connettore della community, trasmettere un token tramite l'URL di incorporamento e quindi filtrare i dati in base al token.

Requisiti

  • I visualizzatori della dashboard accederanno all'applicazione di terze parti.
  • L'applicazione deve trasmettere un token univoco alla dashboard di Data Studio tramite l'URL di incorporamento. Il token può essere utilizzato per cercare le informazioni sui filtri o per includere le informazioni sui filtri crittografate.
  • Il connettore della community deve essere in grado di convertire il token nei valori dei filtri.

Limitazioni

  • Se sei un cliente di G Suite e il tuo amministratore ha disattivato la condivisione dei file di Drive con "Chiunque abbia il link", non potrai condividere il report con utenti esterni alla tua organizzazione.

Soluzione

Completa tutti i passaggi seguenti per implementare la soluzione.

Generare il token utente nell'app web

Genera un token univoco per ogni utente che ha eseguito l'accesso alla tua applicazione web.Questo token verrà trasmesso alla dashboard incorporata in un passaggio successivo.

Utilizza il token per filtrare i dati pertinenti. Le opzioni disponibili sono le seguenti:

  • Crea un endpoint API che restituisca i dati filtrati o le informazioni utente per un token specifico.
  • Cripta le informazioni utente nel token in modo che possano essere decriptate in un secondo momento nel connettore.

Creare un nuovo connettore della community

Per iniziare, consulta la pagina Come funzionano i connettori della community e completa il codelab sui connettori della community. Utilizza gli strumenti di sviluppo locale per creare connettori per un processo di sviluppo più semplice e veloce.

Scrivere il codice del connettore

  1. getConfig() deve restituire almeno un elemento di configurazione. Verrà utilizzato per acquisire un token dai parametri dell'URL di incorporamento.

    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() avrà accesso al token tramite l'oggetto request.configParams. Utilizza il token per recuperare i dati filtrati o filtra i dati recuperati esistenti.
    Seguendo l'esempio precedente, il token sarà request.configParams.token. In getData(), il token viene trasmesso a un endpoint API REST per ottenere un elenco di ID negozio. Questi ID negozio vengono quindi utilizzati per creare la query SQL per recuperare i dati di vendita.

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

Creare la dashboard

  1. Comprendi il funzionamento di deployment e versioni per i connettori.
  2. Crea un deployment di produzione per il connettore.
  3. Utilizza il link del deployment di produzione per creare un'origine dati e un report in Data Studio.
  4. Per il parametro di configurazione token, consenti ai visualizzatori dei report di modificare i valori dei parametri.
  5. Condividi la dashboard con gli utenti selezionati o con "Chiunque abbia il link".
  6. Attiva l'incorporamento per il report.

Incorporare la dashboard nella piattaforma

  1. Comprendi il funzionamento dei parametri URL dei report.
  2. Trasmetti il valore del token generato dinamicamente utilizzando i parametri URL al report di Data Studio incorporato.
    L'URL di incorporamento sarà simile al seguente:
    `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

Consigli

  • Devi creare un token a breve durata.
  • Assicurati che la dashboard non divulghi informazioni visualizzate con un token non valido.