Cloud Storage 會使用Google 管理的服務帳戶 (又稱服務代理程式),將資料移至 Cloud Storage 值區。第一次呼叫 googleServiceAccounts.get
時,系統會建立這個服務代理程式。
目的地 bucket 不必與服務代理程式屬於同一個專案。無論 bucket 位於哪個專案,步驟都相同。
使用者權限
如要授予服務代理必要的權限,您必須具備目的地 bucket 的相關權限:
storage.buckets.getIamPolicy
storage.buckets.setIamPolicy
Storage 舊版值區擁有者角色 (roles/storage.legacyBucketOwner
) 或 Storage 管理員角色 (roles/storage.admin
) 均提供必要權限。
在 Google Cloud 控制台中自動授予權限
如果您使用 Google Cloud 主控台建立轉移作業,並具備使用者權限中列出的權限,系統會自動將必要權限授予目標值區的服務代理。
您可以略過這個頁面上的步驟。如有需要,請設定來源的存取權,然後建立轉移作業。
所需權限
服務代理必須具備目的地 bucket 的下列權限:
權限 | 說明 |
---|---|
storage.buckets.get |
允許服務帳戶取得值區的位置。 |
storage.objects.get |
允許服務帳戶查看物件與物件中繼資料,但不包括 ACL。如果移轉作業設定為在來源和接收器中的物件不同時 [覆寫物件](/storage-transfer/docs/reference/rest/v1/TransferOptions#OverwriteWhen),或一律覆寫物件,則必須提供這項屬性。如果轉移設定為一律覆寫,則不需執行這項操作。 |
storage.objects.create |
允許服務帳戶在值區中加入物件。 |
storage.objects.delete |
允許服務帳戶刪除值區中的物件。
如果將 請注意,如果目的地值區已啟用物件版本管理,則 |
storage.objects.list |
允許服務帳戶列出值區中的物件。如果將 overwriteObjectsAlreadyExistingInSink 設為 false ,或將 deleteObjectsUniqueInSink 設為 true ,則為必要屬性。 |
下列預先定義角色會授予必要權限:
- Storage 舊版值區寫入者 (
roles/storage.legacyBucketWriter
)
此外,如果設定移轉作業時,指定在來源和接收器物件不同時覆寫物件,或一律不覆寫,請將下列預先定義的角色指派給服務代理程式:
- Storage 物件檢視者 (
roles/storage.objectViewer
)
如需 Cloud Storage 角色的完整清單及其權限,請參閱身分與存取權管理角色一文。
授予必要權限
如要將 Storage 舊版 Bucket Writer 和 Storage 物件檢視者角色授予服務代理,請按照下列步驟操作。
尋找服務專員的電子郵件
前往
googleServiceAccounts.get
參考頁面。系統會開啟互動式面板,標題為「試試這個方法」。
在面板的「Request parameters」下方,輸入專案 ID。您在此指定的專案必須是用來管理 Storage Transfer Service 的專案,可能與目的地 bucket 的專案不同。
按一下 [Execute] (執行)。
服務專員的電子郵件地址會以
accountEmail
的值傳回。複製這個值。服務專員的電子郵件地址格式為
project-PROJECT_NUMBER@storage-transfer-service.iam.gserviceaccount.com
。
將服務代理程式新增至 bucket 層級政策
控制台
- 在 Google Cloud 控制台,前往「Cloud Storage bucket」頁面。
針對要將角色授予主體的值區,按一下相應的值區溢位選單 (
)。選擇「編輯存取權」。
按一下「+ 新增主體」按鈕。
在「新增主體」欄位中,輸入服務代理商的帳戶電子郵件地址。
從「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
是您要授予主體存取權的值區名稱。例如:my-bucket
。YOUR_AGENT_EMAIL
是您在「找出服務代理商的電子郵件地址」中複製的代理商帳戶電子郵件地址。
如要授予 Storage Object Viewer
角色,請使用相同指令,但將 roles/storage.legacyBucketWriter
替換為 roles/storage.objectViewer
:
gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \ --member=serviceAccount:YOUR_AGENT_EMAIL --role=roles/storage.objectViewer
程式碼範例
C++
如要瞭解如何安裝及使用 Cloud Storage 的用戶端程式庫,請參閱這篇文章。 詳情請參閱 Cloud Storage C++ API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
C#
如要瞭解如何安裝及使用 Cloud Storage 的用戶端程式庫,請參閱這篇文章。 詳情請參閱 Cloud Storage C# API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
Go
如要瞭解如何安裝及使用 Cloud Storage 的用戶端程式庫,請參閱這篇文章。 詳情請參閱 Cloud Storage Go API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
Java
如要瞭解如何安裝及使用 Cloud Storage 的用戶端程式庫,請參閱這篇文章。 詳情請參閱 Cloud Storage Java API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
Node.js
如要瞭解如何安裝及使用 Cloud Storage 的用戶端程式庫,請參閱這篇文章。 詳情請參閱 Cloud Storage Node.js API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
PHP
如要瞭解如何安裝及使用 Cloud Storage 的用戶端程式庫,請參閱這篇文章。 詳情請參閱 Cloud Storage PHP API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
Python
如要瞭解如何安裝及使用 Cloud Storage 的用戶端程式庫,請參閱這篇文章。 詳情請參閱 Cloud Storage Python API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
Ruby
如要瞭解如何安裝及使用 Cloud Storage 的用戶端程式庫,請參閱這篇文章。 詳情請參閱 Cloud Storage Ruby API 參考說明文件。
如要驗證 Cloud Storage,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
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.googleapis.com/storage/v1/b/BUCKET_NAME/iam"
其中:
JSON_FILE_NAME
是您在步驟 2 建立的檔案路徑。OAUTH2_TOKEN
是您在步驟 1 產生的存取權杖。BUCKET_NAME
是您要授予主體存取權的值區名稱。例如:my-bucket
。
如要進一步瞭解如何將 IAM 角色指派給 Cloud Storage 資源,請參閱 Cloud Storage IAM 說明文件。