免代理程式移轉包括 Cloud Storage 內的移轉,或是從 Amazon S3、Azure Blob 儲存體或 Data Lake Storage Gen2 移轉,或是公開物件的網址清單。不需要移轉代理程式或代理程式集區。
在無代理程式移轉中,如要在雲端供應商之間移轉資料,您必須授予兩個主體權限:
- 建立或管理轉移作業的使用者帳戶。
- Google 管理的服務代理程式,會在您首次與 Storage Transfer Service 互動時自動建立。您可以將服務代理程式權限委派給使用者管理的服務帳戶;詳情請參閱「將服務代理程式權限委派給使用者管理的服務帳戶」。
如要瞭解如何授予 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 Transfer Service 作業的權限。您可以透過下列任一角色授予這些權限:「Storage Transfer 使用者」或「Storage Transfer 管理員」。
此外,帳戶也必須具備擷取 Google 管理的服務代理的權限,才能檢查其權限。
如要設定使用者帳戶或使用者管理的服務帳戶,請授予下列 IAM 權限和角色。
| 角色 / 權限 | 用途 | 附註 |
|---|---|---|
resourcemanager.projects.getIamPolicy |
這項權限用於確認 Google 管理的服務帳戶是否具備轉移作業的必要權限。 | 如要授予這項權限,請授予角色檢視者 (roles/iam.roleViewer) 預先定義的角色,或建立自訂角色並授予這項權限。 |
| 下列其中一個角色: | ||
儲存空間移轉管理員
(roles/storagetransfer.admin)
|
允許所有 Storage 移轉服務作業,包括刪除移轉工作。 | 如需授予權限的詳細清單,請參閱 Storage 移轉服務預先定義的角色。 |
Storage 移轉使用者
(roles/storagetransfer.user)
|
允許使用者建立、取得、更新及列出轉移作業。不允許使用者刪除轉移工作。 | 如需授予權限的詳細清單,請參閱 Storage 移轉服務預先定義的角色。 |
Google 代管的服務代理權限
Storage 移轉服務會使用 Google 代管的服務代理來移轉資料。首次建立移轉工作、呼叫 googleServiceAccounts.get,或在 Google Cloud 控制台中前往工作建立頁面時,系統會自動建立這個服務帳戶。
服務帳戶的格式通常為 project-PROJECT_NUMBER@storage-transfer-service.iam.gserviceaccount.com。如要擷取服務帳戶 ID,請使用 [googleServiceAccounts.get][googleServiceAccounts.get] API 呼叫。
自動指派角色
您可以透過兩種方式,自動將正確的角色指派給服務專員:
使用 Google Cloud 控制台建立轉移作業。控制台會自動套用必要權限。
使用
gcloud transfer authorize --add-missing。請參閱「授予權限最簡單的方法」。
手動指派角色
如要允許服務代理存取完成移轉作業所需的資源,請將下列角色或同等權限指派給服務代理。
| 角色 / 權限 | 用途 | 附註 |
|---|---|---|
Storage 舊版值區寫入者
(roles/storage.legacyBucketWriter)
|
讓 Storage 移轉服務能夠讀取值區中繼資料、列出值區中的物件,以及將物件寫入目標值區。 |
在 Cloud Storage 目的地 bucket 上授予。 Cloud Storage |
Storage 物件檢視者
(roles/storage.objectViewer)
|
允許 Storage 移轉服務從 Cloud Storage 來源複製物件。 並讓 Storage 移轉服務判斷檔案是否已存在於 Cloud Storage 目的地,以及檔案是否已變更。 |
如果您要從 Cloud Storage 移轉,請授予 Cloud Storage 來源 bucket 的存取權。 如果移轉作業設定為在接收器中 [覆寫物件](/storage-transfer/docs/reference/rest/v1/TransferOptions#OverwriteWhen) (如果不同) 或永不覆寫,也請在 Cloud Storage 目的地 bucket 上授予權限。如果轉移設定為一律覆寫,則不需要。 如果情況允許,您可以將角色授予專案層級,讓 Storage 移轉服務從該專案執行。 |
Storage 舊版值區讀取者
(roles/storage.legacyBucketReader)
|
允許 Storage 移轉服務讀取 Cloud Storage 值區中繼資料。 |
如果您要從 Cloud Storage 轉移資料,請授予 Cloud Storage 來源 bucket 的存取權。 Cloud Storage |
如需操作說明,請參閱「授予必要權限」。
委派給使用者代管的服務帳戶
您可以將服務代理程式權限委派給使用者管理的服務帳戶。這樣一來,您就能為不同服務帳戶的轉移作業設定不同的 bucket 權限,不必集中在單一服務代理程式中。
詳情請參閱將服務代理人權限委派給使用者管理的服務帳戶。
跨專案 Cloud Storage 移轉
如要在不同專案的 Cloud Storage 值區之間轉移物件,您必須在來源和目的地值區中,授予單一服務代理程式權限。服務代理屬於您建立移轉作業的專案。
使用者或使用者管理的服務帳戶只需要在建立轉移作業的專案中擁有權限。
如要取得服務專員的電子郵件地址,請參閱「尋找服務專員的電子郵件地址」。
在來源 bucket 中,將下列 bucket 層級的角色授予服務代理:
Storage Legacy Bucket ReaderStorage Object Viewer
在目標 bucket 中,於 bucket 層級將下列角色授予相同的服務代理:
Storage Legacy Bucket Writer
如需在 bucket 層級授予角色的操作說明,請參閱下列頁面:
無法在專案層級授予 Cloud Storage Legacy 角色。
組織限制
如果貴機構已套用機構政策限制,例如網域限制 (constraints/iam.allowedPolicyMemberDomains) 或禁止將服務帳戶附加至其他專案的資源 (constraints/iam.disableCrossProjectServiceAccountUsage),則必須先更新這些限制,才能順利完成跨專案轉移作業。
您可能也需要更新任何 VPC Service Control 設定,才能支援跨專案轉移。請參閱「為雲端物件儲存空間移轉作業設定 VPC Service Controls」。
AWS 和 Microsoft 權限
如果來源檔案位於 AWS S3 或 Microsoft Azure Storage,您也必須設定來源檔案的存取權。下列文件詳細說明瞭必要步驟: