適用於嵌入檢視者的資料列層級安全性

舉例來說,假設開發人員 X 為客戶建立了網頁應用程式,用戶端使用自己的憑證登入應用程式,可以查看不同商店的銷售資料。每個客戶都能存取不同的商店清單。開發人員想要在應用程式中嵌入 Looker Studio 資訊主頁,因此當用戶端登入時,用戶端只能查看他們有權存取的商店銷售資料。用戶端不應該登入 Google 帳戶,這項程序才能運作。

建議的解決方案將需要開發人員建立社群連接器,透過嵌入網址傳遞權杖,然後根據符記篩選資料。

需求條件

  • 資訊主頁檢視者會登入第三方應用程式。
  • 應用程式應透過嵌入網址,將專屬權杖傳送至 Looker Studio 資訊主頁。權杖可用於查詢篩選器資訊,或是將篩選器資訊加密。
  • 社群連接器應該能夠將符記轉換為篩選器值。

限制

  • 如果您是 G Suite 客戶,且管理員已停用共用雲端硬碟檔案給「知道連結的使用者」,您將無法與機構外的使用者共用報表。

解決方法

請完成下列所有步驟來實作解決方案。

在網頁應用程式中產生使用者權杖

為網頁應用程式中的每位登入使用者產生專屬權杖。您會在後續步驟中將這個權杖傳送至嵌入的資訊主頁。

您應使用權杖來篩選相關資料。選項包括:

  • 針對特定權杖建立 API 端點,該端點會傳回經過篩選的資料或使用者資訊。
  • 將權杖中的使用者資訊加密,以便稍後在連接器中解密。

建立新的社群連接器

詳閱「社群連接器的運作方式」一文,並完成社群連接器程式碼研究室,即可開始使用。使用本機開發工具建立連接器,可加快開發程序。

編寫連接器程式碼

  1. getConfig() 應傳回至少一個設定項目。這會用來從嵌入網址的參數擷取符記。

    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 物件存取符記。使用權杖擷取經過篩選的資料,或篩選現有的擷取資料。
    在上述範例中,權杖會是 request.configParams.token。在 getData() 中,權杖會傳遞至 REST API 端點,以取得商店 ID 清單。接著,這些商店 ID 會用來建構 SQL 查詢來擷取銷售資料。

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

建立資訊主頁

  1. 瞭解連接器部署和版本的運作方式。
  2. 為連接器建立實際工作環境部署
  3. 使用實際工作環境部署連結,在 Looker Studio 中建立資料來源和報表。
  4. 如果是 token 設定參數,請參閱「允許報表檢視者修改參數值」。
  5. 與選取的使用者或「知道連結的使用者」共用資訊主頁
  6. 為報表啟用嵌入功能

將資訊主頁嵌入平台

  1. 瞭解報表網址參數的運作方式。
  2. 將使用網址參數動態產生的權杖值傳遞至內嵌的 Looker Studio 報表。
    嵌入網址看起來會像這樣:
    `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

建議

  • 您應建立「短期」權杖。
  • 請確保資訊主頁不會洩露帶有無效權杖的任何資訊。