無代理程式轉移權限

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

在無代理程式移轉作業中,如果要在雲端供應商之間移轉資料,您必須向兩個主要實體授予權限:

如要瞭解如何授予 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/owner
    • roles/storagetransfer.admin
    • roles/storagetransfer.transferAgent
    • roles/storage.objectAdmin
    • roles/pubsub.editor
  • 給 Google 代管的服務代理:

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

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

使用者帳戶權限

使用者帳戶必須具備執行儲存空間移轉服務作業的權限。這類權限會透過以下兩個角色授予: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 目的地值區的權限。

Cloud Storage legacy 角色只能在值區層級授予。

Storage 物件檢視器 (roles/storage.objectViewer)

讓 Storage 移轉服務從 Cloud Storage 來源複製物件。

也能讓 Storage 移轉服務判斷 Cloud Storage 目標中是否已存在檔案,以及檔案是否已變更。

如果您是從 Cloud Storage 進行轉移,請授權 Cloud Storage 來源值區。

如果移轉作業已設定為在接收器中覆寫物件 (/storage-transfer/docs/reference/rest/v1/TransferOptions#OverwriteWhen) 或永不覆寫,請一併授予 Cloud Storage 目的地值區的權限。如果轉移設定為一律覆寫,則不需要這項資訊。

如果情況允許,您可以將專案層級的角色授予 Storage 移轉服務執行所在的專案。

Storage 舊版值區讀取器 (roles/storage.legacyBucketReader) 允許 Storage 移轉服務讀取 Cloud Storage 值區的結構描述資料。

如果您是從 Cloud Storage 進行轉移,請授權 Cloud Storage 來源值區。

Cloud Storage legacy 角色只能在值區層級授予。

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

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

您可以將服務代理程式權限委派給使用者管理的服務帳戶。這樣一來,您就能在各服務帳戶中為不同的轉移工作區分權限,而不會將權限集中在單一服務代理中。

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

跨專案 Cloud Storage 移轉

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

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

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

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

  • Storage Legacy Bucket Reader
  • Storage Object Viewer

在目的地值區中,將下列角色授予相同的服務代理:

  • 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 中,您也必須設定存取權。下列文件詳細說明必要步驟: