管理者設定 - OpenID Connect 認証

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

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

プランニングの考慮事項

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

OpenID Connect の設定

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

  1. Looker URL を OpenID Connect プロバイダ(OP)に付与します
  2. OP から必要な情報を取得します

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 つの異なるエンドポイント(Authentication エンドポイント、ID トークン エンドポイント、および User Information エンドポイント)に接続します。各エンドポイントで演算が使用する URL が必要になります。
  • 各 OP はスコープと呼ばれるセットでユーザー情報を提供します。演算で使用されるスコープの名前を確認する必要があります。OpenID Connect には openid スコープが必要ですが、演算に 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 認証設定の構成

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

ID: Looker インスタンスに固有のクライアント ID。これは OP から提供される必要があります。

シークレット: Looker インスタンスに固有のクライアント シークレット キー。これは OP から提供される必要があります。

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

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

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

トークン URL: 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 グループに基づいてユーザーに Looker ロールを割り当てることができます。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 グループのミラーリングを有効にすると、これらのデフォルトは次回のログイン時に削除され、[OpenID Connect グループのミラーリング] セクションに割り当てられているロールに置き換えられます。これらのデフォルトのオプションは使用できなくなり、割り当てられなくなり、ミラーリングされたグループ構成に完全に置き換えられます。

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

Looker 内で OpenID Connect グループをミラーリングするには、[Mirror OpenID Connect Groups] スイッチをオンにします。

グループ クレーム: OP がグループ名を保存するために使用するクレームを入力します。Looker は、Groups クレームによってシステムに導入される OpenID Connect グループごとに 1 つの Looker グループを作成します。これらの Looker グループは、Looker の [管理者] セクションの [グループ] ページで確認できます。グループは、コンテンツのアクセス制御を設定し、ユーザー属性を割り当てるために使用できます。

優先グループ名 / ロール / OpenID Connect グループ名: この一連のフィールドを使用すると、Looker で対応する OpenID Connect グループに割り当てられたカスタム グループ名と 1 つ以上のロールを割り当てることができます。

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

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

  3. [カスタム名] フィールドの右側にあるフィールドで、グループ内の各ユーザーに割り当てる 1 つ以上の Looker ロールを選択します。

  4. 追加のミラーリング対象のグループを構成するフィールドを追加するには、+ をクリックします。複数のグループを構成していて、グループの構成を削除するには、そのグループのフィールド セットの横にある X をクリックします。

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

このページでグループを削除すると、そのグループは Looker にミラーリングされなくなり、そのメンバーはそのグループから Looker での役割を割り当てなくなります。

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

高度なロール管理

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

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

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

新しい 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 グループのミラーリングを停止するには、[Mirror OpenID Connect Groups] スイッチをオフにします。空のミラー OpenID Connect グループが削除されます。

空でないミラー OpenID Connect グループは、引き続きコンテンツ管理とロール作成に使用できます。ただし、OpenID Connect グループのミラーリングに対してユーザーの追加または削除を行うことはできません。

移行オプションの構成

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

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

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

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

Looker API を使用して代替ログインを有効にするには、代替ログイン オプションを有効にする ドキュメント ページをご覧ください。

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 Core)と 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 認証] ページで入力された設定は保存されません(これらの設定が保存されていない場合も含む)。テストはそのページのどの設定にも影響せず、設定は変更されません。

設定を保存して適用

最初に構成をテストし、テスト結果を注意深く読み、すべての部分が成功したことを確認してください。正しくない OpenID Connect 構成情報を保存すると、自身とその他の人が Looker からロックアウトされる可能性があります。

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