設定及管理 bucket 的 IAM 政策 (original) (raw)

跳至主要內容

總覽

本頁說明如何在值區上設定 Identity and Access Management (IAM) 政策,以便控管這些值區中物件和代管資料夾的存取權。

如要瞭解其他存取權控管方法,請參閱下列資源:

必要的角色

如要取得設定及管理 bucket IAM 政策所需的權限,請要求管理員授予 bucket 的 Storage 管理員 (roles/storage.admin) IAM 角色。

這個角色具備下列權限,可設定及管理 Bucket 的 IAM 政策:

您也可以透過自訂角色取得這些權限。

將主體新增至值區層級政策

如需和 Cloud Storage 有關的角色清單,請參閱 IAM 角色。如要瞭解您授予 IAM 角色的實體,請參閱主體 ID

控制台

  1. 前往 Google Cloud 控制台的「Cloud Storage bucket」頁面。
    前往「Buckets」(值區) 頁面
  2. 在 bucket 清單中,點選要將角色授予主體的值區名稱。
  3. 選取靠近頁面上方的 [Permissions] (權限) 分頁標籤。
  4. 按一下「授予存取權」按鈕。
    系統會隨即顯示「Add principals」(新增主體) 對話方塊。
  5. 在「New principals」(新增主體) 欄位中,輸入需要存取值區的一或多個身分。
  6. 從「Select a role」(請選取角色) 下拉式選單中選取一或多個角色。您選取的角色會顯示在面板中,系統還會針對這些角色所授予的權限提供簡短說明。
  7. 按一下 [儲存]。

如要瞭解如何透過 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

其中:

用戶端程式庫

REST API

JSON

  1. 安裝並初始化 gcloud CLI,以便為 Authorization 標頭產生存取權杖。
  2. 建立包含下列資訊的 JSON 檔案:
    {
    "bindings":[
    {
    "role": "IAM_ROLE",
    "members":[
    "PRINCIPAL_IDENTIFIER"
    ]
    }
    ]
    }
    其中:
    • IAM_ROLE 是您要授予的 IAM 角色。例如:roles/storage.objectViewer
    • PRINCIPAL_IDENTIFIER 可識別您要授予值區存取權的對象。例如,user:jeffersonloveshiking@gmail.com。如需主體 ID 格式清單,請參閱「主體 ID」。
  3. 使用 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

查看 bucket 的 IAM 政策

控制台

  1. 前往 Google Cloud 控制台的「Cloud Storage bucket」頁面。
    前往「Buckets」(值區) 頁面
  2. 在值區清單中,按一下要查看政策的值區名稱。
  3. 前往「Bucket details」(值區詳細資料) 頁面,點選「Permissions」(權限) 分頁標籤。
    套用至 bucket 的 IAM 政策會顯示在「權限」部分。
  4. 選用:使用「篩選器」列篩選結果。
    如果您依主體進行搜尋,結果會顯示該主體已獲授權的所有角色。

指令列

使用 buckets get-iam-policy 指令

gcloud storage buckets get-iam-policy gs://BUCKET_NAME

其中 BUCKET_NAME 是您要查看其 IAM 政策的值區名稱。例如:my-bucket

用戶端程式庫

REST API

JSON

  1. 安裝並初始化 gcloud CLI,以便為 Authorization 標頭產生存取權杖。
  2. 使用 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

從值區層級政策中移除主體

控制台

  1. 前往 Google Cloud 控制台的「Cloud Storage bucket」頁面。
    前往「Buckets」(值區) 頁面
  2. 在 bucket 清單中,點選要移除主體角色的 bucket 名稱。
  3. 前往「Bucket details」(值區詳細資料) 頁面,點選「Permissions」(權限) 分頁標籤。
    套用至 bucket 的 IAM 政策會顯示在「權限」部分。
  4. 在「View by principals」(依主體檢視) 分頁中,選取要移除主體的核取方塊。
  5. 按一下「移除存取權」按鈕。
  6. 在隨即顯示的重疊視窗中,按一下「確認」。

如要瞭解如何透過 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

其中:

用戶端程式庫

REST API

JSON

  1. 安裝並初始化 gcloud CLI,以便為 Authorization 標頭產生存取權杖。
  2. 取得已套用至 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
  3. 建立一個 JSON 檔案,其中須包含您在上個步驟擷取的政策。
  4. 編輯 JSON 檔案,從政策中移除主體。
  5. 使用 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 Conditions 和 Cloud Storage,請參閱「條件」。

您必須先啟用值區的統一值區層級存取權,才能新增條件。

為 bucket 設定新條件

控制台

  1. 前往 Google Cloud 控制台的「Cloud Storage bucket」頁面。
    前往「Buckets」(值區) 頁面
  2. 在值區清單中,找出要新增條件的值區,然後點選該值區的名稱。
  3. 前往「Bucket details」(值區詳細資料) 頁面,點選「Permissions」(權限) 分頁標籤。
    套用至 bucket 的 IAM 政策會顯示在「權限」部分。
  4. 按一下「+ 授予存取權」。
  5. 在「New principals」(新增主體) 欄位中,填寫要授予值區存取權的主體。
  6. 針對要套用條件的每個角色:
    1. 選取要授予主體的「角色」。
    2. 按一下「新增條件」,開啟「編輯條件」表單。
    3. 填寫條件的標題。「Description」(說明) 欄位為選填。
    4. 使用「條件建構工具」以視覺化方式建構條件,或使用「條件編輯器」分頁輸入 CEL 運算式
    5. 按一下「儲存」,返回「新增主體」表單。如要新增多個角色,請按一下「Add another role」(新增其他角色)。
  7. 按一下 [儲存]。

如要瞭解如何透過 Google Cloud 控制台取得 Cloud Storage 作業失敗的詳細錯誤資訊,請參閱「疑難排解」一文。

指令列

  1. 建立定義條件的 JSON 或 YAML 檔案,包括條件的 title、條件的屬性邏輯 expression,以及條件的 description (選用)。
    請注意,Cloud Storage 僅支援 expression 中的「日期/時間」、「資源類型」和「資源名稱」屬性。
  2. 使用加上 --condition-from-file 旗標的 buckets add-iam-policy-binding 指令

gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME --member=PRINCIPAL_IDENTIFIER --role=IAM_ROLE --condition-from-file=CONDITION_FILE

其中:

或者,您也可以使用 --condition 旗標,直接在指令中加入條件,而不使用 --condition-from-file 旗標。

用戶端程式庫

REST API

JSON

  1. 安裝並初始化 gcloud CLI,以便為 Authorization 標頭產生存取權杖。
  2. 使用 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
  3. 在文字編輯器中編輯 tmp-policy.json 檔案,在 IAM 政策的繫結中新增條件:
    {
    "version": VERSION,
    "bindings": [
    {
    "role": "IAM_ROLE",
    "members": [
    "PRINCIPAL_IDENTIFIER"
    ],
    "condition": {
    "title": "TITLE",
    "description": "DESCRIPTION",
    "expression": "EXPRESSION"
    }
    }
    ],
    "etag": "ETAG"
    }
    其中:
    • VERSIONIAM 政策版本,如果 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
  4. 使用 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

從值區移除條件

控制台

  1. 前往 Google Cloud 控制台的「Cloud Storage bucket」頁面。
    前往「Buckets」(值區) 頁面
  2. 在值區清單中,找出要移除條件的值區,然後點選該值區的名稱。
  3. 前往「Bucket details」(值區詳細資料) 頁面,點選「Permissions」(權限) 分頁標籤。
    套用至 bucket 的 IAM 政策會顯示在「權限」部分。
  4. 按一下與條件相關聯主體的「編輯」圖示 。
  5. 在隨即顯示的「編輯存取權」重疊視窗中,按一下要刪除的條件名稱。
  6. 在隨即顯示的「編輯條件」重疊視窗中,按一下「刪除」,然後按一下「確認」。
  7. 按一下 [儲存]。

如要瞭解如何透過 Google Cloud 控制台取得 Cloud Storage 作業失敗的詳細錯誤資訊,請參閱「疑難排解」一文。

指令列

  1. 使用 buckets get-iam-policy 指令,將 bucket 的 IAM 政策儲存至暫時的 JSON 檔案。
    gcloud storage buckets get-iam-policy gs://BUCKET_NAME > tmp-policy.json
  2. 在文字編輯器中編輯 tmp-policy.json 檔案,從 IAM 政策中移除條件。
  3. 使用 buckets set-iam-policy 在 bucket 上設定修改後的 IAM 政策。
    gcloud storage buckets set-iam-policy gs://BUCKET_NAME tmp-policy.json

程式碼範例

REST API

JSON

  1. 安裝並初始化 gcloud CLI,以便為 Authorization 標頭產生存取權杖。
  2. 使用 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
  3. 在文字編輯器中編輯 tmp-policy.json 檔案,從 IAM 政策中移除條件。
  4. 使用 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) 角色。

後續步驟

除非另有註明,否則本頁面中的內容是採用創用 CC 姓名標示 4.0 授權,程式碼範例則為阿帕契 2.0 授權。詳情請參閱《Google Developers 網站政策》。Java 是 Oracle 和/或其關聯企業的註冊商標。

上次更新時間:2025-12-15 (世界標準時間)。