無代理程式移轉權限

無代理程式移轉包括 Cloud Storage 內的移轉,或是從 Amazon S3、Azure Blob 儲存體或 Data Lake Storage Gen2 移轉,或是公開物件的網址清單。不需要轉移代理程式或代理程式集區。

在無代理程式的移轉作業中,如要將資料從一個雲端供應商移轉至另一個,您必須授予兩個主體權限:

如要瞭解如何授予 IAM 角色,請參閱「授予、變更及撤銷資源的存取權」一文。

授予權限最簡單的方法

您可以使用 gcloud CLI,將必要權限授予使用者帳戶和服務代理程式。使用者可透過這些權限建立、編輯及刪除轉移作業,並設定或修改頻寬限制。

如果這些權限對貴機構的政策而言過於廣泛,請參閱本文後續章節,瞭解 Storage 移轉服務所需的最低權限。

如要檢查現有權限並列印任何缺少的角色,請執行下列指令:

gcloud transfer authorize

如要自動套用這些角色,請使用 --add-missing 標記:

gcloud transfer authorize --add-missing

如要將權限授予使用者管理的服務帳戶,而非使用者,請傳送服務帳戶金鑰檔案:

gcloud transfer authorize --add-missing --creds-file=path/to/key.json

這項指令會授予下列權限。

  • 使用者 / 使用者管理的服務帳戶:

    • roles/owner
    • roles/storagetransfer.admin
    • roles/storagetransfer.transferAgent
    • roles/storage.objectAdmin
    • roles/pubsub.editor
  • 服務代理:

    • roles/storage.admin
    • roles/storagetransfer.serviceAgent

如需安裝 gcloud CLI 的操作說明,請參閱 gcloud 快速入門導覽課程

使用者帳戶權限

使用者帳戶必須具備執行 Storage 移轉服務 作業的權限。您可以透過下列任一角色授予這些權限:「Storage Transfer 使用者」或「Storage Transfer 管理員」

此外,帳戶也需要有權擷取服務代理程式,才能檢查其權限。

如要設定使用者帳戶或使用者管理的服務帳戶,請授予下列 IAM 權限和角色。

角色 / 權限 用途 附註
resourcemanager.projects.getIamPolicy 這項權限用於確認服務代理是否具備轉移作業所需的權限。 如要授予這項權限,請授予角色檢視者 (roles/iam.roleViewer) 預先定義的角色,或建立具備這項單一權限的自訂角色,然後授予該自訂角色。
下列其中一個角色:
儲存空間轉移管理員 (roles/storagetransfer.admin) 允許所有 Storage 移轉服務作業,包括刪除移轉工作。 如需授予權限的詳細清單,請參閱 Storage 移轉服務預先定義的角色
Storage Transfer User (roles/storagetransfer.user) 允許使用者建立、取得、更新及列出轉移作業。不允許使用者刪除轉移工作。 如需授予權限的詳細清單,請參閱 Storage 移轉服務預先定義的角色

服務代理權限

Storage 移轉服務會使用服務代理程式來移動資料。首次建立移轉工作、呼叫 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 legacy 角色只能在 bucket 層級授予。

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 legacy 角色只能在 bucket 層級授予。

如需操作說明,請參閱「授予必要權限」。

委派給使用者代管的服務帳戶

您可以將服務代理程式權限委派給使用者管理的服務帳戶。這樣一來,您就能為不同服務帳戶的轉移作業分別設定 Bucket 權限,不必集中在單一服務代理程式中。

詳情請參閱「將服務代理人權限委派給使用者管理的服務帳戶」。

跨專案 Cloud Storage 移轉

如要在不同專案的 Cloud Storage bucket 之間轉移物件,您必須在來源 bucket 和目的地 bucket 中,將權限授予單一服務代理程式。服務代理屬於您建立轉移作業的專案。

使用者或使用者管理的服務帳戶只需要建立轉移作業的專案權限。

如要取得服務專員的電子郵件地址,請參閱「尋找服務專員的電子郵件地址」。

在來源 bucket 中,將下列 bucket 層級的角色授予服務代理:

  • Storage 舊版值區讀取者 (roles/storage.legacyBucketReader)
  • Storage 物件檢視者 (roles/storage.objectViewer)

在目標 bucket 中,將 bucket 層級的下列角色授予相同的服務代理:

  • Storage 舊版值區寫入者 (roles/storage.legacyBucketWriter)
  • 此外,如果設定的轉移作業是覆寫接收器中的物件 (如果物件不同),或永不覆寫,則需要Storage 物件檢視者 (roles/storage.objectViewer)

如需在 bucket 層級授予角色的操作說明,請參閱下列頁面:

無法在專案層級授予 Cloud Storage Legacy 角色。

組織限制

如果貴機構已套用機構政策限制,例如網域限制 (constraints/iam.allowedPolicyMemberDomains) 或禁止將服務帳戶附加至其他專案的資源 (constraints/iam.disableCrossProjectServiceAccountUsage),則必須先更新這些限制,才能順利完成跨專案轉移作業。

您可能也需要更新任何 VPC Service Control 設定,才能支援跨專案轉移。請參閱「為雲端物件儲存空間移轉作業設定 VPC Service Controls」。

AWS 和 Microsoft 權限

如果來源檔案位於 AWS S3 或 Microsoft Azure Storage,您也必須設定來源檔案的存取權。下列文件詳細說明瞭必要步驟: