管理者設定 - OpenID Connect 認証

企業は、Okta や OneLogin などのさまざまな OpenID Connect プロバイダ(OP)を使用して OpenID Connect との連携を行っています。以下の設定手順と Looker UI で使用されている用語は、OP で使用されている用語と直接一致しない場合があります。

[管理者] メニューの [認証] セクションにある [OpenID Connect] ページを使用すると、OpenID Connect プロトコルを使用してユーザーを認証するように Looker を構成できます。このページでは、そのプロセスについて説明し、OpenID Connect グループを Looker のロールと権限にリンクする手順について説明します。

要件

Looker の [管理者] メニューの [認証] セクションに [OpenID Connect] ページが表示されるのは、次の条件が満たされている場合のみです。

  • 管理者ロールがある。
  • Looker インスタンスで OpenID Connect を使用できるように設定されている。OpenID Connect を有効にするには、アカウント エグゼクティブにお問い合わせください。このページは、Looker(Google Cloud コア)インスタンスでデフォルトで有効になっています。

これらの条件を満たしているにもかかわらず [OpenID Connect] ページが表示されない場合は、インスタンスで OpenID Connect を有効にするためにサポート リクエストを開いてください。

計画上の考慮事項

  • Looker 管理者が OpenID Connect なしで Looker にアクセスできるようにするために、[指定したユーザーの代替ログイン] オプションの使用を検討してください。
  • OpenID Connect を使用して Looker にログインしている間は、代替アカウント ログイン設定の場合を除き、OpenID Connect 認証を無効にしないでください。そうしないと、アプリからロックアウトされる可能性があります。
  • Looker では、現在のメールアドレスとパスワードの設定、LDAP、SAML、または Google 認証のいずれかから取得したメールアドレスを使用して、既存のアカウントを OpenID Connect に移行できます。これは設定プロセスで構成できます。
  • Looker は、OpenID Connect の認可コードフローを使用した OpenID Connect 認証のみをサポートしています。それ以外のコードフローはサポートされてません。
  • OpenID Connect 仕様には、オプションのディスカバリ メカニズムが含まれています。Looker ではこのメカニズムがサポートされていないため、OpenID Connect 認証設定の構成で説明されているように、[OpenID Connect 認証の設定] セクションで明示的な URL を指定する必要があります。

OpenID Connect の設定

Looker と OpenID Connect 間の接続を設定するには、次の操作を行います。

  1. Looker URL を OpenID Connect プロバイダ(OP)に提供します
  2. OP から必要な情報を取得します
  3. Looker インスタンスで OpenID Connect 認証を構成します

OP での Looker の設定

OpenID Connect プロバイダ(OP)は、Looker インスタンスの URL を必要とします。OP はこれを、リダイレクト URIログイン リダイレクト URI などと呼ぶことがあります。OP のウェブサイトで、ブラウザで通常 Looker インスタンスにアクセスする URL に続けて、/openidconnect を OP に提供します。例: https://instance_name.looker.com/openidconnect

OP からの情報の取得

OpenID Connect 認証用に Looker を構成するには、OP から次の情報が必要です。

  • クライアント ID とクライアント シークレット。通常これらは、リダイレクト URI を構成したときに、ウェブサイトの OP から提供されます。
  • OpenID Connect 認証プロセスでは、Looker は 3 つの異なるエンドポイント(認証エンドポイント、ID トークン エンドポイント、ユーザー情報エンドポイント)に接続します。これらの各エンドポイントで OP が使用する URL が必要になります。
  • 各 OP はスコープと呼ばれるセットでユーザー情報を提供します。OP が使用するスコープの名前を確認する必要があります。OpenID Connect には openid スコープが必要ですが、OP には emailprofilegroups などの他のスコープも含まれている可能性があります。
  • OpenID Connect では、ユーザーデータを格納する属性をクレームと呼びます。Looker インスタンスに関して必要なユーザー情報を提供するために OP が Looker に渡すクレームについて知る必要があります。Looker ではメールアドレスと名前の情報を含むクレームが必要ですが、タイムゾーンや部門など、その他のユーザー属性がある場合は、Looker では、その情報を含むクレームを特定する必要があります。クレームは、ユーザー情報エンドポイントまたは ID トークン エンドポイントからのレスポンスに含むことができます。Looker は、いずれかのエンドポイントから返されたクレームを Looker ユーザー属性にマッピングできます。

多くの OP は、ディスカバリ ドキュメントの形式で OpenID Connect の構成に関する情報を提供しています。そのため、OpenID Connect 用に Looker を構成するために必要な情報の一部またはすべてを収集できます。ディスカバリ ドキュメントにアクセスできない場合は、OP または内部認証チームから必要な情報を取得する必要があります。

次のセクションは、ディスカバリ ドキュメントの例です。

{
  "issuer": "https://accounts.google.com",
  "authorization_endpoint": "https://accounts.google.com/o/oauth2/v2/auth",
  "token_endpoint": "https://www.googleapis.com/oauth2/v4/token",
  "userinfo_endpoint": "https://www.googleapis.com/oauth2/v3/userinfo",
  "revocation_endpoint": "https://accounts.google.com/o/oauth2/revoke",
  "jwks_uri": "https://www.googleapis.com/oauth2/v3/certs",
  "response_types_supported": [
    "code",
    "token",
    "id_token",
    "code token"
    "code id_token",
    "token id_token",
    "code token id_token",
    "none"
  ],
  "subject_types_supported": [
    "public"
  ],
  "id_token_signing_alg_values_supported": [
    "RS256"
  ],
  "scopes_supported": [
    "openid",
    "email",
    "profile"
  ],
  "token_endpoint_auth_methods_supported": [
    "client_secret_post",
    "client_secret_basic"
  ],
  "claims_supported": [
    "aud",
    "email",
    "email_verified",
    "exp",
    "family_name",
    "given_name",
    "iat",
    "iss",
    "locale",
    "name",
    "picture",
    "sub"
  ],

OpenID Connect 認証設定を構成する

Looker インスタンスの OpenID Connect 認証を構成するには、[管理者] パネルの [認証] セクションで [OpenID Connect] を選択します。[OpenID Connect 認証] ページで、[OpenID Connect を構成] を選択します。

OP のディスカバリ ドキュメント、OP、または内部認証チームから取得した構成情報を使用して、次のフィールドに接続設定を入力します。

ID: Looker インスタンスに固有のクライアント ID。これは、担当の OP から提供されます。

シークレット: Looker インスタンスに固有のクライアント シークレット キー。これは、担当の OP から提供されます。

発行元: OP を識別する安全な URL。

オーディエンス: クライアントが誰であるかを OP に示す ID。多くの場合、これは自身の ID の値と同じですが、異なる値になる場合があります。

認証 URL: 認証シーケンスを開始する OP の URL。ディスカバリ ドキュメントでは authorization_endpoint と呼ばれることがよくあります。

トークン URL: Looker が認証された後に Looker が OAuth トークンを取得する URL。ディスカバリ ドキュメントでは token_endpoint と呼ばれることがよくあります。

ユーザー情報 URL: Looker が詳細なユーザー情報を取得する URL。ディスカバリ ドキュメントでは userinfo_endpoint と呼ばれることがよくあります。

スコープ: Looker にユーザー情報を提供するために、OP で使用されるスコープのカンマ区切りリスト。openid スコープと、Looker が必要とする情報(メールアドレス、ユーザー名、および Looker インスタンスで構成されたユーザー属性など)を含むスコープを含める必要があります。

ユーザー属性設定の構成

このセクションでは、OP のクレームを Looker のユーザー属性にマッピングします。

[ユーザー属性設定] セクションで、各フィールドに対応する情報を含む、OP のクレームの名前を入力します。これにより、ログイン時にこれらのクレームを Looker ユーザー情報にマッピングする方法が Looker に指示されます。Looker はクレームの作成方法には特に関係がなく、ここで入力するクレーム情報が、OP でのクレームの定義方法と一致することが重要です。

標準クレーム

Looker では、ユーザー認証にユーザー名とメールアドレスの情報が必要です。このセクションに、OP の対応するクレーム情報を入力します。

メール クレーム: OP がユーザーのメールアドレスに使用するクレーム(email など)。

名クレーム: OP がユーザーの名に使用するクレーム(given_name など)。

姓クレーム: OP がユーザーの姓に使用するクレーム(family_name など)。

一部の OP では、姓と名に分かれたクレームではなく、1 つのクレームを使用します。OP がこれに該当する場合は、[名クレーム] フィールドと [姓クレーム] フィールドの両方に、名前を格納するクレームを入力します。各ユーザーについて Looker は、最初のスペースまでのコンテンツを名として使用し、その後のすべてのものを姓として使用します。

属性のペアリング

必要に応じて、OpenID Connect クレームのデータを使用して、ユーザーがログインするときに Looker のユーザー属性に値を自動的に入力できます。たとえば、データベースにユーザー固有の接続を行うように OpenID Connect を構成した場合、OpenID Connect クレームを Looker ユーザー属性と組み合わせて、Looker のデータベース接続をユーザー固有にすることができます。

クレームと対応する Looker ユーザー属性をペアリングするには:

  1. OP によって特定されたクレームを [クレーム] フィールドに入力し、ペア設定する Looker ユーザー属性を [Looker ユーザー属性] フィールドに入力します。
  2. そのクレーム フィールドに値がないユーザー アカウントによるログインをブロックする場合は、[必須] をオンにします。
  3. [+] をクリックし、クレームと属性のペアを追加するためにこれらの手順を繰り返します。

一部の OP には「ネストされた」クレームが含まれることがあります。次に例を示します。

"zoneinfo": "America/Los Angeles",
"phone_number": "555-1235",
"address": {
  "street_address": "1234 Main Street",
  "locality": "Anyton",
  "region": "IL",
  "postal_code": "60609",
  "country": "US"
},

上記の例では、locality クレームが address クレーム内にネストされています。ネストされたクレームの場合は、親クレームとネストされたクレームをスラッシュ(/)文字で区切って指定します。この例の locality クレームに対して Looker を構成するには、address/locality を入力します。

グループとロール

Looker では、外部管理の OpenID Connect グループをミラーリングするグループを作成できます。グループは、ミラーリングされた OpenID Connect グループに基づいて、コンテンツ アクセス制御を設定し、ユーザーにユーザー属性を割り当てるために使用できます。OpenID Connect グループのメンバーシップを変更すると、その変更が自動的に Looker のグループ構成に伝播されます。

OpenID Connect グループのミラーリングを行うと、外部で定義された OpenID Connect ディレクトリを使用して、Looker グループとユーザーを管理できます。これにより、Looker などの複数の Software as a Service(SaaS)ツールのグループ メンバーシップを 1 か所で管理できます。

[OpenID Connect グループのミラーリング] をオンにすると、Looker は、システムに導入された OpenID Connect グループごとに 1 つの Looker グループを作成します。これらの Looker グループは、Looker の [管理] セクションの [グループ] ページで確認できます。

デフォルトのグループとロール

デフォルトでは、[OpenID Connect グループのミラーリング] のスイッチがオフです。この場合は、新しい OpenID Connect ユーザーのデフォルト グループを設定できます。[新しいユーザー グループ] と [新しいユーザー ロール] のフィールドに、新しい Looker ユーザーが Looker に初めてサインインするときに割り当てる Looker グループまたはロールの名前を入力します。

これらのグループとロールは、新しいユーザーの最初のログイン時に適用されます。既存のユーザーには適用されません。また、初回ログイン後にユーザーから削除された場合は、再適用されません。

OpenID Connect グループのミラーリングの有効化

Looker(Google Cloud コア)インスタンスを使用している場合は、プライマリ認証方法でのみグループ ミラーリングを有効にし、バックアップ OAuth 認証ではグループ ミラーリングを有効にしないことをおすすめします。プライマリ認証方法とセカンダリ認証方法の両方でグループ ミラーリングを有効にすると、次の動作が発生します。

  • ユーザーが ID を統合している場合、グループのミラーリングでは、ログインに使用された実際の認証方法に関係なく、第 1 の認証方法が照合されます。
  • ユーザーに統合された ID がない場合、グループ ミラーリングはログインに使用された認証方法と一致します。

ミラーリングされたグループを有効にする手順

Looker 内で OpenID Connect グループをミラーリングするには、[OpenID Connect グループのミラーリング] スイッチをオンにします。Looker に次の設定が表示されます。

グループ クレーム: OP がグループ名を保存するために使用するクレームを入力します。次に、[優先グループ名 / ロール / OpenID Connect グループ名] フィールドにグループ情報を入力して、Looker にミラーリングする特定の OpenID Connect グループを構成します。OpenID Connect グループを Looker グループにマッピングする手順は必須です。

[Manage Groups] ボタン: このボタンをクリックすると、[Manage Groups] サイドパネルが開き、Looker でカスタム グループやグループに割り当てられているロールを追加、削除、編集できます。[グループを管理] サイドパネルには、次のフィールドが表示されます。

  • [適用するグループ名] フィールド。このフィールドに、ミラーリングするグループのカスタム名を入力します。これは、Looker の [管理] セクションの [グループ] ページに表示される名前です。

  • [OpenID Connect グループ名] フィールド。このフィールドに OpenID Connect グループを入力します。OpenID Connect グループに含まれる OpenID Connect ユーザーは、Looker 内のミラーリングされたグループに追加されます。

  • [ロール] フィールド。このフィールドで、グループ内の各ユーザーに割り当てる 1 つ以上の Looker ロールを選択します。

  • マッピングを削除アイコン。このアイコンをクリックすると、Looker インスタンスからミラーリングされたグループが削除されます。グループを削除すると、そのグループは Looker にミラーリングされなくなり、そのメンバーには、グループを介してメンバーに割り当てられた Looker のロールがなくなります。

[グループを管理] サイドパネルには、次のツールも含まれています。

  • [フィルタリスト] フィルタ メニューと検索バー。これらのツールを使用して、インスタンスにすでに追加されているグループを検索します。

  • [マッピングを追加] ボタン。このボタンをクリックして、カスタム グループをインスタンスに追加します。

  • [表示] のページネーション プルダウン メニュー。このメニューを使用して、各ページに表示するグループの数を選択します。

ミラーリングされたグループの編集

以前にこの画面で構成したミラーリング対象のグループを編集すると、グループの構成は変更されますが、グループ自体はそのまま残ります。たとえば、グループの Looker グループ名を変更すると、Looker の [グループ] ページでのグループの表示方法は変わりますが、割り当てられたロールやグループ メンバーは変更されません。OpenID Connect グループ名を変更すると、グループ名とロールは維持されますが、新しい OpenID Connect グループ名を持つ外部 OpenID Connect グループのメンバーであるユーザーに基づいて、グループのメンバーが再割り当てされます。

ミラーリング対象のグループに対して行われた編集は、そのグループのユーザーが次に Looker にサインインするときに適用されます。

高度なロール管理

[OpenID Connect グループのミラーリング] スイッチを有効にしている場合、Looker によってこれらの設定が表示されます。このセクションのオプションは、Looker グループと OpenID Connect からミラーリングされたユーザーの構成時に Looker 管理者がどの程度の柔軟性があるかを決定します。

たとえば、Looker のグループとユーザーの構成を OpenID Connect の構成と厳密に一致させる場合は、これらのオプションをオンにします。最初の 3 つのオプションをすべて有効にすると、Looker 管理者はミラーリングされたグループのメンバーシップを変更できず、OpenID Connect のミラーリングされたグループを介したユーザーにのみロールを割り当てることができます。

Looker 内でグループをさらに柔軟にカスタマイズする場合は、これらのオプションをオフにします。Looker グループは引き続き OpenID Connect 構成をミラーリングしますが、Looker 固有のグループに OpenID Connect ユーザーを追加することや、OpenID Connect ユーザーに Looker のロールを直接割り当てるなど、Looker 内で追加のグループやユーザー管理機能を使用することができます。

新しい Looker インスタンス、またはミラーリングされたグループをまだ構成していないインスタンスの場合、これらのオプションはデフォルトで無効になっています。

ミラーリング対象のグループが設定されている既存の Looker インスタンスの場合、これらのオプションはデフォルトでオンになっています。

[高度なロール管理] には、次のオプションがあります。

個々の OpenID Connect ユーザーが直接ロールを受け取れないようにする: このオプションをオンにすると、Looker 管理者は OpenID Connect ユーザーに Looker のロールを直接割り当てることができなくなります。OpenID Connect ユーザーにロールを割り当てることができるのは、グループ メンバーのみです。OpenID Connect ユーザーがビルトイン(ミラーリングされていない)Looker グループでメンバーシップを許可されている場合、ミラーリングされた OpenID Connect グループとビルトイン Looker グループの両方からロールを継承できます。以前に直接ロールが割り当てられた OpenID Connect ユーザーは、次回ログインしたときにそのロールが削除されます。

このオプションをオフにすると、Looker 管理者は、ユーザーが Looker で直接構成されたユーザーであるかのように、OpenID Connect ユーザーに Looker のロールを直接割り当てることができます。

非 OpenID Connect グループでの直接メンバーシップを防止する: このオプションをオンにすると、Looker 管理者は、ビルトイン Looker グループに直接 OpenID Connect ユーザーを追加できなくなります。ミラーリングされた OpenID Connect グループをビルトイン Looker グループのメンバーにできる場合、OpenID Connect ユーザーは親の Looker グループでのメンバーシップを保持できます。以前に組み込みの Looker グループに割り当てられた OpenID Connect ユーザーは、次回のサインイン時にそれらのグループから削除されます。

このオプションをオフにすると、Looker 管理者はビルトイン Looker グループに直接 OpenID Connect ユーザーを追加できます。

非 OpenID Connect グループ以外からのロールの継承を防止する: このオプションを有効にすると、ミラーリングされた OpenID Connect グループのメンバーは、ビルトインの Looker グループからロールを継承できなくなります。以前に親 Looker グループからロールを継承していた OpenID Connect ユーザーは、次回のログイン時にそのロールを失います。

このオプションをオフにすると、ビルトイン Looker グループのメンバーとして追加された、ミラーリングされた OpenID Connect グループまたは OpenID Connect ユーザーは、親 Looker グループに割り当てられたロールを継承します。

認証にはロールが必要: このオプションをオンにすると、OpenID Connect ユーザーには、割り当てられたロールが必要です。ロールが割り当てられていない OpenID Connect ユーザーは Looker にログインできません。

このオプションがオフの場合、ロールが割り当てられていない場合でも、OpenID Connect ユーザーは Looker に対して認証を行うことができます。ロールが割り当てられていないユーザーは、Looker でデータを表示したり操作したりすることはできませんが、Looker にログインすることはできます。

OpenID Connect グループのミラーリングの無効化

Looker 内での OpenID Connect グループのミラーリングを停止するには、[OpenID Connect グループのミラーリング] スイッチをオフにします。スイッチをオフにすると、次のようになります。

  • ユーザーがいない OpenID Connect グループのミラーリングはすぐに削除されます。
  • ユーザーを含むミラーリングされた OpenID Connect グループは、孤立したグループとしてマークされます。このグループのユーザーが 31 日以内にログインしなかった場合、グループは削除されます。孤立した OpenID Connect グループに対してユーザーの追加または削除を行うことはできなくなります。

移行オプションの構成

このセクションで説明したように、Looker では [代替ログイン] を有効にし、既存のユーザーの統合方式を提供することをおすすめします。

指定したユーザーの代替ログイン

OpenID Connect 認証が有効になっている場合、通常のユーザーに対して Looker のメールとパスワードによるログインは常に無効になります。[指定したユーザーの代替ログイン] オプションを使用すると、管理者と login_special_email 権限を持つ指定ユーザーに対する /login/email でメールベースのログインが可能になります。

これをオンにすると、OpenID Connect 構成の問題が発生した場合や、OpenID Connect ディレクトリにアカウントを持っていないユーザーをサポートする必要がある場合に、OpenID Connect 設定中のフォールバックとして役立ちます。

OpenID Connect ユーザーを Looker アカウントに統合する方法を指定する

[次を使用してユーザーを統合] フィールドに、初回 OpenID Connect ログインを既存のユーザー アカウントに統合する方法を指定します。次のシステムのユーザーを統合できます。

  • Looker のメール / パスワード(Looker(Google Cloud コア)は対象外)
  • Google
  • LDAP(Looker(Google Cloud コア)は対象外)
  • SAML

複数の認証システムをすでに導入している場合は、このフィールドで統合する複数のシステムを指定できます。Looker は、リストされているシステムから、指定された順序でユーザーを検索します。たとえば、Looker のメールアドレスとパスワードを使用してユーザーを作成し、LDAP を有効にして、OpenID Connect を使用するとします。前述の例では、Looker では、最初にメールとパスワード、次に LDAP で統合されます。

ユーザーが OpenID Connect で初めてログインするときに、このオプションにより、メールアドレスが一致するアカウントを探して、そのユーザーを既存のアカウントに接続します。ユーザーに既存のアカウントがない場合は、新規ユーザー アカウントが作成されます。

Looker(Google Cloud コア)使用時のユーザーのマージ

Looker(Google Cloud コア)と OpenID Connect を使用する場合、前のセクションで説明したようにマージが行われます。ただし、次の 2 つの条件のいずれかが満たされている場合にのみ可能です。

  • 条件 1: ユーザーは OpenID Connect プロトコルを介して、Google ID を使用して Looker(Google Cloud コア)に対する認証を行います。
  • 条件 2 マージ オプションを選択する前に、次の 2 つの手順を完了しておく必要があります。

    1. Cloud Identity を使用した Google Cloud 内の連携ユーザーの ID。
    2. 連携ユーザーを使用してバックアップの認証方法として OAuth 認証を設定します。

設定がこの 2 つの条件のいずれかを満たしていない場合、[Merge Users Using] オプションは使用できません。

マージ時に、Looker はまったく同じメールアドレスを共有するユーザー レコードを検索します。

ユーザー認証をテストする

この構成を指定しながら、[テスト] ボタンをクリックして OpenID Connect 構成をテストします。

テストではエンドポイントにリダイレクトされ、新しいブラウザタブが開きます。このタブには次の情報が表示されます。

  • Looker がさまざまなエンドポイントと通信して検証できたかどうか
  • 認証エンドポイント レスポンスのトレース
  • ユーザー情報エンドポイントから Looker が取得するユーザー情報
  • 受信したデコードされた ID トークンと未加工の ID トークンの両方

このテストを使用すると、さまざまなエンドポイントから受信した情報が正しいことを確認し、エラーのトラブルシューティングを行うことができます。

ヒント:

  • このテストは、OpenID Connect が部分的に構成されている場合でも、いつでも実行できます。テストを実行すると、構成中に構成が必要なパラメータを確認できます。
  • テストでは、[OpenID Connect 認証] ページで入力された設定は保存されません(これらの設定が保存されていない場合も含む)。テストはそのページのどの設定にも影響せず、設定は変更されません。

設定を保存して適用

情報の入力が完了し、すべてのテストに合格したら、[上記の構成を確認しました。グローバルに適用したいと考えています] チェックボックスをオンにし、[設定を更新] をクリックして保存します。