OIDC 驗證、逾時錯誤、Private Service Connect 和私人服務存取權。
如果 Looker (Google Cloud Core) 執行個體無法連線至外部服務、身分識別提供者或資料庫後端,請參閱本指南診斷及解決常見的網路問題。您可以針對 OpenID Connect (OIDC) 驗證失敗、504 和 HttpClient:ConnectTimeoutError 超時,以及 Private Service Connect (PSC) 和私有服務存取的路徑傳播錯誤進行疑難排解。
使用受控輸出時,OpenID Connect 驗證失敗
在設定了 Private Service Connect 且啟用受控輸出功能的 Looker (Google Cloud Core) 執行個體上設定 OpenID Connect 驗證時,驗證可能會失敗。
問題
如果驗證失敗,可能會出現下列任一症狀:
- 在瀏覽器中,Looker
/openidconnect端點會暫停約 60 秒,然後顯示錯誤或因504 Upstream Request Timeout或504 Gateway Timeout錯誤而逾時。 您的身分識別提供者會顯示錯誤訊息,指出重新導向 URI 不相符,例如:
AADSTS50011: The redirect URI specified in the request does not match the redirect URIs configured for the application這個錯誤訊息可能會誤導您,因為您在身分識別提供者中設定的重新導向 URI 可能正確無誤。如果 Looker (Google Cloud Core) 在後端交換期間無法與身分提供者的權杖端點聯絡,就會發生實際的失敗情形。
原因
受控輸出內容的自動佈建工作流程有時無法在 Looker (Google Cloud Core) 租戶專案中,建立必要的 Secure Web Proxy 網路路由 (looker-swp-route)。
如果缺少這條路徑,Looker (Google Cloud Core) 對身分識別提供者權杖端點的後端要求就會逾時,因為執行個體無法透過 Secure Web Proxy 將輸出流量轉送至公開網際網路。
解析度
如要解決這個問題,請按照下列步驟重設受控輸出設定,強制系統重新建立缺少的網路路由:
前往 Google Cloud 控制台的「Looker」頁面:
按一下要更新的執行個體名稱。
按一下 [編輯]。
展開「連線」專區,然後前往「設定傳出連線」專區。
記錄「全域 FQDN」部分列出的所有現有完整網域名稱 (FQDN),例如身分識別提供者的端點。
刪除「全域 FQDN」部分列出的所有 FQDN。
取消勾選「啟用 Looker 連線至外部服務」核取方塊,即可停用受控 egress。
按一下 [儲存]。
等待執行個體更新完成,並清除設定變更。
再次按一下「編輯」。
展開「連線」專區,然後選取「啟用 Looker 連線至外部服務」核取方塊。
在「全域 FQDN」部分,重新新增身分識別提供者和任何其他外部服務所需的 FQDN。
按一下 [儲存]。
重設受控輸出內容會觸發自動佈建程序,重新建立缺少的 looker-swp-route 網路路徑。建立路徑後,即可完成對身分識別提供者的外送後端要求。
504 上游請求逾時錯誤
在啟用受控輸出功能的 Looker (Google Cloud Core) 執行個體上,透過外部服務或身分識別提供者進行驗證時,要求可能會失敗並出現逾時錯誤。
問題
從身分識別資訊提供者的登入頁面返回後,或連線至外部服務時,瀏覽器會顯示 504 Upstream Request Timeout 錯誤。
原因
504 Upstream Request Timeout 錯誤表示 Looker (Google Cloud Core) 執行個體無法透過受控輸出連線至外部網域。與缺少路徑錯誤不同,504 錯誤通常表示網路路徑存在,但全域 FQDN 允許清單缺少必要網域,因此遭到封鎖,或是要求在閘道逾時。
解析度
如要解決這個問題,請按照下列步驟操作:
- 驗證必要 FQDN:在 Google Cloud 控制台中,確認外部服務或身分識別供應商所需的所有網域都已新增至「全域 FQDN」清單。OIDC 驗證流程通常需要多個端點 (例如授權、權杖和使用者資訊端點),這些端點可能會使用不同網域。
- 擷取網路追蹤記錄:如果錯誤仍未解決,請重現問題並擷取瀏覽器網路追蹤記錄 (HAR 檔案)。在追蹤記錄中搜尋
504狀態碼或失敗的 HTTP 要求,找出在流程中遭到連線,但未列入全域 FQDN 清單的網域。 - 重設設定:如果必要的 FQDN 存在,但要求持續逾時,請按照「解決方法」一節的步驟操作,解決 OpenID Connect 驗證失敗的問題,並重設受控輸出設定。
HttpClient:ConnectTimeoutError execution expired
在 Looker 管理面板中測試 OpenID Connect 連線或其他外部網路連線時,連線測試可能會失敗,並顯示逾時錯誤。
問題
在 Looker 管理面板中執行連線測試時 (例如在「OpenID Connect 驗證」頁面上),Looker 會傳回下列錯誤:
HttpClient:ConnectTimeoutError execution expired
原因
這項錯誤表示 Looker (Google Cloud Core) 執行個體缺少與外部服務或身分識別提供者通訊所需的網路路徑。發生這個問題的常見原因如下:
- 缺少路徑傳播:Cloud Router 使用預設設定,且未將虛擬私有雲網路路徑 (例如自訂通告路徑) 傳播至 Looker (Google Cloud Core) 執行個體。
- 缺少網際網路 NEG:虛擬私有雲網路中未設定網際網路網路端點群組 (NEG),無法將流量轉送至外部服務。
解析度
如要解決這個問題,請按照下列步驟操作:
- 設定 Cloud Router 路由傳播:設定自訂通告路由,確認 Cloud Router 已設定為將必要的虛擬私有雲網路路由傳播至 Looker (Google Cloud Core) 執行個體。
- 設定網際網路 NEG:在虛擬私有雲網路中設定網際網路 NEG,允許 Looker (Google Cloud Core) 執行個體將輸出流量路由至外部身分識別提供者或服務。
- 驗證私人服務存取權:如果執行個體使用私人服務存取權,請確認您的虛擬私有雲網路已與 Google 服務正確對等互連。詳情請參閱「使用私人服務存取權存取外部服務」。
南向 Private Service Connect 連線問題
如果 Looker (Google Cloud Core) 執行個體使用 Private Service Connect,連線至資料庫後端或已發布的服務,即使端點狀態為 Accepted,您也可能會遇到連線錯誤。
常見問題包括:
- 主機名稱解析錯誤:如果測試連線時,Looker (Google Cloud Core) 顯示
Unknown host錯誤,請確認設定的主機名稱與私有網路中的 DNS 記錄相符,且後端負載平衡器運作正常。 - 連線逾時:如果連線逾時,請檢查虛擬私有雲防火牆規則,確認允許從 Private Service Connect NAT 子網路輸入流量至負載平衡器的後端。
- 「待處理」或「已關閉」狀態:如果服務附件狀態為
Pending或Closed,請確認消費者專案位於服務附件的允許清單中,且已設定強制性 TCP 健康狀態檢查。
如需詳細的診斷工作流程和決策樹,請參閱「排解南向 Private Service Connect 連線問題」。
私人服務存取路徑和連線問題
對於使用私人服務存取權的 Looker (Google Cloud Core) 執行個體,與外部服務的傳出通訊需要適當的路徑傳播和網路基礎架構:
- 路由傳播:確認 Cloud Router 已設定為將虛擬私有雲網路路由 (例如自訂通告路由) 傳播至 Looker (Google Cloud Core) 執行個體。
- 網際網路網路端點群組:如果執行個體需要透過私人服務存取權連線至外部端點,請確保虛擬私有雲網路中已設定網際網路網路端點群組 (NEG)。
如果缺少這些路徑或端點群組,連線至外部端點的測試就會失敗,並出現 HttpClient:ConnectTimeoutError execution expired 錯誤。
詳情請參閱「使用私人服務存取權存取外部服務」。
診斷工具和記錄檔
使用下列工具和記錄檔,協助診斷網路問題:
- Cloud Logging:在 Cloud Logging 中查看執行個體層級的記錄,找出連線失敗和系統事件。詳情請參閱「查看執行個體記錄」。
- Looker 系統活動:如果您可以管理員身分登入,請查看系統活動中的「使用者活動」資訊主頁。這個資訊主頁會顯示最近的登入失敗情形、使用的驗證方法和錯誤訊息。詳情請參閱「使用者活動資訊主頁」。
- 虛擬私有雲流量記錄檔:檢查虛擬私有雲流量記錄檔,判斷 Looker (Google Cloud Core) 的網路流量是否抵達目的地子網路,或遭到防火牆規則封鎖。
- Cloud Customer Care:如果完成疑難排解步驟後問題仍未解決,請聯絡 Cloud Customer Care 團隊尋求協助。