排解 Databricks Unity Catalog 的跨雲端資料存取問題

本頁面說明如何排解背景中繼資料重新整理,以及 Databricks Unity Catalog 跨雲端資料存取的使用者身分聯盟問題。如需一般跨雲端資料存取疑難排解,例如透過私人互連網路連線能力和路由,請參閱「排解跨雲端資料存取問題」。

資料表空白或重新整理時未偵測到

如果目錄背景中繼資料重新整理作業顯示成功 (例如 Refresh successfully completed),但聯合目錄中的資料表未顯示,或列出資料表時傳回 0 個項目,請檢查下列事項:

  • EXTERNAL USE SCHEMA 權限:確認 Databricks 服務主體已在 Unity Catalog 中,獲得目標結構定義或目錄的 EXTERNAL USE SCHEMA 權限。如果沒有這項權限,背景中繼資料重新整理和查詢憑證販售作業將會失敗。
  • 外部資料存取權設定:確認 Databricks Unity Catalog metastore 已啟用「External data access」(外部資料存取權)。
  • 外部位置:確認 Databricks Unity Catalog 和資料表使用外部儲存空間位置 (例如 Cloud Storage 或 Amazon S3),而非預設儲存空間。

中繼資料同步失敗或傳回 401 未授權

如果背景中繼資料重新整理狀態回報錯誤 (例如 401 Unauthorized),或無法探索結構定義,請確認下列事項:

  • 服務主體聯合政策:在 Databricks 帳戶控制台中 (依序前往「Account settings」>「Security」>「Identity provider setup」>「Federation policies」),確認服務主體聯合政策的設定如下:
    • Issuer URL: https://accounts.google.com
    • 主旨:目錄 biglake-service-account 服務帳戶的專屬 ID (而非電子郵件地址)。
    • 目標對象: https://accounts.cloud.databricks.com
  • Secret Manager 權限:如果使用 Secret 驗證,請確認 Secret 位於指定的區域位置,且 biglake-service-account 具備 Secret Manager Secret 存取者 (roles/secretmanager.secretAccessor) 角色。
  • 服務主體權限:確認 Databricks 服務主體具備目標工作區和目錄的讀取權限。

互動式查詢失敗,並顯示 401 未授權或權杖驗證錯誤

啟用使用者身分聯合後,互動式查詢會動態產生使用者身分權杖,並根據 Databricks 的帳戶層級聯合政策進行驗證。如果查詢失敗,並顯示 401 Unauthorized 或權杖驗證錯誤,但背景中繼資料同步處理正常,請檢查下列事項:

  • 已設定帳戶層級聯合政策:請確認您已在 Databricks 帳戶控制台的「Account settings」>「Security」>「Identity provider setup」>「Federation policies」下方,建立帳戶層級聯合政策 (與服務主體政策不同)。
  • 區分大小寫的目標對象比對:Databricks 會嚴格區分大小寫,驗證 aud (目標對象) 聲明。確認 Databricks 帳戶層級聯合政策中的「Audiences」(目標對象) 欄位,與從目錄擷取的 metastore 範圍 audience 宣告 (databricks-METASTORE_ID) 大小寫完全一致。任何大小寫不一致 (例如 databricks- 前置字串或 metastore UUID) 都會導致 Databricks 權杖驗證拒絕查詢,並傳回 401 Unauthorized。
  • Issuer URL:確認 Issuer URL 與目錄中的 issuer-url 宣告完全相符:https://www.gstatic.com/biglake/federation/organizations/ORGANIZATION_ID。
  • Metastore 目標對象可用性:只有在第一個背景中繼資料重新整理週期完成後 (通常在 5 分鐘內),才會填入 metastore 範圍的 audience 宣告。如果您使用預留位置值設定政策,或在第一個重新整理週期完成前設定政策,查詢就會失敗。執行 gcloud biglake iceberg catalogs describe,確認 audience 宣告已填入,再設定政策。