シングルサインオン(SSO)組み込み

これらの機能の利用を希望する場合は、Lookerアカウントマネージャーにご連絡ください。

シングル サインオン(SSO)埋め込みでは、非公開の Looker ビジュアリゼーション、ビジュアリゼーション、Explore、ダッシュボード、LookML ダッシュボードを、個別の Looker ログインなしでユーザーに提示できます。代わりに、ユーザーは自社のアプリケーションを介して認証されます。

SSO 埋め込みでは、iframe で使用する特別な Looker URL を作成します。URL には、共有する情報、システム内のユーザーの ID、そのユーザーに付与する権限が含まれています。その後、Looker から提供された秘密鍵を使用して URL に署名します。

公開埋め込みについては、Look の公開、インポート、埋め込みに関するドキュメント ページの iframe タグによる公開埋め込みセクションをご覧ください。

SSO組み込みの適切なホスティング

Safari や、広告またはトラッキングをブロックする拡張機能がインストールされているブラウザなど、一部のブラウザは、デフォルトでサードパーティ Cookie をブロックする Cookie ポリシーを使用しています。Looker はユーザー認証に Cookie を使用するため、これらのブラウザでは埋め込み iframe の認証を行えません(ユーザーがブラウザの Cookie プライバシー設定を変更しない限り)。たとえば、https://mycompany.com に情報を埋め込む場合、Looker が同じドメイン(https://analytics.mycompany.com など)を共有することを確認する必要があります。

Looker がインスタンスをホストしている場合は、Looker サポートに連絡して、カスタム ドメインの使用に必要な DNS 構成を設定します。これにより、Looker が埋め込みアプリケーションと同じドメインを共有し、すべてのブラウザでデフォルトで受け入れられるファーストパーティの Cookie を利用できます。Looker のヘルプセンターで [お問い合わせ] をクリックしてサポート リクエストを開きます。

お客様がホストするLookerインスタンスがある場合、SSO組み込みを使用するアプリケーションがそのLookerインスタンスと同じドメインを使用していることを確認してください。

クローズドシステムを使用したクライアント可視性の制御

SSO 埋め込みの一般的な設定では、Looker ユーザーはデータを別のお客様に提供しながら、別の企業やグループのクライアント同士を関わらせるべきではありません。このシナリオでは、お客様の個人情報を保護するために、Looker をクローズド システム(マルチテナント インストールとも呼ばれます)として構成することを強くおすすめします。クローズド システムでは、コンテンツが分断され、異なるグループのユーザー間で情報が共有されなくなります。このため、外部ユーザーにインスタンスへのアクセス権を付与する前に、クローズド システム オプションを有効にすることをおすすめします。

詳細については、アクセスレベルのシステムの設計と構成埋め込み分析のセキュリティに関するベスト プラクティスのドキュメントをご覧ください。

Looker の秘密鍵の生成

SSO 埋め込みリクエストが正当であり、他の誰かが偽造されていないことを確認するには、まず「埋め込みシークレット」を生成する必要があります。手順は次のとおりです。

  1. Looker の [Admin] セクションの [Embed] ページに移動します。
  2. [Embed SSO Authentication] プルダウンから [Enabled] を選択し、[Update] をクリックします。
  3. [シークレットをリセット] ボタンをクリックして、埋め込みシークレットを生成します。このシークレットは安全な場所に必ずコピーしてください。リセットしないと Looker から再取得できません。キーをリセットすると、古いキーを使用した埋め込みはすべて破損します。

秘密鍵にアクセスできるユーザーは誰でも、任意のユーザーが Looker インスタンスに接続しているモデルにアクセスするための URL を、任意のユーザーとして作成できます。SSO 埋め込みシークレットを保護します。埋め込み Looker インスタンスに対して管理者の認証情報を使用する場合と同様に、SSO 埋め込みシークレットを無効にします。

埋め込みURLの構築

適切な URL を作成するには、秘密鍵で URL を適切にエンコードし、その他のセキュリティ関連のアイテムを生成するために、コードを記述する必要があります。SSO サンプルの GitHub リポジトリで、いくつかのサンプル スクリプトを確認できます。以降のセクションでは、これらのスクリプトに入力する必要がある情報について説明します。

必要なLooker情報の収集

URL を作成する際は、まず含める必要があるすべての情報を決定します。次のものが必要になります。

組み込みURL

埋め込む Look、Explore、クエリの可視化、またはダッシュボードの URL を取得します。次のように、ドメインを削除してパスの前に /embed を配置します。

項目 通常のURLパターン 組み込みURL
Look https://instance_name.looker.com/
looks/4
/embed/looks/4
探索 https://instance_name.looker.com/
explore/my_model/my_explore
/embed/explore/my_model/my_explore
クエリの可視化 https://instance_name.looker.com/
explore/my_model/my_explore?qid=1234567890abcdefghij12

Query.client_id は、Explore URL の qid= パラメータの後に続く 22 文字の英数字です。Query.client_id 値は、クエリとビジュアリゼーション設定を表す一意の文字列です。

クエリのビジュアリゼーションを埋め込むには、クエリ ビジュアリゼーションの Query.client_id 値を取得し、Query.client_id を埋め込み URL にコピーします。

Looker Explore UI を使用して、サポートされているビジュアリゼーションでクエリを作成し、qid= パラメータから Query.client_id 値をコピーできます。または、Get Query メソッドを使用して Looker API で Query.client_id を取得できます。
/embed/query-visualization/Query.client_id
ユーザー定義ダッシュボード https://instance_name.looker.com/
dashboards/1
/embed/dashboards/1
ユーザー定義の以前の
ダッシュボード
https://instance_name.looker.com/
dashboards-legacy/1
/embed/dashboards-legacy/1
LookML ダッシュボード https://instance_name.looker.com/
dashboards/my_model::my_dashboard
/embed/dashboards/my_model::my_dashboard
以前の LookML
ダッシュボード
https://instance_name.looker.com/
dashboards-legacy/my_model::my_dashboard
/embed/dashboards-legacy/my_model::my_dashboard

埋め込みコンテンツには、常に製品版のコンテンツが反映されています。開発モードで行われた変更のうち、コンテンツに影響を与えていて本番環境にデプロイされていない変更は、埋め込みに表示されません。

権限

権限セットは、ユーザーまたはグループの権限を定義します。権限は、次のいずれかの方法で適用できます。

  • モデル固有: このタイプの権限は、同じロールの一部であるモデルセットにのみ適用されます。
  • インスタンス全体: このタイプの権限は Looker インスタンス全体に適用されます。インスタンス全体の権限を持つ埋め込みユーザーは、Looker インスタンス全体で特定の機能を実行できますが、ロールのモデルセットに含まれないモデルに基づいてコンテンツにアクセスすることはできません。

ユーザーに付与する権限を決定します。次のリストは、SSO 埋め込みに使用できるすべての権限を示しています。次のリストに記載されていない権限はSSO埋め込みではサポートされていません。

権限 依存関係 Type 定義
access_data なし モデルに固有 データにアクセスすることをユーザーに許可します(Look、ダッシュボード、Exploreを閲覧するために必要です)。
see_lookml_dashboards access_data モデルに固有 ユーザーが LookML ダッシュボードを参照できるようにする
see_looks access_data モデルに固有 ユーザーが Look を表示できるようにする
see_user_dashboards see_looks モデルに固有 ユーザー定義のダッシュボードを表示し、埋め込みからフォルダを参照できます。
explore see_looks モデルに固有 Exploreページを閲覧することをユーザーに許可します
create_table_calculations explore インスタンス全体 Explore で表計算を作成するために必要
create_custom_fields explore インスタンス全体 22.4 で追加 Explore でカスタム フィールドを作成するために必要です。
can_create_forecast explore インスタンス全体 22.12 で追加 ユーザーがビジュアリゼーションで予測を作成または編集できるようになりました。
save_content see_looks インスタンス全体 ユーザーは Look とダッシュボードに変更を加えて保存できます。
send_outgoing_webhook see_looks モデルに固有 任意のウェブフックへのダッシュボードやLookの配信をスケジュールすることをユーザーに許可します
send_to_s3 see_looks モデルに固有 Amazon S3バケットへのダッシュボードやLookの配信をスケジュールすることをユーザーに許可します
send_to_sftp see_looks モデルに固有 SFTPサーバーへのダッシュボードやLookの配信をスケジュールすることをユーザーに許可します
schedule_look_emails see_looks モデルに固有 ダッシュボードと Look を、各自のメール(「email」というユーザー属性で設定されたもの)またはメールドメイン許可リストで設定された制限内にあるメールアドレスに送信するようにスケジュールできます。create_alerts 権限を持つユーザーは、メールドメイン許可リストで設定された制限内にあるメールアドレスにアラート通知を送信できます。
schedule_external_look_emails schedule_look_
emails
モデルに固有 ユーザーは、任意のメールに送信されるようにダッシュボードと Look をスケジュールできます。create_alerts 権限を持つユーザーは、任意のメールドメインにアラート通知を送信できます。
send_to_
integration
see_looks モデルに固有 ユーザーは、Looker Action Hub を介して Looker と統合されたサードパーティのサービスLooker コンテンツを配信できます。この権限はデータ アクションとは無関係です。
create_alerts see_looks インスタンス全体 指定した条件が満たされるか超過したときに通知を受け取れるように、ダッシュボード タイルにアラートを作成できます。ユーザーは、自分自身のアラートやその他のユーザーを編集、複製、削除できます。公開アラート:ユーザーの Slack ワークスペースが Looker インスタンスに接続されていない場合、ユーザーは Slack に通知を送信するアラートを作成できません。
download_with_limit see_looks インスタンス全体 ユーザーは制限付きでクエリの結果をダウンロードできます。
download_without_limit see_looks インスタンス全体 ユーザーは制限なしでクエリの結果をダウンロードできます。
see_sql see_looks モデルに固有 クエリ用のSQL、およびクエリの実行で発生したSQLエラーを見ることをユーザーに許可します。
clear_cache_refresh access_data モデルに固有 21.14 で追加 ユーザーはキャッシュを消去し、埋め込みダッシュボード、以前のダッシュボード、ダッシュボード タイル、Look、Explore を更新できます。
see_drill_overlay access_data モデルに固有 完全なExploreページに移動することなくドリルダウンすることをユーザーに許可します。
embed_browse_spaces なし インスタンス全体 ユーザーが埋め込みからフォルダを参照できるようにコンテンツ ブラウザを有効にします。embed_browse_spaces 権限が付与された埋め込みユーザーには、個人用埋め込みフォルダと、組織の共有フォルダ(ある場合)へのアクセス権が付与されます。

embed_browse_spaces 権限は、ユーザーがコンテンツを保存する場所を選択する際にフォルダを参照できるように、save_content 権限を持つユーザーに推奨されます。

フォルダ内のコンテンツを表示するには、see_looks 権限、see_user_dashboards 権限、see_lookml_dashboards 権限も必要になります。
embed_save../_shared_space なし インスタンス全体 21.4 で追加 save_content 権限も持っているユーザーが、[保存] ダイアログ ボックスから組織の [共有] フォルダに移動できます。save_content 権限を持っていても、embed_save_shared_space 権限がないユーザーは、個人用埋め込みフォルダにコンテンツを保存することのみ可能です。

embed_save_shared_space 権限は、コンテンツのアクセス権限をオーバーライドしません。たとえば、ユーザーが「Shared」フォルダに保存できるようにするには、引き続き Shared フォルダに対する Manage Access, Edit アクセス権が必要です。さらに、embed_save_shared_space 権限がないために、save_content 権限があり、Shared フォルダに対する Manage Access, Edit 権限を持つユーザーが Shared フォルダに移動するための代替手段(埋め込みダッシュボードから [Explore from here] を使用するなど)でアクセスできない場合、そのコンテンツは保存されません。

モデルアクセス

ユーザーがアクセスできる LookML モデルを決定します。これは単にモデル名のリストです。

ユーザー属性

ユーザーが持つユーザー属性があれば決定します。Looker のユーザー属性の名前と、その属性に対してユーザーが持つ値が必要です。

グループ

ユーザーが所属するグループがあれば、決定します。グループ名ではなく、グループ ID が必要です。SSO 埋め込みユーザーを Looker グループに追加すると、そのユーザーの Looker フォルダへのアクセスを管理できます。SSO 埋め込みのユーザーは、Looker グループのメンバーと共有されているフォルダへのアクセス権を持ちます。

external_group_id パラメータを使用して、通常の Looker グループの外部にあるグループを作成することもできます。その場合、同じ external_group_id を持つ SSO 埋め込みユーザーは、外部グループに固有の共有フォルダ「Group,」にアクセスできるアクセス権を持ちます。

埋め込みのロール

permissions および models パラメータは、埋め込みユーザーのロールを作成します。このロールは、Looker の [Admin] セクションの [Users] ページに、「Embedded Role」として表示されます。permissionsmodelsgroup_ids の各パラメータがすべて埋め込み URL で指定されている場合、埋め込みロールは、group_ids パラメータにリストされているグループにすでに割り当てられているロールに追加されます。これは、Lookerですべてのロールが付加的であるという点で標準ロールと同じです。

たとえば、Looker にグループ ID 1 の既存のグループがあり、そのグループに model_one という名前のモデルに対する explore 権限がすでにあり、次のパラメータを使用して埋め込み URL を作成するとします。

  • group_ids = [1]
  • permissions = ["access_data","see_looks"]
  • models = ["model_two"]

その場合、埋め込みユーザーは model_one のデータを表示、確認する権限を継承します。また、前のパラメータで作成した埋め込みロールでも、model_two のデータを表示できるようになります。

埋め込みURLの作成

SSO埋め込みURLの書式は次のとおりです。

https://ホスト/login/embed/埋め込み URL?PARAMETERS&signature=署名

ホスト

ホストは、Looker インスタンスがホストされているロケーションです。例: analytics.mycompany.com。ポート転送をまだ有効にしていない場合は、必ずポート番号を含めてください(analytics.mycompany.com:9999 など)。

組み込みURL

埋め込み URL は事前に決定されています。書式は次のようになります。

  • /embed/looks/4
  • /embed/explore/my_model/my_explore
  • /embed/query-visualization/Query.client_id
  • /embed/dashboards/1 または /embed/dashboards-legacy/1
  • /embed/dashboards/my_model::my_dashboard または /embed/dashboards-legacy/my_model::my_dashboard

つまり、パターン /embed//embed/ は最終ページ URL に表示されます。これは正しい説明です。

埋め込み JavaScript イベントを使用している場合は、次のように埋め込み URL の末尾に embed_domain(iframe を使用しているドメイン)を追加する必要があります。

/embed/looks/4
/embed/looks/4?embed_domain=https://mywebsite.com

embed_domain は、埋め込み URL の後かつパラメータの前に追加されます。nonce=626 などの既存のパラメータがある場合、embed_domain の追加は次のようになります。

/embed/looks/4?nonce=626
/embed/looks/4?embed_domain=https://mywebsite.com?nonce=626

Embed SDK を使用している場合は、次のように embed_domain を追加し、埋め込み URL の末尾に sdk=2 も含めます。

/embed/looks/4
/embed/looks/4?embed_domain=https://mywebsite.com&sdk=2

sdk=2 パラメータを使用すると、SDK が存在しているかどうかを Looker が識別して、SDK によって提供される追加機能を利用できます。このパラメーターは署名付きSSO URLの一部であることから、SDK自体がこのパラメーターを追加することはできません。

パラメータ

次のURLパラメーターを使用して、SSO埋め込みに必要な情報を指定します。

パラメータ 値が必須かどうか 説明 データ型
nonce 任意のランダムな文字列。ただし 1 時間以内に繰り返すことはできません。また、長さは 255 文字未満にする必要があります。

これにより、攻撃者が正当なユーザー URL を再登録して、収集すべきでない情報を収集できなくなります。
JSON文字列 "22b1ee700ef3dc2f500fb7"
time UNIXタイムスタンプとしての現在時刻。 Integer 1407876784
session_length ユーザーに許容されるLookerへの継続ログイン時間(0〜2,592,000秒(30日))。 Integer 86400
external_user_id Looker を埋め込むアプリケーション内の各ユーザーの ID。Looker では SSO 埋め込みユーザーを区別するために external_user_id を使用するため、各ユーザーに一意の ID を割り当てる必要があります。

任意の文字列を含むユーザー用に external_user_id を作成できます(文字列がユーザーごとに一意である限り)。各 ID は、一連の権限、ユーザー属性、モデルに関連付けられます。1 つのブラウザでサポートできる external_user_id(ユーザー セッション)は、一度に 1 つのみです。セッション中にユーザーの権限やユーザー属性を変更することはできません。

セキュリティ上の理由から、異なるインタラクティブ ユーザーの異なる埋め込みセッションで同一の external_user_id を使用していないことを確認します。
の複数のユーザーが、権限、ユーザー属性値、モデルへのアクセス権も異なっていることを確認してください。

複数のユーザー、またはアクセス権のあるユーザーからモデルにアクセスできるのは、同じユーザーに複数の権限、モデル、アクセス権が付与されているユーザーです。
JSON文字列 "user-4"
permissions ユーザーが持つ必要がある権限のリスト。

許可される権限のリストについては、このページの権限をご覧ください。
文字列の配列 [
  "access_data",
  "see_looks"
]
models ユーザーがアクセスできるモデル名のリスト。 文字列の配列 [
  "model_one",
  "model_two"
]
group_ids × ユーザーがメンバーとなる Looker グループのリスト(存在する場合)。グループ名ではなくグループIDを使用します。 整数の配列 [4, 3]
external_group_id × 必要に応じて、ユーザーが Looker を組み込んだアプリケーションが属するグループの一意の識別子。

コンテンツの保存権限を持ち、外部グループ ID を共有するユーザーは、「Q&A」という共有 Looker フォルダにコンテンツを保存、編集できます。
JSON文字列 "Accounting"
user_attributes × ユーザーが持つべきユーザー属性のリスト(ある場合)。ユーザー属性名のリストと、その後にユーザー属性値が含まれます。

LookML モデルがローカライズされている場合は、埋め込み URL の locale ユーザー属性を使用して、埋め込み用の言語を指定できます。たとえば、パラメータ user_attributes { "locale" : "fr_FR" } を含めると、埋め込みでは、言語としてフランス語が読み込まれます。
文字列のハッシュ {
  "vendor_id" : "17",
  "company" : "xactness"
}
access_filters Looker 3.10 ではこのパラメータは削除されていますが、URL では必須です。空のプレースホルダとともに access_filters を使用します(例: access_filters={})。 空のプレースホルダー {}
first_name × ユーザーの名。空白のままにすると、first_name は最後のリクエストの値を保持します。名前が設定されていない場合は、「埋め込み」になります。 JSON文字列 "Alice"
last_name × ユーザーの姓。空白のままにすると、last_name は最後のリクエストの値を保持します。または、姓が設定されていない場合は「埋め込み」になります。 JSON文字列 "Jones"
user_timezone × ユーザー固有のタイムゾーンを有効にしている場合は、埋め込み Look またはダッシュボードの [タイムゾーン] プルダウンで [閲覧者のタイムゾーン] オプションの値を設定します。このパラメータを使用しても、コンテンツが表示されるタイムゾーンは直接変更されません。ユーザーは、プルダウンから目的のタイムゾーンを選択する必要があります。

有効な値については、SSO 埋め込みタイムゾーンのリファレンスに関するドキュメント ページをご覧ください。

チャットチームのヒント: 埋め込みコンテンツを閲覧者のタイムゾーンにするには、次のいずれかの方法を使用します。

  • ?query_timezone=user_timezone パラメータを埋め込み URL に追加します。例:

    /embed/dashboards/1?query_timezone=user_timezone
  • 埋め込みダッシュボードと Look を保存します。デフォルトのタイムゾーンは [閲覧者のタイムゾーン] に設定してください。これにより、デフォルトで埋め込みユーザーと非埋め込みユーザーの両方にユーザーのタイムゾーンが使用されます。
  • JSON文字列またはnull "US/Pacific"

    - または -

    null
    force_logout_login 通常の Looker ユーザーがすでに Looker にログインしていて、SSO 埋め込みアイテムが表示される場合は、次のいずれかを選択できます。

    1) ユーザーが現在の認証情報でアイテムを表示するかどうか

    または

    再度ログインする必要があります。2)
    Boolean(trueまたはfalse) true

    上記のパラメータはすべて必須ですが、「値が必要です」\utt; 列の「No」となっているパラメータは、空の値を指定して使用できます。たとえば、group_ids []user_attributes {} を使用できます。

    署名

    署名を生成するには、以下の手順を行う必要があります。

    1. 次のパラメータ値をこの順序で収集します。
      • ホストの後に login/embed/ を続けます(例: analytics.mycompany.com/login/embed/)。
      • 組み込みURL
      • ノンス
      • 現在時刻
      • セッションの長さ
      • 外部ユーザーID
      • 権限
      • モデル
      • グループID
      • 外部グループID
      • User Attributes
      • アクセスフィルタ(空のプレースホルダーが必要です)
    2. ホストと埋め込みURL以外のすべての値をJSONとして書式設定します。
    3. 値を改行(\n)で連結する
    4. Looker埋め込みシークレットを使用して連結文字列にHMAC署名を追加します。

    エンコード

    最後のステップはURLエンコーディングです。

    URL をエンコードするに、使用可能なすべてのパラメータを使用する埋め込み URL は次のような形式になります。

    https://analytics.mycompany.com/login/embed//embed/dashboards/1?
    nonce="22b1ee700ef3dc2f500fb7"&
    time=1407876784&
    session_length=86400&
    external_user_id="user-4"&
    permissions=["access_data","see_user_dashboards","see_looks"]&
    models=["model_one","model_two"]&
    group_ids=[4,3]&
    external_group_id="Allegra K"&
    user_attributes={"vendor_id":"17","company":"xactness"}&
    access_filters={}&
    first_name="Alice"&
    last_name="Jones"&
    user_timezone="US/Pacific"&
    force_logout_login=true&
    signature=123456789ABCDEFGHIJKL
    

    前述のとおり、URL に /embed//embed/ は正しく表示されます。

    URL をエンコードすると、次のように表示されます。

    https://analytics.mycompany.com/login/embed/%2embed%2Fdashboards%2F1?
    nonce=%2222b1ee700ef3dc2f500fb7&%22&
    time=1407876784&
    session_length=86400&
    external_user_id=%22user-4%22&
    permissions=%5B%22access_data%22%2C%22see_user_dashboards%22%2C%22see_looks%22%5D&
    models=%5B%22model_one%22%2C%22model_two%22%5D&
    group_ids=%5B4%2C3%5D&
    external_group_id=%22Allegra%20K%22&
    user_attributes=%7B%22vendor_id%22%3A%2217%22%2C%22company%22%3A%22xactness%22%7D&
    access_filters%7B%7D%26%0A
    first_name=%22Alice%22&
    last_name=%22Jones%22&
    user_timezone=%22US%2FPacific%22&
    force_logout_login=true&
    signature=123456789ABCDEFGHIJKL
    

    create_sso_embed_url API エンドポイントの使用

    Looker API には create_sso_embed_url エンドポイントが含まれています。このエンドポイントには、埋め込むコンテンツの URL を含む一連の SSO 埋め込みパラメータを取り、暗号化されたエンコード済みの完全な SSO URL を返します。

    この API エンドポイントをウェブサーバーから使用するには、ウェブサーバーが管理者権限で Looker API に対して認証できる必要があります。また、埋め込みドメインの許可リストに、ウェブサーバーのドメインも登録する必要があります。

    API Explorer を使用して、このエンドポイントを使用する SSO URL を生成することもできます。API Explorer は、Looker Marketplace から Looker インスタンスにインストールできます。また、Looker のデベロッパー ポータルで一般公開バージョンを表示することもできます。生成された SSO URL は正確にコピーし、1 回だけ使用できます。そうしないと、失敗します。API Explorer は、SSO URL を生成し、トラブルシューティングのために手動で作成された SSO URL と比較する際にも有用です。

    Looker API の詳細については、Looker API のスタートガイドのドキュメントをご覧ください。

    埋め込みURLのテスト

    最終ページ URL をテストするには、Looker の [管理] セクションの [埋め込み] ページの [埋め込み URI 検証ツール] に貼り付けます。このオプションでは、想定しているデータと権限が正しく設定されているかどうかはわかりませんが、認証が適切に機能しているかどうかを確認できます。