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

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

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

  • Looker コンテンツをお客様の環境に埋め込む場合は、内部分析に使用するインスタンスとは別の Looker インスタンスにお客様のコンテンツを設定する。
  • 埋め込みユーザーがアクセスできる Looker の埋め込みインスタンスにのみデータを接続する。
  • 公開埋め込み URL 内のランダムなトークンをユーザー認証情報のように保護し、パブリック URL が使用されていない場合は無効にする。
  • external_user_id の値は、権限、ユーザー属性、モデルのセットごとに一意にする。異なるインタラクティブ ユーザーの異なる埋め込みセッションで同じ external_user_id を使用していないことを確認します。また、異なる権限、ユーザー属性値、またはモデルアクセスを持つ単一のユーザーに同じ external_user_id を使用していないことを確認します。
  • クローズド システムを有効にします。
  • SSO 埋め込みシークレットを埋め込み Looker インスタンスに対する管理者の認証情報のように保護し、SSO 埋め込みを使用しない場合は無効のままにする。
  • Looker 組み込みインスタンスに対して強力な認証を使用します(署名付き埋め込みSAMLGoogle OAuth2FA)。
  • Cookieless Embed を使用している場合は、セッション参照トークンを保護して、埋め込みアプリケーション ホストサーバーでのみアクセスできるようにします。セッション参照トークンはブラウザで公開しないでください。
  • Cookieless Embed を使用していて、Cookie を使用しないセッションを取得する際に許可された埋め込みドメインを設定する場合は、埋め込みユーザーのブラウザから送信元を信頼しないでください。常に埋め込みユーザーの信頼できる送信元への埋め込みユーザーのマッピングを維持します。

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

公開埋め込み

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

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

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

プライベート組み込み

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

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

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

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

署名付き埋め込み

この機能のライセンスの更新については、Google Cloud セールス スペシャリストにお問い合わせください。

署名付き埋め込みでは、非公開埋め込みをさらに 1 段階進めます。署名付き埋め込みでは、ユーザーが Looker ユーザー アカウントを使用して認証する必要はありません。代わりに、独自のアプリケーションで iframe 内の URL を使用して認証できます。認証によって新しいブラウザ セッションが作成され、ブラウザに Cookie が発行されます。

ユーザー権限、ID、属性はすべて URL 内のパラメータとして渡され、秘密鍵で署名されます。シークレットキーにアクセスできる人であれば、ユーザーや権限を問わず、Lookerインスタンスが接続されているモデルにアクセスするためのURLを作成できます。 署名付き URL を生成する方法については、サンプルコードをご覧ください。

クリックジャッキングは、ブラウザのセキュリティに関する問題です。偽装ボタンなど、ユーザーの気づかぬうちに、またはユーザの同意を得ずに埋め込みコードまたはスクリプトにより関数が実行されます。クリックジャッキングでは通常、静的 URL が使用されます。署名埋め込み用に生成された URL はシークレットであり、埋め込みを表示しているユーザーのみが URL を使用できます。署名埋め込みを使用しても、外部ウェブサイトへのクリックジャッキングのリスクが増加することはありません。

署名付き埋め込みパラメータ

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

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

user_attributes などの一部のパラメータは UI で非表示にできますが、埋め込み URL ではエンコードされます。これは、パスワードがユーザーの user_attribute 内の値である場合などは適切ではありません。この問題を回避するには、一時的なグループを作成し、パスワードをグループレベルの属性として設定してから、グループ ID を埋め込み URL に渡します。埋め込みセッションの終了後にグループを削除すると、失効グループの数が増えるのを防ぐことができます。

URL の署名付き部分には、タイムスタンプが含まれています。URL を使用してログインする場合、これは現在の時刻から 5 分前後である必要があります。session_length では、URL を使用してログインしたときの埋め込みセッションの長さを指定できます。

署名付き埋め込みアクセスの管理

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

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

Looker API

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

API を使用した埋め込みアクセスの管理

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

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

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

埋め込み JavaScript イベント

埋め込み埋め込みの設定(公開、非公開、署名付きの埋め込み、API 経由)を設定したら、JavaScript を使用してその iframe を操作できます。作業している情報が Looker の iframe から送られていることを検証するには、JavaScript イベントをリッスンします。

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

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

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

セルフホスト型のデプロイ

独自 Looker インスタンスのホストはデータ(特に埋め込みコンテンツ)へのアクセスを制限するフェイルフェースな方法に見えますが、ユーザーがインターネット経由で埋め込み URL にアクセスする必要がある場合は、Looker のホストに利点はありません。

次の場合は、セルフホスト型のデプロイが最適な可能性があります。

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