Cloud Storage 會使用服務代理將資料移至 Cloud Storage bucket。首次呼叫 googleServiceAccounts.get 時,系統會建立這個服務代理。
目的地 bucket 不必與服務代理屬於相同專案。無論 bucket 位於哪個專案,步驟都相同。
使用者權限
如要將必要權限授予服務代理,您必須具備目的地 bucket 的相關權限:
storage.buckets.getIamPolicystorage.buckets.setIamPolicy
Storage 舊版 bucket 擁有者角色 (roles/storage.legacyBucketOwner) 或 Storage 管理員角色 (roles/storage.admin) 可提供必要權限。
在 Cloud de Confiance 控制台中自動授予權限
如果您使用 Cloud de Confiance 控制台建立移轉作業,且具備「使用者授權」中列出的權限,系統會自動授予服務代理目標 bucket 的必要權限。
您可以略過本頁步驟。如有需要,請設定來源存取權,然後建立移轉作業。
所需權限
服務代理必須具備目的地 bucket 的下列權限:
| 權限 | 說明 |
|---|---|
storage.buckets.get |
允許服務帳戶取得值區的位置。 |
storage.objects.get |
允許服務帳戶查看物件和中繼資料 (不含 ACL)。如果移轉作業設為在不同或任何情況下,[覆寫接收端中的物件](/storage-transfer/docs/reference/rest/v1/TransferOptions#OverwriteWhen),則必須提供這項資訊。如果轉移作業設定為一律覆寫,則不需提供這項資訊。 |
storage.objects.create |
允許服務帳戶在值區中加入物件。 |
storage.objects.delete |
允許服務帳戶刪除 bucket 中的物件。
如果將 請注意,如果目的地 bucket 已啟用物件版本管理功能,則 |
storage.objects.list |
允許服務帳戶列出 bucket 中的物件。如果將 overwriteObjectsAlreadyExistingInSink 設為 false,或將 deleteObjectsUniqueInSink 設為 true,則必須提供這項屬性。 |
下列預先定義的角色可授予必要權限:
- Storage 舊版值區寫入者 (
roles/storage.legacyBucketWriter)
此外,如果移轉設定為在接收器覆寫不同的物件,或一律不覆寫,請將下列預先定義的角色指派給服務代理:
- Storage 物件檢視者 (
roles/storage.objectViewer)
如需 Cloud Storage 角色的完整清單及其權限,請參閱身分與存取權管理角色一文。
授予必要權限
如要將「Storage Legacy Bucket Writer」(Storage 舊版 bucket 寫入者) 和「Storage Object Viewer」(Storage 物件檢視者) 角色授予服務代理,請按照下列步驟操作。
找出服務代理的電子郵件地址
前往
googleServiceAccounts.get參考資料頁面。標題為「試用這個方法」的互動式面板會隨即開啟。
在面板的「Request parameters」(要求參數) 下方,輸入專案 ID。您在此指定的專案必須是用來管理 Storage 移轉服務的專案,可能與目的地 bucket 的專案不同。
點選「Execute」。
服務代理的電子郵件會以
accountEmail的值傳回。複製這個值。服務代理的電子郵件格式為
project-PROJECT_NUMBER@storage-transfer-service.s3ns-system.iam.gserviceaccount.com。
將服務代理新增至 bucket 層級政策
控制台
- 前往 Cloud de Confiance 控制台的「Cloud Storage bucket」頁面。
按一下與要授予主體角色的 bucket 相關聯的「Bucket overflow」(Bucket 溢位) 選單 ()。
選擇「編輯權限」。
按一下「+ 新增主體」按鈕。
在「New principals」(新增主體) 欄位中,輸入服務代理的帳戶電子郵件。
從「Select a role」(選取角色) 下拉式選單中選取「
Storage Legacy Bucket Writer」。按一下 [儲存]。
如果移轉作業設定為在物件不同時覆寫接收端中的物件,或一律不覆寫,請重複上述步驟,新增
Storage Object Viewer角色。
gcloud
使用 gcloud storage buckets add-iam-policy-binding 指令:
gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \ --member=serviceAccount:YOUR_AGENT_EMAIL --role=roles/storage.legacyBucketWriter
更改下列內容:
BUCKET_NAME是要授予主體存取權的 bucket 名稱。例如:my-bucket。YOUR_AGENT_EMAIL是您在「找出服務代理的電子郵件」中複製的代理帳戶電子郵件。
如要為設定為覆寫接收器中物件 (如果不同或從未覆寫) 的移轉設定授予 Storage Object Viewer 角色,請執行下列操作:
gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \ --member=serviceAccount:YOUR_AGENT_EMAIL --role=roles/storage.objectViewer
程式碼範例
C++
如要瞭解如何安裝及使用 Cloud Storage 的用戶端程式庫,請參閱「Cloud Storage 用戶端程式庫」。詳情請參閱 Cloud Storage C++ API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
C#
如要瞭解如何安裝及使用 Cloud Storage 的用戶端程式庫,請參閱「Cloud Storage 用戶端程式庫」。詳情請參閱 Cloud Storage C# API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Go
如要瞭解如何安裝及使用 Cloud Storage 的用戶端程式庫,請參閱「Cloud Storage 用戶端程式庫」。詳情請參閱 Cloud Storage Go API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Java
如要瞭解如何安裝及使用 Cloud Storage 的用戶端程式庫,請參閱「Cloud Storage 用戶端程式庫」。詳情請參閱 Cloud Storage Java API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Node.js
如要瞭解如何安裝及使用 Cloud Storage 的用戶端程式庫,請參閱「Cloud Storage 用戶端程式庫」。詳情請參閱 Cloud Storage Node.js API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
PHP
如要瞭解如何安裝及使用 Cloud Storage 的用戶端程式庫,請參閱「Cloud Storage 用戶端程式庫」。詳情請參閱 Cloud Storage PHP API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Python
如要瞭解如何安裝及使用 Cloud Storage 的用戶端程式庫,請參閱「Cloud Storage 用戶端程式庫」。詳情請參閱 Cloud Storage Python API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Ruby
如要瞭解如何安裝及使用 Cloud Storage 的用戶端程式庫,請參閱「Cloud Storage 用戶端程式庫」。詳情請參閱 Cloud Storage Ruby API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
執行程式碼範例前,請將 GOOGLE_CLOUD_UNIVERSE_DOMAIN 環境變數設為 s3nsapis.fr。
Rust
JSON
安裝並初始化 gcloud CLI,以便為
Authorization標頭產生存取權杖。建立含有以下資訊的 JSON 檔案:
{ "bindings":[ { "role": "roles/storage.legacyBucketWriter", "members":[ "YOUR_AGENT_EMAIL" ] }, { "role": "roles/storage.objectViewer", "members":[ "YOUR_AGENT_EMAIL" ] } ] }
更改下列內容:
YOUR_AGENT_EMAIL是您在「找出服務代理的電子郵件地址」中複製的代理帳戶電子郵件地址。
使用
cURL來透過PUT setIamPolicy要求呼叫呼叫 JSON API:curl -X PUT --data-binary @JSON_FILE_NAME \ -H "Authorization: Bearer OAUTH2_TOKEN" \ -H "Content-Type: application/json" \ "https://storage.s3nsapis.fr/storage/v1/b/BUCKET_NAME/iam"
更改下列內容:
JSON_FILE_NAME是您在步驟 2 建立的檔案路徑。OAUTH2_TOKEN是您在步驟 1 產生的存取權杖。BUCKET_NAME是要授予主體存取權的 bucket 名稱。例如:my-bucket。
如要進一步瞭解如何將 IAM 角色指派給 Cloud Storage 資源,請參閱 Cloud Storage IAM 說明文件。