連線至 AlloyDB for PostgreSQL

在 BigQuery 中,AlloyDB for PostgreSQL 連線可讓使用者即時查詢 AlloyDB 中的資料,不必將資料複製或移至 BigQuery。如要設定這項連線,請建立 AlloyDB 連線,並授予服務帳戶存取權。

事前準備

  1. 啟用 BigQuery Connection API。

    啟用 API

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

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

建立 AlloyDB 連線

連線至 AlloyDB 時,建議您使用連線來處理資料庫憑證。連線會經過加密,並安全地儲存在 BigQuery 連線服務中。如果使用者憑證對來源中的其他資料有效,您可以重複使用連線。例如,您可以使用一個連線,多次查詢 AlloyDB 執行個體中的同一個資料庫。

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

控制台

  1. 前往「BigQuery」頁面。

    前往「BigQuery」

  2. 在「Explorer」窗格中,點選「 新增」。

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

  3. 在「篩選依據」窗格的「資料來源類型」部分,選取「資料庫」。

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

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

  5. 點選「AlloyDB: BigQuery Federation」解決方案資訊卡。

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

    • 在「Connection type」(連線類型) 部分,選取「AlloyDB」。
    • 在「Connection ID」(連線 ID) 專區中輸入連線資源的 ID。可以使用英文字母、數字和底線,例如:bq_alloydb_connection。
    • 在「Data location」(資料位置) 部分,選取與外部資料來源區域相容的 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,用於識別這項 連線。

選用旗標:

  • --kms_key_name:客戶自行管理的加密金鑰。如果省略,憑證會受到預設 Google-owned and Google-managed encryption key保護。

API

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

將存取權授予服務帳戶

在專案中建立第一個連線時,系統會自動建立服務帳戶。服務帳戶名稱為 BigQuery Connection 服務代理。如要取得服務帳戶 ID,請查看連線詳細資料。服務帳戶 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. 按一下 「Grant Access」(授予存取權)。

    「Add principals」(新增主體) 對話方塊隨即開啟。

  3. 在「New principals」(新增主體) 欄位中,輸入從連線資訊取得的服務帳戶 ID。

  4. 在「指派角色」部分,選取「AlloyDB 用戶端」(roles/alloydb.client)。

  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:從連線資訊取得的服務帳戶 ID。

與使用者共用連線

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

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

  • roles/bigquery.connectionAdmin:可讓使用者管理連線。

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

選取下列選項之一:

控制台

  1. 前往「BigQuery」頁面。

    前往「BigQuery」

    連線會列在專案中名為「Connections」(連線) 的群組。

  2. 點選左側窗格中的 「Explorer」。

    醒目顯示的「Explorer」窗格按鈕。

    如果沒有看到左側窗格,請按一下 「Expand left pane」(展開左側窗格),開啟窗格。

  3. 在「Explorer」窗格中,展開專案名稱。

  4. 按一下「連線」,然後點選連線。

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

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

    2. 按一下 [儲存]。

bq

使用下列 set-iam-policy 指令:

  bq set-iam-policy RESOURCE FILE_NAME

更改下列內容:

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

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

API

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

後續步驟