埋め込みビューアの行レベルのセキュリティ

たとえば、デベロッパー X がクライアント用のウェブ アプリケーションを提供しているとします。 クライアントが自身の認証情報を使用してアプリにログインし、販売データを表示できる 提供しますクライアントがアクセスできる店舗のリストは、一人ひとり異なります。「 アプリケーションに Looker Studio ダッシュボードを埋め込んで、 クライアントがログインすると、店舗の販売データのみが表示されるようになる。 できます。このプロセスは、クライアントが Google アカウントにログインしていなくても機能します。

下記の解決方法では、デベロッパーはコミュニティ コネクタを作成し、埋め込み URL を介してトークンを渡し、そのトークンに基づいてデータをフィルタします。

要件

  • ダッシュボードの閲覧者は、サードパーティ製アプリにログインする必要があります。
  • アプリケーションから Looker Studio ダッシュボードに一意のトークンを渡す 埋め込み URL を使って取得します。トークンは、フィルタ情報の検索に使用できます。 フィルタ情報を暗号化することもできます
  • コミュニティ コネクタは、トークンをフィルタ値に変換できなければなりません。

制限事項

  • G Suite をご利用で、管理者が共有を無効にしている場合 ドライブのファイルを [リンクを知っている全員] に設定すると、 送信することもできます。

解決策

この解決方法を実装するには、以下のすべての手順を行ってください。

ウェブアプリでユーザー トークンを生成する

ウェブ アプリケーションで、ログイン ユーザーごとに一意のトークンを生成します。 このトークンは、後のステップで埋め込みダッシュボードに渡します。

トークンは、関連データのフィルタリングに使用されます。次のオプションがあります。

  • フィルタされたデータまたはユーザー情報を返す API エンドポイントを作成する 検索します。
  • 後で復号できるようにトークン内のユーザー情報を暗号化する 指定します。

新しいコミュニティ コネクタを作成する

コミュニティ コネクタの仕組みを確認し、完了 コミュニティ コネクタの Codelab をご覧ください。こちらの コネクタ作成用のローカル開発ツールにより、より迅速かつ簡単にコネクタを作成 開発プロセスに集中できます。

コネクタコードを記述する

  1. getConfig() は、少なくとも 1 つの設定項目を返します。このメソッドを使用して、埋め込み URL のパラメータからトークンを取得します。

    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.tokengetData() では、トークンが REST に渡されます。 店舗 ID のリストを取得するための API エンドポイント。これらの店舗 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. レポートの URL パラメータの仕組みを確認します。
  2. URL パラメータを使用して動的に生成されたトークン値を 埋め込みの Looker Studio レポートです
    埋め込み URL は次のようになります。
    `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

推奨事項

  • トークンの有効期間は短くしてください。
  • ダッシュボードでの トークンが無効です。