OIDC 認証、タイムアウト エラー、Private Service Connect、プライベート サービス アクセス。
Looker(Google Cloud コア)インスタンスが外部サービス、ID プロバイダ、データベース バックエンドに接続できない場合は、このガイドを使用して一般的なネットワークの問題を診断し、解決してください。Private Service Connect(PSC)とプライベート サービス アクセスの OpenID Connect(OIDC)認証の失敗、504 と HttpClient:ConnectTimeoutError のタイムアウト、ルート伝播エラーのトラブルシューティングを行うことができます。
制御された下り(外向き)での OpenID Connect 認証の失敗
Private Service Connect で構成され、制御された下り(外向き)が有効になっている Looker(Google Cloud コア)インスタンスで OpenID Connect 認証を設定すると、認証が失敗する可能性があります。
現象
認証に失敗した場合、次のいずれかの現象が発生することがあります。
- Looker
/openidconnectエンドポイントがブラウザで約 60 秒間ハングし、エラーが表示されるか、504 Upstream Request Timeoutまたは504 Gateway Timeoutエラーでタイムアウトします。 ID プロバイダに、リダイレクト URI が一致しないことを示すエラー メッセージが表示されます。例:
AADSTS50011: The redirect URI specified in the request does not match the redirect URIs configured for the applicationこのエラー メッセージは誤解を招く可能性があります。ID プロバイダで構成したリダイレクト URI が正しい場合があるためです。実際のエラーは、バックエンド交換中に Looker(Google Cloud コア)が ID プロバイダのトークン エンドポイントに接続できない場合に発生します。
原因
制御された下り(外向き)の自動プロビジョニング ワークフローで、Looker(Google Cloud コア)テナント プロジェクトに必要な Secure Web Proxy ネットワーク ルート(looker-swp-route)が作成されないことがあります。
このルートがない場合、インスタンスは Secure Web Proxy を介してアウトバウンド トラフィックをパブリック インターネットに転送できないため、Looker(Google Cloud コア)から ID プロバイダのトークン エンドポイントへのバックエンド リクエストがタイムアウトします。
解決策
この問題を解決するには、次の手順に沿って制御された下り(外向き)構成をリセットし、システムに欠落しているネットワーク ルートの再作成を強制します。
Google Cloud コンソールで、[Looker] ページに移動します。
更新するインスタンスの名前をクリックします。
[編集] をクリックします。
[接続] セクションを開き、[アウトバウンド接続を構成する] セクションに移動します。
[グローバル FQDN] セクションに記載されている既存の完全修飾ドメイン名(FQDN)(ID プロバイダのエンドポイントなど)をすべて記録します。
[グローバル FQDN] セクションにリストされているすべての FQDN を削除します。
[Looker が外部サービスに接続できるようにする] チェックボックスをオフにして、制御された下り(外向き)を無効にします。
[保存] をクリックします。
インスタンスの更新が完了し、構成の変更がクリアされるまで待ちます。
[編集] をもう一度クリックします。
[接続] セクションを開き、[Looker が外部サービスに接続できるようにする] チェックボックスをオンにします。
[グローバル FQDN] セクションで、ID プロバイダと他の外部サービスに必要な FQDN を再度追加します。
[保存] をクリックします。
制御された下り(外向き)をリセットすると、自動プロビジョニング プロセスがトリガーされ、欠落している looker-swp-route ネットワーク ルートが再作成されます。ルートが作成されると、ID プロバイダへのアウトバウンド バックエンド リクエストを完了できます。
504 Upstream Request Timeout エラー
制御された下り(外向き)が有効になっている Looker(Google Cloud コア)インスタンスで外部サービスまたは ID プロバイダを使用して認証を行うと、リクエストがタイムアウト エラーで失敗することがあります。
現象
ID プロバイダのログインページから戻った後、または外部サービスに接続するときに、ブラウザで 504 Upstream Request Timeout エラーが表示される。
原因
504 Upstream Request Timeout エラーは、Looker(Google Cloud コア)インスタンスが制御された下り(外向き)を介して外部ドメインに到達できないことを示します。ルートが見つからないエラーとは異なり、504 エラーは通常、ネットワーク パスは存在するものの、必要なドメインがグローバル FQDN 許可リストにないためにブロックされているか、リクエストがゲートウェイでタイムアウトしていることを意味します。
解決策
この問題を解決する方法は次のとおりです。
- 必要な FQDN を確認する: Google Cloud コンソールで、外部サービスまたは ID プロバイダに必要なすべてのドメインがグローバル FQDN リストに追加されていることを確認します。OIDC 認証フローでは、多くの場合、異なるドメインを使用する可能性のある複数のエンドポイント(認可、トークン、ユーザー情報のエンドポイントなど)が必要です。
- ネットワーク トレースをキャプチャする: エラーが解決しない場合は、問題を再現しながらブラウザのネットワーク トレース(HAR ファイル)をキャプチャします。トレースで
504ステータス コードまたは失敗した HTTP リクエストを検索して、フロー中にアクセスされたが、グローバル FQDN リストに含まれていないドメインを特定します。 - 構成をリセットする: 必要な FQDN が存在してもリクエストがタイムアウトし続ける場合は、OpenID Connect 認証の失敗に関する解決策の手順に沿って、制御された下り(外向き)構成をリセットします。
HttpClient:ConnectTimeoutError の実行が期限切れ
Looker 管理パネルで OpenID Connect 接続やその他の外部ネットワーク接続をテストすると、接続テストがタイムアウト エラーで失敗することがあります。
現象
Looker 管理パネル([OpenID Connect 認証] ページなど)で接続テストを実行すると、Looker から次のエラーが返されます。
HttpClient:ConnectTimeoutError execution expired
原因
このエラーは、Looker(Google Cloud コア)インスタンスに、外部サービスまたは ID プロバイダとの通信に必要なネットワーク パスがないことを示しています。この問題は通常、次のいずれかの条件が満たされている場合に発生します。
- ルート伝播の欠落: Cloud Router がデフォルト設定を使用しており、VPC ネットワーク ルート(カスタム アドバタイズ ルートなど)を Looker(Google Cloud コア)インスタンスに伝播していません。
- インターネット NEG がない: 外部サービスにトラフィックを転送するように インターネット ネットワーク エンドポイント グループ(NEG)が VPC ネットワークで構成されていません。
解決策
この問題を解決する方法は次のとおりです。
- Cloud Router のルート伝播を構成する: カスタム アドバタイズ ルートを設定して、必要な VPC ネットワーク ルートを Looker(Google Cloud コア)インスタンスに伝播するように Cloud Router が構成されていることを確認します。
- インターネット NEG を構成する: VPC ネットワークにインターネット NEG を設定して、Looker(Google Cloud コア)インスタンスが外部 ID プロバイダまたはサービスに下り(外向き)トラフィックをルーティングできるようにします。
- プライベート サービス アクセスを確認する: プライベート サービス アクセスを使用するインスタンスの場合は、VPC ネットワークが Google サービスと適切にピアリングされていることを確認します。詳細については、プライベート サービス アクセスを使用して外部サービスにアクセスするをご覧ください。
サウスバウンド Private Service Connect 接続に関する問題
データベース バックエンドまたは公開サービスへのアウトバウンド接続に Private Service Connect を使用する Looker(Google Cloud コア)インスタンスでは、エンドポイントのステータスが Accepted であっても接続エラーが発生することがあります。
一般的な問題としては、次のようなものがあります。
- ホスト名の解決エラー: 接続のテスト時に Looker(Google Cloud コア)に
Unknown hostエラーが表示された場合は、構成されたホスト名がプライベート ネットワークの DNS レコードと一致し、バックエンド ロードバランサが正常であることを確認します。 - 接続のタイムアウト: 接続がタイムアウトした場合は、VPC ファイアウォール ルールを確認して、Private Service Connect NAT サブネットからロードバランサのバックエンドへの上り(内向き)トラフィックが許可されていることを確認します。
- 保留中またはクローズ済みのステータス: サービス アタッチメントのステータスが
PendingまたはClosedの場合は、コンシューマー プロジェクトがサービス アタッチメントの許可リストに含まれており、必須の TCP ヘルスチェックが構成されていることを確認します。
詳細な診断ワークフローとデシジョン ツリーについては、サウスバウンドの Private Service Connect 接続のトラブルシューティングをご覧ください。
プライベート サービス アクセスのルートと接続の問題
プライベート サービス アクセスを使用する Looker(Google Cloud コア)インスタンスの場合、外部サービスへのアウトバウンド通信には、適切なルート伝播とネットワーク インフラストラクチャが必要です。
- ルートの伝播: カスタム アドバタイズ ルートなど、VPC ネットワーク ルートを Looker(Google Cloud コア)インスタンスに伝播するように Cloud Router が構成されていることを確認します。
- インターネット ネットワーク エンドポイント グループ: インスタンスがプライベート サービス アクセスを介して外部エンドポイントに到達する必要がある場合は、VPC ネットワークにインターネット ネットワーク エンドポイント グループ(NEG)が構成されていることを確認します。
これらのルートまたはエンドポイント グループがない場合、外部エンドポイントへの接続テストは HttpClient:ConnectTimeoutError execution expired エラーで失敗します。
詳細については、プライベート サービス アクセスを使用して外部サービスにアクセスするをご覧ください。
診断ツールとログ
次のツールとログを使用して、ネットワークの問題を診断します。
- Cloud Logging: Cloud Logging でインスタンスレベルのログを表示して、接続障害とシステム イベントを特定します。詳細については、インスタンスのログを表示するをご覧ください。
- Looker システム アクティビティ: 管理者としてログインできる場合は、システム アクティビティの [ユーザー アクティビティ] ダッシュボードを確認します。このダッシュボードには、最近のログイン失敗、使用された認証方法、エラー メッセージが表示されます。詳細については、ユーザー アクティビティ ダッシュボードをご覧ください。
- VPC フローログ: VPC フローログを調べて、Looker(Google Cloud コア)からのネットワーク トラフィックが宛先サブネットに到達しているか、ファイアウォール ルールによってブロックされているかを確認します。
- Cloud カスタマーケア: トラブルシューティングの手順を完了しても問題が解決しない場合は、Cloud カスタマーケアにお問い合わせください。