Yerleştirilmiş görüntüleyenler için satır düzeyinde güvenlik

Örneğin, X geliştiricisinin müşterileri için bir web uygulaması olduğunu varsayalım. Müşteriler, kendi kimlik bilgilerini kullanarak uygulamaya giriş yapar ve farklı mağazaların satış verilerini görüntüleyebilir. Her müşteri farklı bir mağaza listesine erişebilir. Geliştirici, uygulamasında bir Data Studio kontrol paneli yerleştirmek istiyor. Böylece bir müşteri giriş yaptığında yalnızca erişebildiği mağazaların satış verilerini görebilecek. Bu işlemin çalışması için müşterilerin Google Hesaplarına giriş yapması gerekmez.

Önerilen çözüm için geliştiricinin bir Topluluk Bağlayıcısı oluşturması, yerleştirme URL'si üzerinden bir jeton iletmesi ve ardından verileri jetona göre filtrelemesi gerekir.

Şartlar

  • Kontrol paneli görüntüleyicileri, üçüncü taraf uygulamasına giriş yapar.
  • Uygulama, yerleştirme URL'si aracılığıyla Data Studio kontrol paneline benzersiz bir jeton iletmelidir. Jeton, filtre bilgilerini aramak veya filtre bilgilerini şifrelemek için kullanılabilir.
  • Topluluk bağlayıcısı, jetonu filtre değerlerine dönüştürebilmelidir.

Sınırlamalar

  • G Suite müşterisiyseniz ve yöneticiniz "Bağlantıya sahip olan herkes" ile Drive dosyası paylaşımını devre dışı bıraktıysa raporu kuruluşunuz dışındaki kullanıcılarla paylaşamazsınız.

Çözüm

Çözümü uygulamak için aşağıdaki adımların tamamını uygulayın.

Web uygulamasında kullanıcı jetonu oluşturma

Web uygulamanızda giriş yapan her kullanıcı için benzersiz bir jeton oluşturun.Bu jetonu daha sonraki bir adımda yerleştirilmiş kontrol paneline ileteceksiniz.

İlgili verileri filtrelemek için jetonu kullanmanız gerekir. Seçenekler aşağıdakileri içerir:

  • Filtrelenmiş verileri veya belirli bir jeton için kullanıcı bilgilerini döndüren bir API uç noktası oluşturun.
  • Kullanıcı bilgilerini jetonda şifreleyin. Böylece, bu bilgiler daha sonra bağlayıcıda şifre çözülebilir.

Yeni bir Topluluk Bağlayıcısı oluşturma

Başlamak için Topluluk Bağlayıcılarının İşleyiş Şekli başlıklı makaleyi inceleyin ve Topluluk Bağlayıcı Codelab'ini tamamlayın. Daha hızlı ve kolay bir geliştirme süreci için bağlayıcı oluşturmaya yönelik yerel geliştirme araçlarını kullanın.

Bağlayıcı kodunu yazma

  1. getConfig() en az bir yapılandırma öğesi döndürmelidir. Bu, yerleştirilmiş URL'nin parametrelerinden bir jeton yakalamak için kullanılır.

    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(), request.configParams nesnesi aracılığıyla jetona erişebilir. Filtrelenmiş verileri getirmek veya mevcut getirilmiş verileri filtrelemek için jetonu kullanın.
    Yukarıdaki örneğe göre jeton request.configParams.token olur. getData() bölümünde, Mağaza Kimlikleri listesini almak için jeton bir REST API uç noktasına iletilir. Bu mağaza kimlikleri daha sonra satış verilerini getirmek için SQL sorgusunu oluşturmak üzere kullanılır.

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

Kontrol panelini oluşturma

  1. Dağıtımların ve sürümlerin bağlayıcılar için nasıl çalıştığını anlayın.
  2. Bağlayıcı için üretim dağıtımı oluşturun.
  3. Data Studio'da veri kaynağı ve rapor oluşturmak için üretim dağıtımı bağlantısını kullanın.
  4. token yapılandırma parametresi için Raporu görüntüleyenlerin parametre değerlerini değiştirmesine izin verin.
  5. Seçilen kullanıcılarla veya "Bağlantıya sahip olan herkes" ile gösterge tablosunu paylaşın.
  6. Rapor için yerleştirmeyi etkinleştirin.

Kontrol panelini platformunuza yerleştirme

  1. Rapor URL parametrelerinin işleyiş şeklini anlayın.
  2. Dinamik olarak oluşturulan jeton değerini, URL parametrelerini kullanarak yerleştirilmiş Data Studio raporuna iletin.
    Yerleştirme URL'niz aşağıdaki gibi görünür:
    `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

Öneriler

  • Kısa ömürlü bir jeton oluşturmalısınız.
  • Kontrol panelinin, geçersiz bir jetonla görüntülenen bilgileri sızdırmadığından emin olun.