啟用 BigQuery 資料移轉服務
如要使用 BigQuery 資料移轉服務,您必須以專案擁有者的身分完成下列步驟:
- 建立專案並啟用 BigQuery API。
- 啟用 BigQuery 資料移轉服務。
如要進一步瞭解 Identity and Access Management (IAM) 角色,請參閱 IAM 說明文件中的「角色和權限」。
建立專案並啟用 BigQuery API
使用 BigQuery 資料移轉服務之前,您必須先建立專案,在大多數情況下,還必須啟用該專案的計費功能。您可以在現有專案使用 BigQuery 資料移轉服務,或建立一個新專案。若您使用現有的專案,可能還需啟用 BigQuery API。
如何建立專案並啟用 BigQuery API:
-
前往 Google Cloud 控制台的專案選取器頁面。
-
選取或建立 Google Cloud 專案。
選取或建立專案所需的角色
- 選取專案:選取專案時,不需具備特定 IAM 角色,只要您在專案中獲派角色,即可選取該專案。
-
建立專案:如要建立專案,您必須具備專案建立者角色 (
roles/resourcemanager.projectCreator),其中包含resourcemanager.projects.create權限。瞭解如何授予角色。
為專案啟用計費功能,即可進行所有移轉作業。免費轉移作業的費用為 $0 美元。
每個專案只需啟用計費功能一次,即使從多個來源移轉資料也一樣。資料移轉後,您也必須啟用計費功能,才能在 BigQuery 中查詢資料。
- 新專案會自動啟用 BigQuery。如要在現有專案中啟用 BigQuery,請啟用 BigQuery API。
啟用 BigQuery API
啟用 BigQuery 資料移轉服務
建立移轉之前,您必須先啟用 BigQuery 資料移轉服務。如要啟用 BigQuery 資料移轉服務,您必須具備專案的擁有者角色。
如何啟用 BigQuery 資料移轉服務:
在 API 程式庫中開啟 BigQuery Data Transfer API 頁面。
在下拉式選單中選取適當的專案。
按一下 [ENABLE] (啟用) 按鈕。
服務代理
BigQuery 資料移轉服務會使用服務代理存取及管理資源。包括但不限於下列資源:
- 擷取服務帳戶的存取權杖,以便在授權資料移轉時使用。
- 如果啟用,系統會將通知發布至指定的 Pub/Sub 主題。
- 啟動 BigQuery 工作。
- 正在從提供的 Pub/Sub 訂閱項目擷取事件,以便執行 Cloud Storage 事件導向移轉作業
啟用 BigQuery 資料移轉服務並首次使用 API 後,系統會自動為您建立服務代理。建立服務代理時,Google 會自動授予預先定義的服務代理角色。
跨專案服務帳戶授權
如果您使用服務帳戶授權資料移轉,且該帳戶所屬專案與啟用 BigQuery 資料移轉服務的專案不同,則必須使用下列 Google Cloud CLI 指令,將 roles/iam.serviceAccountTokenCreator 角色授予服務代理:
gcloud iam service-accounts add-iam-policy-binding service_account \ --member serviceAccount:service-project_number@gcp-sa-bigquerydatatransfer.iam.gserviceaccount.com \ --role roles/iam.serviceAccountTokenCreator
更改下列內容:
- service_account 是用於授權資料移轉的跨專案服務帳戶。
- project_number 是已啟用 BigQuery 資料移轉服務的專案編號。
如要進一步瞭解跨專案資源設定,請參閱 Identity and Access Management 服務帳戶模擬說明文件中的「設定其他專案中的資源」。
透過 Google Cloud 控制台啟用 BigQuery 資料移轉服務 API 時,Google 會自動嘗試授予必要權限。不過,如果您透過 Terraform、Google Cloud CLI 或其他程式輔助方法啟用 API 或建立移轉作業,則必須手動設定必要權限。如要使用其他專案的服務帳戶授權移轉作業,請考量下列事項:
設定跨專案移轉作業的權限:如要安全存取跨專案資料來源,請將來源服務帳戶身分的
roles/iam.serviceAccountTokenCreator角色授予 DTS 服務代理 (位於目的地專案)。強制執行最小權限原則:在資源層級 (針對使用的特定服務帳戶) 授予這個角色,而非在專案層級。
限制
您無法使用 Google Cloud 控制台,將跨專案服務帳戶附加至資料移轉作業。不過,您可以使用下列 Google Cloud CLI 指令,附加跨專案服務帳戶:
bq update --transfer_config --update_credentials --service_account_name="SERVICE_ACCOUNT" projects/PROJECT_ID/locations/LOCATION/transferConfigs/CONFIG_ID
更改下列內容:
- SERVICE_ACCOUNT::跨專案服務帳戶的名稱。
- PROJECT_ID:與資料移轉作業相關聯的專案名稱。
- LOCATION:資料移轉作業的位置。
- CONFIG_ID:移轉設定 ID。
手動建立服務代理
如要在與 API 互動前觸發服務代理建立作業,例如需要為服務代理授予額外角色,可以採用下列其中一種方法:
- API:services.GenerateServiceIdentity
- gcloud CLI:gcloud beta services identity create
- Terraform 供應商:google_project_service_identity
手動觸發服務代理建立作業時,Google 不會自動授予預先定義的服務代理角色。您必須使用下列 Google Cloud CLI 指令,手動將預先定義的角色授予服務代理:
gcloud projects add-iam-policy-binding project_number \ --member serviceAccount:service-project_number@gcp-sa-bigquerydatatransfer.iam.gserviceaccount.com \ --role roles/bigquerydatatransfer.serviceAgent
更改下列內容:
- project_number 是已啟用 BigQuery 資料移轉服務的專案編號。
授予 bigquery.admin 存取權
建議您將 bigquery.admin 預先定義的身分與存取權管理角色,授予建立 BigQuery 資料移轉服務移轉作業的使用者。bigquery.admin 角色包含執行最常見工作所需的 IAM 權限。bigquery.admin 角色包含下列 BigQuery 資料移轉服務權限:
- BigQuery 資料移轉服務權限:
bigquery.transfers.updatebigquery.transfers.get
- BigQuery 權限:
bigquery.datasets.getbigquery.datasets.getIamPolicybigquery.datasets.updatebigquery.datasets.setIamPolicybigquery.jobs.create
在某些情況下,不同資料來源所需的權限可能不同。如需特定 IAM 資訊,請參閱各資料來源移轉指南中的「必要權限」一節。例如,請參閱 Amazon S3 移轉權限或 Cloud Storage 移轉權限。
如要授予 bigquery.admin 角色:
控制台
在 Google Cloud 控制台中開啟「IAM」頁面
按一下 [Select a project] (選取專案)。
選取專案並點選 [Open] (開啟)。
按一下 [Add] (新增),將新成員加入專案並設定其權限。
在「Add members」(新增成員) 對話方塊中:
- 在「Members」(成員) 專區中輸入使用者或群組的電子郵件地址。
- 在「Select a role」(選取角色) 下拉式選單中,依序點選 [BigQuery] > [BigQuery Admin] (BigQuery 管理員)。
按一下 [Add] (新增)。
gcloud
您可以使用 Google Cloud CLI,將 bigquery.admin 角色授予使用者或群組。
如要在專案的 IAM 政策中新增單一繫結,請輸入下列指令。如要新增使用者,請提供採用 user:user@example.com 格式的 --member 旗標。如要新增群組,請提供採用 group:group@example.com 格式的 --member 旗標。
gcloud projects add-iam-policy-binding project_id \ --member principal:address \ --role roles/bigquery.admin
其中:
- project_id 是您的專案 ID。
- principal 為
group或user。 - address 是使用者或群組的電子郵件地址。
例如:
gcloud projects add-iam-policy-binding myproject \
--member group:group@example.com \
--role roles/bigquery.admin
指令會輸出更新後的政策:
bindings:
- members:
- group:group@example.com
role: roles/bigquery.admin
如要進一步瞭解 BigQuery 中的 IAM 角色,請參閱預先定義的角色與權限一文。
排解移轉設定問題
如要瞭解如何解決 BigQuery 資料移轉服務的問題,請參閱「排解移轉設定問題」。
後續步驟
啟用 BigQuery 資料移轉服務後,請建立資料來源的移轉作業。
- SaaS 平台:
- 行銷平台:
- 付款平台:
- 資料庫和資料倉儲:
- Amazon Redshift
- Apache Hive metastore
- Microsoft SQL Server (預先發布版)
- MySQL
- Oracle
- PostgreSQL
- Snowflake
- Teradata
- 雲端儲存空間:
- Google 服務: