埋め込み分析向けのセキュリティに関するベスト プラクティス

Powered by Looker(PBL)と Looker の埋め込み型分析機能を使用すると、iframe に埋め込まれたデータを HTML 形式のウェブページ、ポータル、アプリケーション内でユーザーとユーザーが探索できるようになります。iframe は Looker アプリケーション全体を実行し、クエリの表示に必要なデータのみをリクエストします。設計上、外部ウェブサイトやアプリケーションのデータを iframe で読み書きすることはできません。

データを埋め込むと、プライバシーやセキュリティに関する問題が生じることがあります。これらの懸念を軽減するために、Looker 管理者には以下のベスト プラクティスを実践することをおすすめします。

  • お客様に Looker のコンテンツを埋め込む場合は、内部分析に使用するインスタンスとは別の Looker インスタンスにお客様のコンテンツを設定します。
  • Looker の埋め込みインスタンスにデータを接続するのは、埋め込みユーザー(一般公開される場合もあります)がアクセスできるようにする必要がある場合に限ります。
  • 公開埋め込み URL 内のランダムなトークンをユーザー認証情報であるかのように保護し、公開 URL が使用されていない場合は無効にします。
  • 割り当てる external_user_id 値は、特定の権限、ユーザー属性、モデルのセットごとに一意である必要があります。異なるインタラクティブ ユーザーの異なる埋め込みセッションで同じ external_user_id を使用していないことを確認します。また、異なる権限、ユーザー属性値、またはモデルアクセスを持つ単一のユーザーに同じ external_user_id を使用していないことを確認します。
  • クローズド システムを有効にします。
  • SSO 埋め込みシークレットを埋め込み Looker インスタンスの管理者認証情報であるかのように保護し、SSO 埋め込みを使用していない場合は無効にしておきます。
  • Looker の埋め込みインスタンスに強力な認証(SSOSAMLGoogle OAuth2FA)を使用する。

Looker では、ユーザーのデータへのアクセスに必要な認証レベル(公開、限定公開、シングル サインオン)に応じて、さまざまなタイプの埋め込み方法を利用できます。いずれの方法でも、JavaScript を使用して iframe を操作できます。

公開埋め込み

Look の [公開アクセス] オプションを有効にすると、HTML iframe タグを使用してビジュアリゼーションまたはデータテーブルを外部ウェブサイトに埋め込めます。また、Look の URL を一般公開したり、Google または Excel のスプレッドシート アプリケーションにデータをインポートしたりすることもできます。

iframe タグ内の URL と埋め込み URL にはランダムなトークンが含まれ、推測はできませんが、埋め込み URL を持っているユーザーであれば誰でもデータにアクセスでき、追加のフィルタリングや制限は適用されません。公開 URL を有効にする前に、特定の Look 用の公開 URL を作成して共有する場合のセキュリティへの影響を考慮してください。

公開 URL と公開埋め込み URL には有効期限がないため、取り消すことはできません。公開 URL を共有するときは、実際のデータではなくクエリを共有します。

プライベート組み込み

Look への公開アクセスを許可したくない場合は、コンテンツを表示するために Looker へのログインを必須にすることで、Look や Exploreダッシュボードを iframe 内に非公開で埋めることもできます。

認証されたユーザーがアクセスできるのは、割り当てられた Looker の権限で指定されたコンテンツのみです。Looker で権限を変更しても埋め込み URL は変更されませんが、ユーザーが URL にアクセスしたときに表示される内容が変更される場合があります。

ユーザーが認証されていない場合は、iframe にエラーまたはログイン画面を表示できます。ただし、iframe でログイン画面を有効にすることは、Looker と同じオリジンの保護に対応していません。

限定公開の埋め込み URL には有効期限がないため、取り消すことはできません。ただし、リンクは Looker インスタンスとそのデータにアクセスできるユーザーに対してのみ機能するため、リンクを送信してもセキュリティ上の問題は生じません。

シングル サインオンの埋め込み

この機能のライセンスを更新するには、アカウント マネージャーにお問い合わせください。

シングル サインオン埋め込みでは、非公開埋め込みをさらに一歩進めます。SSO 埋め込みでは、Looker ユーザー アカウントによる認証は要求されません。独自のアプリケーションを介して iframe の URL を介して認証することができます。認証によって新しいブラウザ セッションが作成され、ブラウザに Cookie が発行されます。

ユーザー権限、識別子、属性はすべて、秘密鍵で署名された URL 内のパラメータとして渡されます。秘密鍵にアクセスできるユーザーは誰でも、任意のユーザーが Looker インスタンスに接続しているモデルにアクセスするための URL を、任意のユーザーとして作成できます。署名付き URL を生成する方法については、サンプルコードをご覧ください。

クリックジャックは、ブラウザのセキュリティ問題として、埋め込みコードやスクリプトがユーザーの理解や同意なく機能(ボタンやボタンなど)を実行したときに発生する可能性があります。通常、クリックジャッキングには静的 URL が必要です。SSO 埋め込み用に生成される URL はシークレットであり、埋め込みを表示しているユーザーのみが URL を持つことができます。SSO 埋め込みを使用しても、外部ウェブサイトへのクリックジャッキング リスクは増加しません。

SSO 埋め込みパラメータ

iframe URL に含まれるパラメータは、埋め込みユーザーに表示されますが、編集することはできません。次のような要因が評価されます。

  • user_attributes: データをさらにフィルタするために使用します。user_attributes は強力なツールであるため、Looker インスタンスに適用する方法を検討してください。
  • session_length: 必要最小限の時間に設定します。

user_attributes などの一部のパラメータは UI で非表示にできますが、埋め込み URL ではエンコードされます。パスワードがユーザーの user_attribute 内の値である場合など、望ましくない場合があります。これを回避するには、一時的なグループを作成し、そのパスワードをグループレベルの属性として設定してから、埋め込み URL にグループ ID を渡します。埋め込まれたセッションの後にグループを削除することにより、グループが休眠状態にならないようにできます。

URL の署名付き部分にはタイムスタンプが含まれます。ログインに URL を使用する場合、その時刻は現在の時刻から +/- 5 分後である必要があります。session_length では、URL を使用してログインを行う時点から埋め込みセッションの継続時間を指定できます。

SSO 埋め込みアクセスの管理

埋め込みコンテンツの URL を作成する場合:

  • 必要最低限の権限を使用します。
  • ユーザーがアクセスできるように、特定のモデルへのアクセス権のみを割り当てる。
  • group_ids を使用してユーザーをグループに割り当て、埋め込みユーザーが Looker フォルダへのアクセスを制御できるようにします。

Looker API

Looker の API を使用すると、プロキシ アプリケーションまたはリバース プロキシ サーバーを介して埋め込みコンテンツへのアクセスを有効にできます。このシナリオでは、API3 キーを使用して認証を行います。API キーは特定のユーザーに関連付けられ、生成元のユーザーと同じ権限を持ちます。API3 キーは、クライアント ID とクライアント秘密鍵で構成されます。

API による埋め込みアクセスの管理

Looker の API を使用して埋め込みコンテンツへのアクセスを有効にする場合、次のことをおすすめします。

  • プログラムによる API アクセス専用のサービス アカウントを、必要最小限の権限で作成する。
  • API3 キーを構成するクライアント ID とクライアント シークレットの保護(SDK で認証する場合)。

API を使用して埋め込みユーザーに設定したものの、SSO URL で指定されていないユーザー属性は、SSO URL に次回アクセスしたときにデフォルト値にリセットされます。

埋め込み JavaScript イベント

埋め込み iframe を(一般公開、非公開、SSO、または API 経由で)設定したら、JavaScript を介してその iframe を操作できます。操作する情報が実際に Looker の iframe から発生していることを確認するには、JavaScript イベントをリッスンします。

許可リストにドメインを追加する場合は、ワイルドカードを使用して、特定のサブドメインのみが JavaScript イベントにアクセスできるようにします。

JavaScript eval 関数を使用する場合は、eval 引数の文字列値が Looker サーバーや CDN などの信頼できるソースから取得され、HTTPS トランスポートに含まれていることを確認します。

顧客データが Looker CDN を通過することはありません。CDN から配信されるのは、Looker のウェブ アプリケーションの静的アセット(JavaScript コード、HTML ページ、CSS スタイル)のみです。

お客様がホストするデプロイ

独自の Looker インスタンスをホストすることは、データ、特に埋め込みコンテンツへのアクセスをロックダウンするためのフェイルセーフな方法のように思えるかもしれません。ただし、ユーザーがインターネット経由で埋め込み URL にアクセスする必要がある場合、Looker をホストすることには特にメリットはありません。

お客様がホストするデプロイは、次のような場合に最も適しています。

  • ユーザーがインターネット経由で Looker にアクセスする必要がない。
  • Looker をフロントエンド化し、API を介して埋め込みコンテンツにアクセスします。