Zabezpieczenia na poziomie wiersza w przypadku użytkowników umieszczonych na stronie

Załóżmy na przykład, że programista X ma aplikację internetową dla swoich klientów. Klienci logują się w aplikacji za pomocą własnych danych logowania i mogą wyświetlać dane dotyczące sprzedaży w różnych sklepach. Każdy klient ma dostęp do innej listy sklepów. Deweloper chce umieścić w swojej aplikacji panel Looker Studio, tak aby po zalogowaniu się klient widział tylko dane o sprzedaży dotyczące sklepów, do których ma dostęp. Aby ten proces zadziałał, klienci nie powinni się logować na swoje konta Google.

Proponowane rozwiązanie będzie wymagało od programisty utworzenia społecznościowego oprogramowania sprzęgającego, przekazania tokena przez adres URL umieszczonego adresu URL oraz filtrowania danych na jego podstawie.

Wymagania

  • Osoby przeglądające panel będą się logować w aplikacji innej firmy.
  • Aplikacja powinna przekazywać unikalny token do panelu Looker Studio za pomocą adresu URL umieszczonego na stronie. Token może służyć do wyszukiwania informacji o filtrze lub w nich szyfrować dane filtra.
  • Społecznościowe oprogramowanie sprzęgające powinno mieć możliwość przekonwertowania tokena na wartości filtrów.

Ograniczenia

  • Jeśli korzystasz z G Suite i administrator wyłączył udostępnianie plików z Dysku „Każda osoba mająca link”, nie możesz udostępniać raportu użytkownikom spoza organizacji.

Rozwiązanie

Aby wdrożyć rozwiązanie, wykonaj wszystkie poniższe czynności.

Generowanie tokena użytkownika w aplikacji internetowej

Wygeneruj unikalny token dla każdego zalogowanego użytkownika w aplikacji internetowej.W kolejnym kroku przekażesz ten token do umieszczonego panelu.

Należy go używać do filtrowania odpowiednich danych. Dostępne opcje:

  • Utwórz punkt końcowy interfejsu API, który będzie zwracać odfiltrowane dane lub informacje o użytkowniku dla określonego tokena.
  • Zaszyfruj informacje o użytkowniku w tokenie, aby można było je później odszyfrować w oprogramowaniu sprzęgającym.

Utwórz nowe społecznościowe oprogramowanie sprzęgające

Aby rozpocząć, zapoznaj się z artykułem Jak działa społecznościowe oprogramowanie sprzęgające i wykonaj ćwiczenie z programowania społecznościowego oprogramowania sprzęgającego. Aby przyspieszyć i ułatwić proces programowania, korzystaj z narzędzi dla programistów lokalnych do tworzenia oprogramowania sprzęgającego.

Pisanie kodu oprogramowania sprzęgającego

  1. Komponent getConfig() powinien zwrócić co najmniej 1 element konfiguracji. Służy ona do przechwytywania tokena z parametrów adresu URL umieszczonego na stronie.

    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() będzie mieć dostęp do tokena za pomocą obiektu request.configParams. Użyj tokena do pobierania przefiltrowanych danych lub przefiltruj istniejące dane.
    W powyższym przykładzie token będzie miał postać request.configParams.token. W getData() token jest przekazywany do punktu końcowego interfejsu API REST, aby uzyskać listę identyfikatorów sklepu. Te identyfikatory sklepów służą następnie do utworzenia zapytania SQL pobierającego dane o sprzedaży.

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

Tworzenie panelu

  1. Dowiedz się, jak działają wdrożenia i wersje oprogramowania sprzęgającego.
  2. Utwórz wdrożenie produkcyjne oprogramowania sprzęgającego.
  3. Użyj linku do wdrożenia produkcyjnego, aby utworzyć źródło danych i raport w Looker Studio.
  4. W przypadku parametru konfiguracji token przeczytaj artykuł Zezwalaj przeglądającym raport na modyfikowanie wartości parametrów.
  5. Udostępnij panel wybranym użytkownikom lub każdej osobie, która ma link.
  6. Włącz umieszczanie raportu.

Umieszczanie panelu na platformie

  1. Dowiedz się, jak działają parametry adresu URL raportu.
  2. Przekazuj dynamicznie generowaną wartość tokena za pomocą parametrów adresu URL do umieszczonego raportu narzędzia Looker Studio.
    Adres URL do umieszczenia będzie wyglądać podobnie do tego:
    `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

Rekomendacje

  • Utwórz token krótkotrwały.
  • Sprawdź, czy panel nie ujawnia żadnych informacji wyświetlanych za pomocą nieprawidłowego tokena.