本頁說明如何在代管資料夾上設定 Identity and Access Management (IAM) 政策,以便精細控管值區中特定物件群組的存取權。
如要瞭解其他存取權控管方法,請參閱下列資源:
如要瞭解如何控管整個值區和其中物件的存取權,請參閱「設定及管理值區的 IAM 政策」。
如要瞭解如何控管值區中個別物件的存取權,請參閱存取控制清單。
如要進一步瞭解如何控管 Cloud Storage 資源的存取權,請參閱「存取權控管總覽」一文。
必要的角色
如要取得設定及管理代管資料夾 IAM 政策所需的權限,請要求管理員為您授予含有代管資料夾的值區的儲存空間資料夾管理員 (roles/storage.folderAdmin
) IAM 角色。
這個角色具備下列權限,可設定及管理受管理資料夾的 IAM 政策:
storage.managedFolders.getIamPolicy
storage.managedFolders.setIamPolicy
您也可以透過自訂角色取得這些權限。
如要瞭解如何授予值區角色,請參閱「設定及管理值區的 IAM 政策」。
在受管理資料夾上設定 IAM 政策
控制台
- 在 Google Cloud 控制台,前往「Cloud Storage bucket」頁面。
在值區清單中,找出您要為受管理資料夾設定 IAM 政策的值區,然後按一下該值區的名稱。
在「Bucket details」(值區詳細資料) 頁面中,找出要設定 IAM 政策的受管理資料夾,然後點選「Folder browser」(資料夾瀏覽器) 窗格中該資料夾旁的「更多選項」圖示
。如要控管資料夾或模擬資料夾內的存取權,請按照「建立代管資料夾」一文的步驟,啟用資料夾或模擬資料夾的管理功能。
按一下「編輯存取權」。
在「Permissions for
MANAGED_FOLDER_NAME
」(「MANAGED_FOLDER_NAME
」的權限) 窗格中,按一下「新增主體」 。在「New principals」(新增主體) 欄位中,輸入要授予存取權的主體。如要進一步瞭解可加入的主體,請參閱「主體 ID」。
在「指派角色」部分,使用「請選擇角色」下拉式選單,指定要授予主體的存取層級。
按一下 [儲存]。
指令列
建立包含下列資訊的 JSON 檔案:
{ "bindings":[ { "role": "IAM_ROLE", "members":[ "PRINCIPAL_IDENTIFIER" ] } ] }
其中:
使用
gcloud storage managed-folders set-iam-policy
指令:gcloud storage managed-folders set-iam-policy gs://BUCKET_NAME/MANAGED_FOLDER_NAME POLICY_FILE
其中:
BUCKET_NAME
是值區名稱,其中包含您要套用 IAM 政策的受管理資料夾。例如:my-bucket
。MANAGED_FOLDER_NAME
是要套用 IAM 政策的受管理資料夾名稱。例如:my-managed-folder/
。POLICY_FILE
是您在步驟 1 建立的 JSON 檔案路徑。
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 @POLICY_FILE \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/managedFolders/MANAGED_FOLDER_NAME/iam"
其中:
POLICY_FILE
是您在上一個步驟建立的 JSON 政策檔案路徑。BUCKET_NAME
是值區名稱,其中包含您要套用 IAM 政策的受管理資料夾。例如:my-bucket
。MANAGED_FOLDER_NAME
是您要授予主體存取權的受管理資料夾名稱。例如:my-managed-folder/
。
查看受管理資料夾的 IAM 政策
控制台
- 在 Google Cloud 控制台,前往「Cloud Storage bucket」頁面。
在值區清單中,找出您要查看 IAM 政策的受管理資料夾所屬值區,然後按一下該值區的名稱。
在「Bucket details」(值區詳細資料) 頁面中,按一下「Folder browser」(資料夾瀏覽器) 窗格中,要查看 IAM 政策的受管理資料夾旁的「更多選項」圖示
。按一下「編輯存取權」。
「Permissions for FOLDER_NAME
」(「FOLDER_NAME
」的權限) 窗格會顯示受管理資料夾的權限,包括主體、角色、繼承角色和 IAM 條件。
指令列
使用 gcloud storage managed-folder get-iam-policy
指令:
gcloud storage managed-folders get-iam-policy gs://BUCKET_NAME/MANAGED_FOLDER_NAME
其中:
BUCKET_NAME
是值區名稱,其中包含您要查看其 IAM 政策的受管理資料夾。例如:my-bucket
。MANAGED_FOLDER_NAME
是您要查看其 IAM 政策的受管理資料夾名稱。例如:my-managed-folder/
。
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/managedFolders/MANAGED_FOLDER_NAME/iam"
其中:
BUCKET_NAME
是值區名稱,其中包含您要查看 IAM 政策的受管理資料夾。例如:my-bucket
。MANAGED_FOLDER_NAME
是您要查看其 IAM 政策的受管理資料夾名稱。例如:my-managed-folder/
。
從代管資料夾政策中移除主體
控制台
- 在 Google Cloud 控制台,前往「Cloud Storage bucket」頁面。
在值區清單中,找出您要查看 IAM 政策的受管理資料夾所屬值區,然後按一下該值區的名稱。
在「Bucket details」(值區詳細資料) 頁面中,前往「Folder browser」(資料夾瀏覽器) 窗格,找出要移除主體的受管理資料夾,然後點選旁邊的「更多選項」圖示
。按一下「編輯存取權」。
在「Permissions for
FOLDER_NAME
」(「FOLDER_NAME
的權限」) 窗格中,於「Filter」(篩選器) 欄位輸入主體的名稱。按一下「刪除」圖示
即可刪除主體。
Cloud Storage 會從受管理資料夾中刪除主體。
指令列
使用 gcloud storage managed-folder remove-iam-policy-binding
指令:
gcloud storage managed-folders remove-iam-policy-binding gs://BUCKET_NAME/MANAGED_FOLDER_NAME --member=PRINCIPAL_IDENTIFIER --role=IAM_ROLE
其中:
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/managedFolders/MANAGED_FOLDER_NAME/iam"
其中:
BUCKET_NAME
是包含您要撤銷存取權受管理資料夾的值區名稱。例如:my-bucket
。MANAGED_FOLDER_NAME
是要移除 IAM 政策的受管理資料夾名稱。例如:my-managed-folder/
。
建立一個 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/managedFolders/MANAGED_FOLDER_NAME/iam"
其中:
JSON_FILE_NAME
是您在步驟 3 建立的檔案路徑。BUCKET_NAME
是包含您要撤銷存取權受管理資料夾的值區名稱。例如:my-bucket
。MANAGED_FOLDER_NAME
是要移除 IAM 政策的受管理資料夾名稱。例如:my-managed-folder/
。
在代管資料夾上使用 IAM 條件
以下各節說明如何在受管理資料夾中新增及移除 IAM 條件。如要查看受管理資料夾的 IAM 條件,請參閱「查看受管理資料夾的 IAM 政策」。如要進一步瞭解如何搭配使用 IAM 條件和 Cloud Storage,請參閱條件。
您必須先在值區中啟用統一值區層級存取權,才能在代管資料夾中新增條件。
為代管資料夾設定新條件
指令列
建立 JSON 或 YAML 檔案,定義條件,包括條件的
title
、條件的屬性邏輯expression
,以及條件的description
(選用)。使用
gcloud storage managed-folders add-iam-policy-binding
指令並加上--condition-from-file
旗標:
gcloud storage managed-folders add-iam-policy-binding gs://BUCKET_NAME/MANAGED_FOLDER_NAME --member=PRINCIPAL_IDENTIFIER --role=IAM_ROLE --condition-from-file=CONDITION_FILE
其中:
BUCKET_NAME
是包含受管理資料夾的值區名稱,您要授予主體存取權。例如:my-bucket
。MANAGED_FOLDER_NAME
是您要授予主體存取權的受管理資料夾名稱。例如:my-managed-folder/
。PRINCIPAL_IDENTIFIER
識別條件的適用對象。例如,user:jeffersonloveshiking@gmail.com
。如需主體 ID 格式清單,請參閱「主體 ID」。IAM_ROLE
是您授予主體的 IAM 角色。例如:roles/storage.objectViewer
。CONDITION_FILE
是您在上一個步驟中建立的檔案。
或者,您也可以使用 --condition
旗標,直接在指令中加入條件,而不使用 --condition-from-file
旗標。
REST API
JSON
安裝並初始化 gcloud CLI,以便為
Authorization
標頭產生存取權杖。使用
GET getIamPolicy
要求,將受管理資料夾的 IAM 政策儲存至臨時 JSON 檔案:curl \ 'https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/managedFolders/MANAGED_FOLDER_NAMEiam' \ --header 'Authorization: Bearer $(gcloud auth print-access-token)' > tmp-policy.json
其中:
BUCKET_NAME
是包含要設定 IAM 條件的受管理資料夾的值區名稱。MANAGED_FOLDER_NAME
是要設定 IAM 條件的受管理資料夾名稱。
在文字編輯器中編輯
tmp-policy.json
檔案,在 IAM 政策的繫結中新增條件:{ "version": VERSION, "bindings": [ { "role": "IAM_ROLE", "members": [ "PRINCIPAL_IDENTIFIER" ], "condition": { "title": "TITLE", "description": "DESCRIPTION", "expression": "EXPRESSION" } } ], "etag": "ETAG" }
其中:
VERSION
是 IAM 政策版本,對於設有 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/managedFoldersMANAGED_FOLDER_NAME/iam"
其中:
BUCKET_NAME
是包含要設定 IAM 條件的受管理資料夾的值區名稱。MANAGED_FOLDER_NAME
是要設定 IAM 條件的受管理資料夾名稱。
從受管理資料夾移除條件
指令列
使用
gcloud storage managed-folders get-iam-policy
指令,將受管理資料夾的 IAM 政策儲存至暫時的 JSON 檔案。gcloud storage managed-folders get-iam-policy gs://BUCKET_NAME/MANAGED_FOLDER_NAME > tmp-policy.json
在文字編輯器中編輯
tmp-policy.json
檔案,從 IAM 政策中移除條件。使用
gcloud storage managed-folders set-iam-policy
指令,在受管理資料夾上設定已修改的 IAM 政策。gcloud storage managed-folders set-iam-policy gs://BUCKET_NAME/MANAGED_FOLDER_NAME tmp-policy.json
REST API
JSON
安裝並初始化 gcloud CLI,以便為
Authorization
標頭產生存取權杖。使用
GET getIamPolicy
要求,將受管理資料夾的 IAM 政策儲存至臨時 JSON 檔案:curl \ 'https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/managedFolders/MANAGED_FOLDER_NAMEiam' \ --header 'Authorization: Bearer $(gcloud auth print-access-token)' > tmp-policy.json
其中:
BUCKET_NAME
是包含您要變更存取權的受管理資料夾的值區名稱。例如:my-bucket
。MANAGED_FOLDER_NAME
是您要變更存取權的受管理資料夾名稱。例如:my-managed-folder/
。
在文字編輯器中編輯
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/managedFolders/MANAGED_FOLDER_NAMEiam"
其中:
BUCKET_NAME
是包含您要變更存取權的受管理資料夾的值區名稱。例如:my-bucket
。MANAGED_FOLDER_NAME
是您要變更存取權的受管理資料夾名稱。例如:my-managed-folder/
。
針對專案使用 IAM
如需在專案層級以上授予及撤銷 IAM 角色的指南,請參閱「管理專案、受管理資料夾和機構的存取權」。
最佳做法
將所需存取權授予主體時,請儘可能為他們設定最低權限。舉例來說,如果小組成員只需要查看值區中的受管理資料夾,請授予 Storage 物件管理員 (roles/storage.objectAdmin
) 角色,而非 Storage 資料夾管理員 (roles/storage.folderAdmin
) 角色。同樣地,如果小組成員需要值區中受管理資料夾的完整控制權,請授予「Storage Folder Admin」(儲存空間資料夾管理員) (roles/storage.folderAdmin
) 角色,而非「Storage Admin」(儲存空間管理員) (roles/storage.admin
) 角色。
後續步驟
瞭解如何公開共用您的資料。
請參閱具體的共用和協作範例。
瞭解使用 IAM 的最佳做法。
如要排解與 IAM 角色和權限相關的作業失敗問題,請參閱「疑難排解」。