企業は、Okta や OneLogin などのさまざまな OpenID Connect プロバイダ(OP)を使用して OpenID Connect との連携を行っています。次の設定手順と Looker UI で使用されている用語は、OP で使用される用語と直接一致しない場合があります。
[管理者] メニューの [認証] セクションにある [OpenID Connect] ページを使用すると、OpenID Connect プロトコルを使用してユーザーを認証するように Looker を構成できます。このページでは、そのプロセスと、OpenID Connect グループを Looker のロールと権限にリンクする手順について説明します。
プランニングの考慮事項
- 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 間の接続を設定するには、次のタスクを行います。
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 にはemail
、profile
、groups
などの他のスコープが含まれる可能性があります。 - 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 が認証された後に 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 ユーザー属性とペアリングするには:
- OP によって特定されたクレームを [クレーム] フィールドに入力し、ペア設定する Looker ユーザー属性を [Looker ユーザー属性] フィールドに入力します。
- その要求フィールドに値がないユーザー アカウントによるログインをブロックする場合は、[必須] をオンにします。
- [+] をクリックし、クレームと属性のペアを追加するためにこれらの手順を繰り返します。
一部の 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 グループのミラーリングの有効化
Looker 内で OpenID Connect グループをミラーリングするには、[OpenID Connect グループのミラーリング] スイッチをオンにします。
グループ クレーム: OP がグループ名を保存するために使用するクレームを入力します。Looker は、グループ クレームによってシステムに導入された OpenID Connect グループごとに 1 つの Looker グループを作成します。これらの Looker グループは、Looker の [管理者] セクションの [グループ] ページで確認できます。グループは、コンテンツ アクセス制御の設定とユーザー属性の割り当てに使用できます。
優先グループ名 / ロール / OpenID Connect グループ名: この一連のフィールドを使用すると、Looker で対応する OpenID Connect グループに割り当てられたカスタム グループ名と 1 つ以上のロールを割り当てることができます。
[OpenID Connect グループ名] フィールドに、OpenID Connect グループ名を入力します。OpenID Connect グループに含まれる OpenID Connect ユーザーは、Looker 内のミラーリングされたグループに追加されます。
[Custom Name] フィールドに、ミラーリングするグループのカスタム名を入力します。これは、Looker の [管理者] セクションの [グループ] ページに表示される名前です。
[カスタム名] フィールドの右側にあるフィールドで、グループ内の各ユーザーに割り当てる 1 つ以上の Looker ロールを選択します。
追加のミラーリング対象のグループを構成するフィールドを追加するには、
+
をクリックします。複数のグループを構成していて、グループの構成を削除するには、そのグループのフィールド セットの横にある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 構成をミラーリングしますが、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 グループのミラーリングは、引き続きコンテンツ管理とロール作成で使用できます。ただし、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 コア)は対象外)
- 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 つの手順を完了しておく必要があります。
- Cloud Identity を使用した Google Cloud 内の連携ユーザーの ID
- 連携ユーザーを使用してバックアップの認証方法として OAuth 認証を設定します。
設定がこの 2 つの条件のいずれかを満たしていない場合、[Merge Users Using] オプションは使用できません。
マージ時に、Looker はまったく同じメールアドレスを共有するユーザー レコードを検索します。
ユーザー認証のテスト
この構成を指定しながら、[テスト] ボタンをクリックして OpenID Connect 構成をテストします。
テストではエンドポイントにリダイレクトされ、新しいブラウザタブが開きます。タブが表示されます。
- Looker がさまざまなエンドポイントと通信して検証できたかどうか
- 認証エンドポイント レスポンスのトレース
- Looker がユーザー情報エンドポイントから取得したユーザー情報
- 受信したデコードされた ID トークンと未加工の ID トークンの両方
このテストを使用すると、さまざまなエンドポイントから受信した情報が正しいことを確認し、エラーをトラブルシューティングできます。
ヒント:
- OpenID Connect が部分的に構成されている場合でも、このテストはいつでも実行できます。テストを実行すると、構成中に構成が必要なパラメータを確認できます。
- テストでは、[OpenID Connect 認証] ページで入力された設定は保存されません(これらの設定が保存されていない場合も含む)。テストはそのページのどの設定にも影響せず、設定は変更されません。
設定を保存して適用
情報の入力が完了し、すべてのテストに合格したら、[上記の構成を確認しました。グローバルに適用したいと考えています] チェックボックスをオンにし、[設定を更新] をクリックして保存します。