本頁說明如何在值區上設定 Identity and Access Management (IAM) 政策,控管這些值區中物件和代管資料夾的存取權。
如要瞭解其他存取權控管方法,請參閱下列資源:
如要瞭解如何更精細地控管物件群組,請參閱在代管資料夾中設定及管理 IAM 政策。
如要瞭解如何控管值區中個別物件的存取權,請參閱存取控制清單。
如要進一步瞭解如何控管 Cloud Storage 資源的存取權,請參閱「存取權控管總覽」一文。
必要的角色
如要取得設定及管理值區 IAM 政策所需的權限,請要求管理員授予您值區的 Storage 管理員 (roles/storage.admin
) IAM 角色。
這個角色具備下列權限,可設定及管理 Bucket 的 IAM 政策:
storage.buckets.get
storage.buckets.getIamPolicy
storage.buckets.setIamPolicy
storage.buckets.update
storage.buckets.list
- 如果您打算使用Google Cloud 控制台執行本頁面的工作,才需要這項權限。
您也可以透過自訂角色取得這些權限。
在值區層級政策中新增主體
如需和 Cloud Storage 有關的角色清單,請參閱 IAM 角色。如要瞭解您授予 IAM 角色的實體,請參閱主體 ID。
控制台
- 在 Google Cloud 控制台,前往「Cloud Storage bucket」頁面。
在 bucket 清單中,點選要將角色授予主體的 bucket 名稱。
選取靠近頁面上方的 [Permissions] (權限) 分頁標籤。
按一下「授予存取權」add_box按鈕。
系統會顯示「新增主體」對話方塊。
在「New principals」(新增主體) 欄位中,輸入需要存取值區的一或多個身分。
從「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,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
REST API
JSON
安裝並初始化 gcloud CLI,以便為
Authorization
標頭產生存取權杖。建立包含下列資訊的 JSON 檔案:
{ "bindings":[ { "role": "IAM_ROLE", "members":[ "PRINCIPAL_IDENTIFIER" ] } ] }
其中:
IAM_ROLE
是您要授予的 IAM 角色。例如:roles/storage.objectViewer
。PRINCIPAL_IDENTIFIER
可識別您要授予值區存取權的對象。例如,user:jeffersonloveshiking@gmail.com
。如需主體 ID 格式清單,請參閱「主體 ID」。
使用
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
是您要授予主體存取權的值區名稱。例如:my-bucket
。
查看值區的 IAM 政策
控制台
- 在 Google Cloud 控制台,前往「Cloud Storage bucket」頁面。
在值區清單中,按一下要查看政策的值區名稱。
前往「Bucket details」(值區詳細資料) 頁面,點選「Permissions」(權限) 分頁標籤。
套用至值區的身分與存取權管理政策會顯示在「權限」部分。
選用:使用「篩選器」列篩選結果。
如果您依主體進行搜尋,結果會顯示該主體已獲授權的所有角色。
指令列
gcloud storage buckets get-iam-policy gs://BUCKET_NAME
其中 BUCKET_NAME
是您要查看其 IAM 政策的值區名稱。例如: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,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
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 政策的值區名稱。例如:my-bucket
。
從值區層級政策中移除主體
控制台
- 在 Google Cloud 控制台,前往「Cloud Storage bucket」頁面。
在 bucket 清單中,點選要移除主體角色的 bucket 名稱。
前往「Bucket details」(值區詳細資料) 頁面,點選「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,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
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 政策的值區名稱。例如: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
是您要移除存取權的值區名稱。例如:my-bucket
。
在 bucket 上使用 IAM 條件
下列各節說明如何在值區中新增及移除 IAM 條件。如要查看值區的 IAM 條件,請參閱「查看值區的 IAM 政策」。如要進一步瞭解如何搭配使用 IAM 條件和 Cloud Storage,請參閱「條件」一文。
您必須先啟用值區的統一值區層級存取權,才能新增條件。
為 bucket 設定新條件
控制台
- 在 Google Cloud 控制台,前往「Cloud Storage bucket」頁面。
在值區清單中,找出要新增條件的值區,然後點選該值區的名稱。
前往「Bucket details」(值區詳細資料) 頁面,點選「Permissions」(權限) 分頁標籤。
套用至值區的身分與存取權管理政策會顯示在「權限」部分。
按一下「+ 授予存取權」。
在「New principals」(新增主體) 欄位中,填寫要授予值區存取權的主體。
針對要套用條件的每個角色:
選取要授予主體的角色。
按一下「新增條件」,開啟「編輯條件」表單。
填寫條件的標題。「說明」欄位為選填。
使用「條件建構工具」以視覺化方式建構條件,或使用「條件編輯器」分頁輸入 CEL 運算式。
按一下「儲存」,返回「新增主體」表單。如要新增多個角色,請按一下「新增其他角色」。
按一下 [儲存]。
如要瞭解如何透過 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
是您要授予主體存取權的值區名稱。例如: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,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
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
是相關值區的名稱。例如: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
要求,在值區中設定修改後的 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
是相關值區的名稱。例如:my-bucket
。
從值區移除條件
控制台
- 在 Google Cloud 控制台,前往「Cloud Storage bucket」頁面。
在值區清單中,找出要移除條件的值區,然後點選該值區的名稱。
前往「Bucket details」(值區詳細資料) 頁面,點選「Permissions」(權限) 分頁標籤。
套用至值區的身分與存取權管理政策會顯示在「權限」部分。
按一下與條件相關聯主體的「編輯」圖示 edit。
在隨即顯示的「編輯存取權」重疊視窗中,按一下要刪除的條件名稱。
在隨即顯示的「編輯條件」重疊視窗中,按一下「刪除」,然後按一下「確認」。
按一下 [儲存]。
如要瞭解如何透過 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,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
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
是您要授予存取權的值區名稱。例如:my-bucket
。在文字編輯器中編輯
tmp-policy.json
檔案,從 IAM 政策中移除條件。使用
PUT setIamPolicy
要求,在值區中設定修改後的 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
。
最佳做法
您應設定最低必要角色,將所需存取權授予主體。舉例來說,如果小組成員只需要讀取儲存在值區中的物件,請授予「Storage 物件檢視者」(roles/storage.objectViewer
) 角色,而非「Storage 物件管理員」(roles/storage.objectAdmin
) 角色。同樣地,如果小組成員需要值區物件的完整控制權,但不需要值區本身的控制權,請授予「Storage Object Admin」(Storage 物件管理員) (roles/storage.objectAdmin
) 角色,而非「Storage Admin」(Storage 管理員) (roles/storage.admin
) 角色。
後續步驟
- 瞭解如何公開共用您的資料。
- 請參閱具體的共用和協作範例。
- 瞭解使用 IAM 的最佳做法。
- 瞭解如何使用 bucket 的角色建議。
- 如要排解與 IAM 角色和權限相關的作業失敗問題,請參閱「疑難排解」。