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 |
允許服務代理取得 bucket 的位置。 |
storage.objects.list |
允許服務代理列出 bucket 中的物件。 |
storage.objects.get |
允許服務代理讀取 bucket 中的物件。 |
storage.objects.create |
允許服務代理在 bucket 中建立物件。如要移轉至檔案系統,則為必要項目。 Storage 移轉服務會在來源 bucket 中建立並填入兩個資料夾: |
storage.objects.delete |
允許服務代理刪除 bucket 中的物件。如果將 deleteObjectsFromSourceAfterTransfer 設為 true,則必須提供這項屬性。 |
storage.objects.getIamPolicy |
允許服務代理讀取來源物件的 ACL。如果已啟用物件 ACL 保留功能 (ACL_PRESERVE),則為必填。 |
下列預先定義的角色會共同授予必要權限:
- 擇一採用下列格式:
- 如果轉移至其他 Cloud Storage bucket,則為 Storage 物件檢視者 (
roles/storage.objectViewer)。 - 如果轉移至檔案系統,則為 Storage 物件建立者 (
roles/storage.objectCreator)。
- 如果轉移至其他 Cloud Storage bucket,則為 Storage 物件檢視者 (
- 加上下列其中一項:
- 如果需要物件刪除權限,請使用 Storage 舊版 bucket 寫入者 (
roles/storage.legacyBucketWriter)。 - 如果不需要物件刪除權限,則為 Storage 舊版值區讀取者 (
roles/storage.legacyBucketReader)。
- 如果需要物件刪除權限,請使用 Storage 舊版 bucket 寫入者 (
- 此外,如果使用
ACL_PRESERVE保留物件 ACL:- Storage 舊版物件擁有者 (
roles/storage.legacyObjectOwner)
- Storage 舊版物件擁有者 (
標示為 legacy 角色的任何 Cloud Storage 角色,只能在 bucket 層級授予。
如需 Cloud 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 Object Viewer」或「Storage Object Creator」。按一下 [Add another role] (新增其他角色)。
選取「
Storage Legacy Bucket Writer」或「Storage Legacy Bucket Reader」。按一下 [儲存]。
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.objectViewer
gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \ --member=serviceAccount:YOUR_AGENT_EMAIL --role=roles/storage.legacyBucketReader
更改下列內容:
BUCKET_NAME是您要授予主體存取權的 bucket 名稱。例如:my-bucket。YOUR_AGENT_EMAIL是您在「找出服務代理的電子郵件」中複製的代理帳戶電子郵件。
程式碼範例
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.objectViewer", "members":[ "YOUR_AGENT_EMAIL" ] }, { "role": "roles/storage.legacyBucketReader", "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。