建立以代理程式為基礎的移轉作業前,您必須為下列實體設定權限:
用於建立轉移作業的使用者或使用者管理的服務帳戶。這是登入 Google Cloud 控制台的帳戶,或是向
gcloudCLI 進行驗證時指定的帳戶。使用者帳戶可以是一般使用者帳戶,也可以是使用者管理的服務帳戶。Storage 移轉服務使用的Google 代管服務帳戶 (又稱服務代理程式)。這類帳戶通常會以電子郵件地址識別,格式為
project-PROJECT_NUMBER@storage-transfer-service.iam.gserviceaccount.com。轉移代理程式帳戶:為轉移代理程式提供 Google Cloud 權限。移轉代理程式帳戶會使用安裝代理程式的使用者憑證,或使用者代管服務帳戶的憑證進行驗證。
如要進一步瞭解如何授予 IAM 角色,請參閱授予、變更及撤銷資源的存取權。
授予權限最簡單的方法
您可以使用 gcloud CLI,將必要權限授予使用者 / 使用者管理的服務帳戶和 Google 管理的服務帳戶。使用者可透過這些權限建立、編輯及刪除轉移作業,並設定或修改頻寬限制。
如果這些權限對貴機構的政策而言過於廣泛,請參閱本文後續章節,瞭解 Storage 移轉服務所需的最低權限。
如要檢查現有權限並列印任何缺少的角色,請執行下列指令:
gcloud transfer authorize
如要自動套用這些角色,請使用 --add-missing 標記:
gcloud transfer authorize --add-missing
如要將權限授予使用者管理的服務帳戶,請傳遞服務帳戶金鑰檔案:
gcloud transfer authorize --add-missing --creds-file=path/to/key.json
如需建立服務帳戶的操作說明,請參閱「建立及管理服務帳戶」。
這項指令會授予下列權限。
對使用者 / 使用者管理的服務帳戶:
roles/ownerroles/storagetransfer.adminroles/storagetransfer.transferAgentroles/storage.objectAdminroles/pubsub.editor
Google 代管的服務帳戶:
roles/storage.adminroles/storagetransfer.serviceAgent
如需安裝 gcloud CLI 的操作說明,請參閱 gcloud 快速入門導覽課程。
使用者或使用者代管服務帳戶的權限
本節說明管理及執行轉移作業的帳戶所需角色。貴機構的需求會決定每個角色的確切角色;本節假設您將建立管理員和使用者。
管理員帳戶
Storage 移轉服務管理員帳戶可管理移轉代理程式、設定頻寬用量上限,以及刪除移轉工作。
如要設定管理員帳戶,請指派下列 IAM 權限和角色:
| 角色 / 權限 | 用途 | 附註 |
|---|---|---|
resourcemanager.projects.getIamPolicy |
這項權限用於確認 Google 管理的服務帳戶是否具備轉移作業的必要權限。 | 如要授予這項權限,請授予角色檢視者 (roles/iam.roleViewer) 預先定義的角色,或建立自訂角色並授予這項權限。 |
儲存空間移轉管理員
(roles/storagetransfer.admin)
|
在轉移專案中啟用管理動作,例如專案設定和代理程式監控。 | 如需授予權限的詳細清單,請參閱 Storage 移轉服務預先定義的角色。 |
使用者帳戶
Storage 移轉服務使用者帳戶可用於建立及執行移轉作業。這類帳戶通常無法刪除移轉工作。
使用者帳戶可以是 Google Cloud 控制台使用者或服務帳戶。如果您使用服務帳戶,將憑證傳遞至 Storage Transfer Service 的方法會因介面而異。
如要設定使用者帳戶,請將下列權限和角色指派給該帳戶:
| 角色 / 權限 | 用途 | 附註 |
|---|---|---|
resourcemanager.projects.getIamPolicy |
用於確認 Google 代管服務帳戶是否具備轉移作業所需的 Pub/Sub 權限。 | 如要授予這項權限,請授予角色檢視者 (roles/iam.roleViewer) 預先定義的角色,或建立自訂角色並授予這項權限。 |
Storage 移轉使用者
(roles/storagetransfer.user)
|
可讓使用者建立、取得、更新及列出轉移作業。 | 如需授予權限的詳細清單,請參閱 Storage 移轉服務預先定義的角色。 |
Google 代管服務帳戶的權限
Storage 移轉服務會使用 Google 管理的服務帳戶來移轉資料。首次建立轉移工作、呼叫 googleServiceAccounts.get,或前往Google Cloud 控制台中的工作建立頁面時,系統會自動建立這個服務帳戶。
服務帳戶的格式通常為 project-PROJECT_NUMBER@storage-transfer-service.iam.gserviceaccount.com。如要擷取服務帳戶 ID,請使用
googleServiceAccounts.get API 呼叫。
自動指派角色
您可以透過下列兩種方式,自動將正確的角色指派給 Google 管理的服務帳戶:
使用 Google Cloud 控制台建立轉移作業。控制台會自動套用必要權限。
使用
gcloud transfer authorize --add-missing。請參閱「授予權限最簡單的方法」。
手動指派角色
如要允許 Google 管理的服務帳戶存取完成移轉作業所需的資源,請將下列角色或同等權限指派給服務帳戶。
| 角色 / 權限 | 用途 | 附註 |
|---|---|---|
儲存空間物件建立者
(roles/storage.objectCreator)
|
允許 Storage 移轉服務在連結至這項移轉作業的 Cloud Storage 值區中,建立移轉記錄。 |
授予移轉作業中使用的所有 Cloud Storage 值區。如果情況允許,您可以將角色授予 Storage 移轉服務執行的專案, 如需這些角色授予的權限詳細清單,請參閱 Cloud Storage 預先定義的角色。 |
Storage 物件檢視者
(roles/storage.objectViewer)
|
讓 Storage 移轉服務判斷檔案是否已移轉至或移出 Cloud Storage。 | |
Storage 移轉服務代理程式
(roles/storagetransfer.serviceAgent)
|
允許 Storage 移轉服務自動建立及修改 Pub/Sub 主題,以便從 Google Cloud 與移轉代理程式通訊。 |
在專案層級將角色套用至 Storage Transfer Service 執行的專案。 如要查看這個角色授予的權限詳細清單,請參閱「權限和角色」。 |
Storage 舊版值區讀取者
(roles/storage.legacyBucketReader)
|
允許 Storage 移轉服務讀取 Cloud Storage 值區中繼資料。 |
授予轉移作業中使用的每個 Cloud Storage 值區。 Cloud Storage |
如需操作說明,請參閱「授予必要權限」。
轉移代理商帳戶權限
Storage 移轉服務移轉代理程式可透過使用者帳戶或服務帳戶執行。
如要設定移轉代理程式服務帳戶或執行移轉代理程式的使用者帳戶,請指派下列角色:
| 角色 / 權限 | 用途 | 附註 |
|---|---|---|
Storage Transfer Agent
(roles/storagetransfer.transferAgent)
|
授予轉移代理程式完成轉移作業所需的 Storage 移轉服務和 Pub/Sub 權限。 |
將這個角色授予代理程式使用的使用者或服務帳戶。
如要查看這個角色授予的權限詳細清單,請參閱 使用 IAM 控管存取權。 |
來源和目的地權限
此外,請務必確認代理程式帳戶具備存取來源資料和寫入目的地的適當權限。
從檔案系統、與 S3 相容的儲存空間或 HDFS 遷移至 Cloud Storage
如果移轉目的地是 Cloud Storage 值區,移轉代理程式需要目的地值區的下列權限。如需操作說明,請參閱「將主體新增至值區層級政策」。
| 權限 | 說明 |
|---|---|
storage.objects.create |
允許代理程式帳戶在移轉期間寫入 Cloud Storage 物件。 |
storage.objects.get |
允許代理程式帳戶讀取物件資料和中繼資料。 |
storage.objects.list |
允許代理程式帳戶列出 Cloud Storage 值區中的物件。 |
storage.objects.delete |
如果轉移作業設定為覆寫或刪除接收端中的物件,則為必填屬性。舉例來說,如果轉移作業的
transferOptions 設定中已設定 overwriteObjectsAlreadyExistingInSink
或 deleteObjectsUniqueInSink。 |
如要授予這些權限,請授予下列角色:
- Storage 物件管理員 (
roles/storage.objectAdmin)
或者,建立具備特定權限的自訂角色,然後授予該角色。
必須具備其他權限,才能啟用多部分上傳。
Cloud Storage 至檔案系統
如果移轉來源是 Cloud Storage 值區,移轉代理程式需要來源值區的下列權限。
| 權限 | 說明 |
|---|---|
storage.objects.create |
允許代理程式帳戶將移轉記錄和移轉相關中繼資料寫入 Cloud Storage 來源 bucket。 |
storage.objects.get |
允許代理程式帳戶讀取物件資料和中繼資料。 |
storage.objects.list |
允許代理程式帳戶列出 Cloud Storage 值區中的物件。 |
storage.objects.delete |
如果設定移轉作業時,選擇從來源刪除物件,就必須提供這項資訊。詳情請參閱
deleteObjectsFromSourceAfterTransfer。 |
如要授予這項權限,請授予下列角色:
- Storage 物件檢視者 (
roles/storage.objectViewer)
或者,建立具備單一權限的自訂角色,然後授予該角色。
檔案系統對檔案系統
如果要在兩個檔案系統之間轉移資料,轉移代理程式必須具備中繼值區的下列權限。
| 權限 | 說明 |
|---|---|
storage.objects.create |
允許代理程式帳戶在移轉期間寫入 Cloud Storage 物件。 |
storage.objects.get |
允許代理程式帳戶讀取物件資料和中繼資料。 |
storage.objects.list |
允許代理程式帳戶列出 Cloud Storage 值區中的物件。 |
storage.objects.delete |
如果設定轉移作業時,指定在轉移完成後刪除中繼值區中的物件,則此為必填屬性。 |
如要授予這些權限,請授予下列角色:
- Storage 物件管理員 (
roles/storage.objectAdmin)
或者,建立具備特定權限的自訂角色,然後授予該角色。
必須具備其他權限,才能啟用多部分上傳。
多部分上傳
如要為檔案系統到 Cloud Storage 的移轉作業或檔案系統之間的移轉作業啟用多部分上傳功能,請額外授予代理程式下列權限。
- 如要將資料移轉至 Cloud Storage,請將權限指派給目的地 bucket。
- 如要在檔案系統之間轉移資料,請將權限指派給中繼值區。
| 多部分上傳權限名稱 | 說明 |
|---|---|
storage.multipartUploads.create |
分批上傳物件。 |
storage.multipartUploads.abort |
取消多部分上傳工作階段。 |
storage.multipartUploads.listParts |
列出多部分上傳工作階段中已上傳的物件部分。 |
storage.multipartUploads.list |
列出值區中的多部分上傳工作階段。 |
如要授予這些權限,請授予下列角色:
- Storage 物件管理員 (
roles/storage.objectAdmin)
或者,建立具備特定權限的自訂角色,然後授予該角色。