連線至 AlloyDB for PostgreSQL

BigQuery 管理員可以建立連線,存取 AlloyDB 資料。資料分析師可透過這個連線查詢 AlloyDB 中的資料

如要連線至 AlloyDB,請按照下列步驟操作:

  1. 建立 AlloyDB 連線

  2. 將存取權授予服務帳戶

事前準備

  1. 啟用 BigQuery Connection API。

    啟用 API

  2. 如要取得建立 AlloyDB 連線所需的權限,請要求管理員授予您專案的 BigQuery 連線管理員 (roles/bigquery.connectionAdmin) IAM 角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。

    您或許還可透過自訂角色或其他預先定義的角色取得必要權限。

建立 AlloyDB 連線

最佳做法是使用連線來處理資料庫憑證,以便連線至 AlloyDB。連線會經過加密,並安全地儲存在 BigQuery 連線服務中。如果使用者憑證適用於來源中的其他資料,您可以重複使用該連線。舉例來說,您可以使用一個連線,在 AlloyDB 執行個體中多次查詢同一個資料庫。

選取下列其中一個選項,建立 AlloyDB 連線:

主控台

  1. 前往「BigQuery」頁面

    前往 BigQuery

  2. 在「Explorer」窗格中,按一下 「Add」

    「新增資料」對話方塊隨即開啟。

  3. 在「Filter By」(依條件篩選) 窗格的「Data Source Type」(資料來源類型) 區段中,選取「Databases」(資料庫)

    或者,您也可以在「Search for data sources」(搜尋資料來源) 欄位中輸入 alloydb

  4. 在「精選資料來源」部分,按一下「Google Cloud AlloyDB」

  5. 按一下「AlloyDB:BigQuery Federation」解決方案資訊卡。

  6. 在「外部資料來源」對話方塊中,輸入下列資訊:

    • 在「連線類型」部分,選取「AlloyDB」
    • 在「Connection ID」(連線 ID) 專區中輸入連線資源的 ID。您可以使用英文字母、數字和底線。例如:bq_alloydb_connection
    • 在「資料位置」中,選取與外部資料來源區域相容的 BigQuery 位置 (或區域)。
    • 選用:在「Friendly name」(好記名稱) 中輸入使用者容易記得的連線名稱,例如 My connection resource。好記名稱可以是任何資料值,只要您日後需要修改時可以輕鬆識別連線資源即可。
    • 選用:在「Description」(說明) 中輸入這項連線資源的說明。
    • 選用:加密:如要使用客戶自行管理的加密金鑰 (CMEK) 加密憑證,請選取「客戶自行管理的加密金鑰 (CMEK)」,然後選取客戶自行管理的金鑰。否則,您的憑證會受到預設 Google-owned and Google-managed encryption key保護。
    • 在「Database name」(資料庫名稱) 中輸入資料庫名稱。
    • 在「Database username」(資料庫使用者名稱) 中輸入資料庫的使用者名稱。
    • 在「Database password」(資料庫密碼) 中輸入資料庫密碼。
      • 選用:如要查看密碼,請按一下「顯示密碼」
    • 針對「AlloyDB Instance」(AlloyDB 執行個體),輸入 AlloyDB 主要或讀取執行個體的連線 URI,並加上 //alloydb.googleapis.com 前置字串。

      • 範例 URI://alloydb.googleapis.com/projects/PROJECT_ID/locations/REGION_ID/clusters/CLUSTER_NAME/instances/INSTANCE_ID
  7. 點選「建立連線」

  8. 按一下「前往連線」

  9. 在「連線資訊」窗格中,複製服務帳戶 ID,以便在下一個步驟中授予正確的 IAM 權限。

bq

輸入 bq mk 指令,並加上下列旗標:

  bq mk \
  --connection \
  --location=LOCATION \
  --project_id=PROJECT_ID \
  --connector_configuration '{
    "connector_id": "google-alloydb",
    "asset": {
      "database": "DATABASE",
      "google_cloud_resource": "RESOURCE_PATH"
    },
    "authentication": {
      "username_password": {
        "username": "USERNAME",
        "password": {
          "plaintext": "PASSWORD"
        }
      }
    }
  }' \
  CONNECTION_ID

更改下列內容:

  • LOCATION:指定要與 AlloyDB 資料合併的 BigQuery 資料集區域。使用這個連線的查詢必須從這個區域執行。
  • PROJECT_ID:輸入您的 Google Cloud 專案 ID。
  • DATABASE:輸入資料庫名稱。
  • RESOURCE_PATH:輸入 AlloyDB 主要或讀取執行個體的連線 URI,並加上 //alloydb.googleapis.com 前置字元。
    • 範例 URI://alloydb.googleapis.com/projects/PROJECT_ID/locations/REGION_ID/clusters/CLUSTER_NAME/instances/INSTANCE_ID
  • USERNAME:輸入資料庫使用者的名稱。
  • PASSWORD:輸入資料庫使用者的密碼。
  • CONNECTION_ID:輸入連線 ID,識別這項連線。

API

在 BigQuery Connection API 中,您可以在 ConnectionService 內叫用 CreateConnection,以例項化連線。詳情請參閱用戶端程式庫頁面

將存取權授予服務帳戶

在專案中建立第一個連線時,系統會自動建立服務帳戶。服務帳戶名稱為「BigQuery Connection Service Agent」。服務帳戶 ID 的格式如下:

service-PROJECT_NUMBER@gcp-sa-bigqueryconnection.iam.gserviceaccount.com

如要連線至 AlloyDB,您必須授予新連線 AlloyDB 存取權,這樣 BigQuery 才能代替使用者存取資料。服務帳戶必須具備下列權限:

  • alloydb.instances.connect

您可以將AlloyDB 用戶端 IAM 角色授予與連線相關聯的服務帳戶,這個角色已指派這項權限。如果服務帳戶已具備必要權限,則可略過這個步驟。

主控台

  1. 前往「IAM & Admin」(IAM 與管理) 頁面。

    前往「IAM & Admin」(IAM 與管理)

  2. 按一下 「授予存取權」

    「新增主體」對話方塊隨即開啟。

  3. 在「新增主體」欄位中,輸入服務帳戶名稱「BigQuery Connection Service Agent」,或從連線資訊取得的服務帳戶 ID。

  4. 在「Select a role」(請選取角色) 欄位中,依序選取「AlloyDB」和「AlloyDB Client」(AlloyDB 用戶端)

  5. 按一下 [儲存]

gcloud

使用 gcloud projects add-iam-policy-binding 指令:

gcloud projects add-iam-policy-binding PROJECT_ID --member=serviceAccount:SERVICE_ACCOUNT_ID --role=roles/alloydb.client

提供以下這些值:

  • PROJECT_ID:您的 Google Cloud 專案 ID。
  • SERVICE_ACCOUNT_ID:將 service-PROJECT_NUMBER@gcp-sa-bigqueryconnection.iam.gserviceaccount.com 中的專案編號換成您的專案編號,然後使用該專案。

與使用者共用連線

您可以授予下列角色,讓使用者查詢資料及管理連線:

  • roles/bigquery.connectionUser:可讓使用者透過連線功能連結外部資料來源,並對其執行查詢。

  • roles/bigquery.connectionAdmin:允許使用者管理連線。

如要進一步瞭解 BigQuery 中的 IAM 角色和權限,請參閱預先定義的角色和權限一文。

選取下列選項之一:

主控台

  1. 前往「BigQuery」頁面

    前往 BigQuery

    連線會列在專案的「External connections」(外部連線) 群組中。

  2. 在「Explorer」窗格中,依序點選專案名稱 >「外部連線」>「連線」

  3. 在「詳細資料」窗格中,按一下「分享」即可分享連線。 接著,按照下列步驟操作:

    1. 在「連線權限」對話方塊中,新增或編輯主體,與其他主體共用連線。

    2. 按一下 [儲存]

bq

使用下列 set-iam-policy 指令

  bq set-iam-policy RESOURCE FILE_NAME

更改下列內容:

  • RESOURCE:以 project_id.region.connection_idregion.connection_id 格式輸入資源名稱。
  • FILE_NAME:輸入包含 JSON 格式 IAM 政策的檔案名稱。

如要進一步瞭解 set-iam-policy 指令,請參閱「使用 IAM 控管資源存取權」。

API

請使用 BigQuery Connections REST API 參考資料中的 projects.locations.connections.setIAM 方法,並提供 policy 資源的執行個體。

後續步驟