本頁面說明如何設定儲存貯體的 Identity and Access Management (IAM) 政策,控管儲存貯體內物件和代管資料夾的存取權。
如要瞭解其他存取控管方法,請參閱下列資源:
如要瞭解如何更精細地控管物件群組,請參閱「設定及管理代管資料夾的 IAM 政策」。
如要瞭解控管值區中個別物件存取權的其他方法,請參閱「存取控管清單」。
如要進一步瞭解如何控管 Cloud Storage 資源的存取權,請參閱「存取控管總覽」。
必要的角色
如要取得設定及管理 bucket IAM 政策所需的權限,請要求管理員授予您 bucket 的 Storage 管理員 (roles/storage.admin) IAM 角色。
這個角色包含下列權限,可用於設定及管理 bucket 的 IAM 政策:
storage.buckets.getstorage.buckets.getIamPolicystorage.buckets.setIamPolicystorage.buckets.updatestorage.buckets.list- 只有在您打算使用Google Cloud 控制台執行本頁工作時,才需要這項權限。
您也可以透過自訂角色取得這些權限。
將主體新增至 bucket 層級政策
如要查看與 Cloud Storage 相關聯的角色清單,請參閱「IAM 角色」。如要瞭解可授予 IAM 角色的實體,請參閱「主體 ID」。
控制台
- 前往 Google Cloud 控制台的「Cloud Storage bucket」頁面。
在 bucket 清單中,點選要授予主體角色的 bucket 名稱。
選取靠近頁面上方的 [Permissions] (權限) 分頁標籤。
按一下 add_box「Grant access」(授予存取權) 按鈕。
畫面上會顯示「Add principals」(新增主體) 對話方塊。
在「New principals」(新增主體) 欄位中,輸入一或多個需要存取 bucket 的身分。
從「Select a role」(選取角色) 下拉式選單中選取一或多個角色。 面板中會顯示選取的角色,並針對這些角色授予的權限提供簡短說明。
按一下 [儲存]。
如要瞭解如何在 Google Cloud 控制台中取得 Cloud Storage 作業失敗的詳細錯誤資訊,請參閱「疑難排解」。
指令列
使用 buckets add-iam-policy-binding 指令:
gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME --member=PRINCIPAL_IDENTIFIER --role=IAM_ROLE
其中:
用戶端程式庫
C++
詳情請參閱 Cloud Storage C++ API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
C#
詳情請參閱 Cloud Storage C# API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
Go
詳情請參閱 Cloud Storage Go API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
Java
詳情請參閱 Cloud Storage Java API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
Node.js
詳情請參閱 Cloud Storage Node.js API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
PHP
詳情請參閱 Cloud Storage PHP API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
Python
詳情請參閱 Cloud Storage Python API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
Ruby
詳情請參閱 Cloud Storage Ruby API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
Rust
REST API
JSON
安裝並初始化 gcloud CLI,以便為
Authorization標頭產生存取權杖。建立含有以下資訊的 JSON 檔案:
{ "bindings":[ { "role": "IAM_ROLE", "members":[ "PRINCIPAL_IDENTIFIER" ] } ] }
其中:
使用
cURL來透過PUT setIamPolicy要求呼叫呼叫 JSON API:curl -X PUT --data-binary @JSON_FILE_NAME \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/iam"
其中:
JSON_FILE_NAME是您在步驟 2 建立的檔案路徑。BUCKET_NAME是要授予主體存取權的 bucket 名稱。例如:my-bucket。
查看 bucket 的 IAM 政策
控制台
- 前往 Google Cloud 控制台的「Cloud Storage bucket」頁面。
在 bucket 清單中,按一下要查看政策的 bucket 名稱。
前往「Bucket details」(值區詳細資料) 頁面,點選「Permissions」(權限) 分頁標籤。
適用於 bucket 的 IAM 政策會顯示在「Permissions」(權限) 部分。
選用:使用「篩選器」列篩選結果。
如果依主體搜尋,結果會顯示主體獲派的每個角色。
指令列
使用 buckets get-iam-policy 指令:
gcloud storage buckets get-iam-policy gs://BUCKET_NAME
其中 BUCKET_NAME 是要查看 IAM 政策的 bucket 名稱。例如:my-bucket。
用戶端程式庫
C++
詳情請參閱 Cloud Storage C++ API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
C#
詳情請參閱 Cloud Storage C# API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
Go
詳情請參閱 Cloud Storage Go API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
Java
詳情請參閱 Cloud Storage Java API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
Node.js
詳情請參閱 Cloud Storage Node.js API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
PHP
詳情請參閱 Cloud Storage PHP API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
Python
詳情請參閱 Cloud Storage Python API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
Ruby
詳情請參閱 Cloud Storage Ruby API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
Rust
REST API
JSON
安裝並初始化 gcloud CLI,以便為
Authorization標頭產生存取權杖。使用
cURL來透過GET getIamPolicy要求呼叫呼叫 JSON API:curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/iam"
其中
BUCKET_NAME是要查看 IAM 政策的 bucket 名稱。例如:my-bucket。
從 bucket 層級政策中移除主體
控制台
- 前往 Google Cloud 控制台的「Cloud Storage bucket」頁面。
在 bucket 清單中,點選要移除主體角色的 bucket 名稱。
前往「Bucket details」(值區詳細資料) 頁面,點選「Permissions」(權限) 分頁標籤。
適用於 bucket 的 IAM 政策會顯示在「Permissions」(權限) 部分。
在「View by principals」(按照主體查看) 分頁中,勾選要移除的主體核取方塊。
按一下「- 移除存取權」按鈕。
在隨即顯示的疊加視窗中,按一下「確認」。
如要瞭解如何在 Google Cloud 控制台中取得 Cloud Storage 作業失敗的詳細錯誤資訊,請參閱「疑難排解」。
指令列
使用 buckets remove-iam-policy-binding 指令:
gcloud storage buckets remove-iam-policy-binding gs://BUCKET_NAME --member=PRINCIPAL_IDENTIFIER --role=IAM_ROLE
其中:
用戶端程式庫
C++
詳情請參閱 Cloud Storage C++ API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
C#
詳情請參閱 Cloud Storage C# API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
Go
詳情請參閱 Cloud Storage Go API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
Java
詳情請參閱 Cloud Storage Java API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
Node.js
詳情請參閱 Cloud Storage Node.js API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
PHP
詳情請參閱 Cloud Storage PHP API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
Python
詳情請參閱 Cloud Storage Python API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
Ruby
詳情請參閱 Cloud Storage Ruby API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
Rust
REST API
JSON
安裝並初始化 gcloud CLI,以便為
Authorization標頭產生存取權杖。取得套用至 bucket 的現有政策。方法是使用
cURL透過GET getIamPolicy要求呼叫 JSON API:curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/iam"
其中
BUCKET_NAME是要查看 IAM 政策的 bucket 名稱。例如:my-bucket。建立 JSON 檔案,並加入上一步擷取的政策。
編輯 JSON 檔案,從政策中移除主體。
使用
cURL來透過PUT setIamPolicy要求呼叫呼叫 JSON API:curl -X PUT --data-binary @JSON_FILE_NAME \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/iam"
其中:
JSON_FILE_NAME是您在步驟 3 建立的檔案路徑。BUCKET_NAME是要移除存取權的 bucket 名稱。例如:my-bucket。
對 bucket 使用 IAM 條件
以下各節說明如何在 bucket 中新增及移除 IAM 條件。如要查看 bucket 的 IAM 條件,請參閱「查看 bucket 的 IAM 政策」。如要進一步瞭解如何搭配使用 IAM 條件與 Cloud Storage,請參閱「條件」。
您必須先在 bucket 上啟用統一 bucket 層級存取權,才能新增條件。
為 bucket 設定新條件
控制台
- 前往 Google Cloud 控制台的「Cloud Storage bucket」頁面。
在 bucket 清單中,按一下要新增條件的 bucket 名稱。
前往「Bucket details」(值區詳細資料) 頁面,點選「Permissions」(權限) 分頁標籤。
適用於 bucket 的 IAM 政策會顯示在「Permissions」(權限) 部分。
點選「+ 授予存取權」。
在「New principals」(新增主體) 部分,填寫要授予 bucket 存取權的主體。
針對要套用條件的每個角色:
選取要授予主體的角色。
按一下「新增條件」,開啟「編輯條件」表單。
填寫條件的「Title」(名稱)。「Description」(說明) 欄位為選填。
使用「條件建構工具」以視覺化方式建構條件,或使用「條件編輯器」分頁輸入 CEL 運算式。
按一下「儲存」,返回「新增主體」表單。如要新增多個角色,請按一下「Add another role」(新增其他角色)。
按一下 [儲存]。
如要瞭解如何在 Google Cloud 控制台中取得 Cloud Storage 作業失敗的詳細錯誤資訊,請參閱「疑難排解」。
指令列
建立 JSON 或 YAML 檔案來定義條件,包括條件的
title、條件的屬性型邏輯expression,以及條件的description(選用)。使用
buckets add-iam-policy-binding指令,並加上--condition-from-file旗標:
gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME --member=PRINCIPAL_IDENTIFIER --role=IAM_ROLE --condition-from-file=CONDITION_FILE
其中:
BUCKET_NAME是您要授予主體存取權的 bucket 名稱。例如:my-bucket。PRINCIPAL_IDENTIFIER則會指出條件適用的對象。例如,user:jeffersonloveshiking@gmail.com。如需主體 ID 格式清單,請參閱「主體 ID」。IAM_ROLE是您要授予主體的 IAM 角色。例如:roles/storage.objectViewer。CONDITION_FILE是您在上一個步驟中建立的檔案。
或者,您也可以使用 --condition 旗標 (而非 --condition-from-file 旗標),直接在指令中加入條件。
用戶端程式庫
C++
詳情請參閱 Cloud Storage C++ API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
C#
詳情請參閱 Cloud Storage C# API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
Go
詳情請參閱 Cloud Storage Go API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
Java
詳情請參閱 Cloud Storage Java API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
Node.js
詳情請參閱 Cloud Storage Node.js API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
PHP
詳情請參閱 Cloud Storage PHP API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
Python
詳情請參閱 Cloud Storage Python API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
Ruby
詳情請參閱 Cloud Storage Ruby API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
Rust
REST API
JSON
安裝並初始化 gcloud CLI,以便為
Authorization標頭產生存取權杖。使用
GET getIamPolicy要求,將 bucket 的 IAM 政策儲存至暫時 JSON 檔案:curl \ 'https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/iam' \ --header 'Authorization: Bearer $(gcloud auth print-access-token)' > tmp-policy.json
其中
BUCKET_NAME是相關 bucket 的名稱。例如:my-bucket。在文字編輯器中編輯
tmp-policy.json檔案,為 IAM 政策中的繫結新增條件:{ "version": VERSION, "bindings": [ { "role": "IAM_ROLE", "members": [ "PRINCIPAL_IDENTIFIER" ], "condition": { "title": "TITLE", "description": "DESCRIPTION", "expression": "EXPRESSION" } } ], "etag": "ETAG" }其中:
VERSION是 IAM 政策版本,如果 bucket 含有 IAM 條件,則必須為 3。IAM_ROLE是條件適用的角色。例如:roles/storage.objectViewer。PRINCIPAL_IDENTIFIER則會指出條件適用的對象。例如:user:jeffersonloveshiking@gmail.com。如需主體 ID 格式清單,請參閱「主體 ID」。TITLE是條件的標題。例如:expires in 2019。DESCRIPTION是條件的選用說明。例如:Permission revoked on New Year's。EXPRESSION是以屬性為基礎的邏輯運算式。例如:request.time < timestamp(\"2019-01-01T00:00:00Z\")。如需更多運算式範例,請參閱條件屬性參考資料。請注意,Cloud Storage 僅支援日期/時間、資源類型和資源名稱屬性。
請勿修改
ETAG。使用
PUT setIamPolicy要求,在 bucket 上設定修改後的 IAM 政策:curl -X PUT --data-binary @tmp-policy.json \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/iam"
其中
BUCKET_NAME是相關 bucket 的名稱。例如:my-bucket。
從值區中移除條件
控制台
- 前往 Google Cloud 控制台的「Cloud Storage bucket」頁面。
在 bucket 清單中,點選要移除條件的 bucket 名稱。
前往「Bucket details」(值區詳細資料) 頁面,點選「Permissions」(權限) 分頁標籤。
適用於 bucket 的 IAM 政策會顯示在「Permissions」(權限) 部分。
按一下與條件相關聯的主體「Edit」(編輯) 圖示 edit。
在顯示的「編輯權限」 疊加層中,按一下要刪除的條件名稱。
在顯示的「Edit condition」(編輯條件) 疊加畫面中,依序按一下「Delete」(刪除) 和「Confirm」(確認)。
按一下 [儲存]。
如要瞭解如何在 Google Cloud 控制台中取得 Cloud Storage 作業失敗的詳細錯誤資訊,請參閱「疑難排解」。
指令列
使用
buckets get-iam-policy指令,將 bucket 的 IAM 政策儲存至暫時 JSON 檔案。gcloud storage buckets get-iam-policy gs://BUCKET_NAME > tmp-policy.json
在文字編輯器中編輯
tmp-policy.json檔案,從 IAM 政策中移除條件。使用
buckets set-iam-policy設定 bucket 的修改後 IAM 政策。gcloud storage buckets set-iam-policy gs://BUCKET_NAME tmp-policy.json
程式碼範例
C++
詳情請參閱 Cloud Storage C++ API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
C#
詳情請參閱 Cloud Storage C# API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
Go
詳情請參閱 Cloud Storage Go API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
Java
詳情請參閱 Cloud Storage Java API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
Node.js
詳情請參閱 Cloud Storage Node.js API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
PHP
詳情請參閱 Cloud Storage PHP API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
Python
詳情請參閱 Cloud Storage Python API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
Ruby
詳情請參閱 Cloud Storage Ruby API 參考文件。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
Rust
REST API
JSON
安裝並初始化 gcloud CLI,以便為
Authorization標頭產生存取權杖。使用
GET getIamPolicy要求,將 bucket 的 IAM 政策儲存至暫時 JSON 檔案:curl \ 'https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/iam' \ --header 'Authorization: Bearer $(gcloud auth print-access-token)' > tmp-policy.json
其中
BUCKET_NAME是您要授予存取權的 bucket 名稱。例如:my-bucket。在文字編輯器中編輯
tmp-policy.json檔案,從 IAM 政策中移除條件。使用
PUT setIamPolicy要求,在 bucket 上設定修改後的 IAM 政策:curl -X PUT --data-binary @tmp-policy.json \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/iam"
其中
BUCKET_NAME是要修改 IAM 政策的值區名稱。例如:my-bucket。
最佳做法
請設定最低角色,授予主體必要存取權。舉例來說,如果團隊成員只需要讀取儲存在 bucket 中的物件,請授予 Storage 物件檢視者 (roles/storage.objectViewer) 角色,而非 Storage 物件管理員 (roles/storage.objectAdmin) 角色。同樣地,如果團隊成員需要 bucket 中物件的完整控制權,但不需要 bucket 本身的控制權,請授予 Storage 物件管理員 (roles/storage.objectAdmin) 角色,而非 Storage 管理員 (roles/storage.admin) 角色。
後續步驟
- 瞭解如何公開共用您的資料。
- 請參閱分享與協作範例。
- 瞭解使用 IAM 的最佳做法。
- 瞭解如何使用 bucket 的角色建議。
- 如要排解與 IAM 角色和權限相關的失敗作業,請參閱「疑難排解」。