統一值區層級存取權

設定方式

本頁面說明統一 bucket 層級存取權,可讓您統一控管 Cloud Storage 資源的存取權。在 bucket 啟用統一 bucket 層級存取權後,存取控制清單 (ACL) 就會停用,只有 bucket 層級的 Identity and Access Management (IAM) 權限可授予該 bucket 和其中物件的存取權。您會撤銷物件 ACL 授予的所有存取權,並無法使用值區 ACL 管理權限。

總覽

Cloud Storage 提供兩種系統,可授予使用者存取值區和物件的權限:IAM 和存取控管清單 (ACL)。這些系統會平行運作,使用者只要獲得其中一個系統的權限,就能存取 Cloud Storage 資源。Google Cloud 全面使用 IAM,您可以在 bucket 和專案層級授予各種權限。ACL 僅供 Cloud Storage 使用,且權限選項有限,但可讓您依物件授予權限。

為支援統一權限系統,Cloud Storage 採用統一 bucket 層級存取權。對 bucket 使用這項功能,會停用 bucket 中所有 Cloud Storage 資源的 ACL,Cloud Storage 資源的存取權則一律透過 IAM 授予。如果值區啟用統一值區層級存取權的時間連續達 90 天,就無法停用。

是否應使用統一值區層級存取權?

一般來說,建議使用統一值區層級存取權:

  • 統一 bucket 層級存取權可簡化 Cloud Storage 資源的存取權授予程序,並統一管理。

  • 統一值區層級存取權可防止 ACL 意外暴露資料。

  • 如要使用下列功能,必須啟用統一值區層級存取權:

  • 如要授予員工身分聯盟或Workload Identity Federation實體 Cloud Storage 資源的存取權,必須啟用統一值區層級存取權。

如果您想對 bucket 使用 ACL 系統,就不應使用統一 bucket 層級存取權。

啟用後的行為

您可以在建立新 bucket 時啟用統一 bucket 層級存取權,也可以在現有 bucket 上明確啟用統一 bucket 層級存取權。

啟用後,bucket 的行為如下:

  • 設定、讀取或修改值區和物件 ACL 的要求會失敗,並顯示 400 Bad Request 錯誤。

  • 對值區或物件中繼資料的 full 投影 JSON API 要求會失敗,回應會包括空白的 ACL 清單。

  • 個別物件擁有權將不再存在;由這些擁有權授予的存取權將被撤銷,對值區和物件中繼資料提出的要求不再包含 owner 欄位。

  • 建立時,儲存空間會收到專屬的 IAM 角色。 如果在建立新 bucket 時啟用統一 bucket 層級存取權,該 bucket 會取得額外的 IAM 角色。

    • 這項行為會保留物件從 bucket 的標準預設物件 ACL 繼承的權限。

    • 如果您在現有 bucket 上啟用統一 bucket 層級存取權,則必須手動套用任何這類角色;如果您先前變更過 bucket 的預設物件 ACL,則可能需要套用一組不同的 IAM 角色。

若還原的行為

為支援停用統一 bucket 層級存取權,以及改回使用 ACL 的功能,Cloud Storage 會儲存現有的 ACL。停用統一值區層級存取權的影響:

  • 物件會重新取得已保存的 ACL。

  • 啟用統一值區層級存取權後,新增至值區的任何物件都會根據值區使用的預設物件 ACL 取得 ACL。

停用統一值區層級存取權的規定

如要停用統一值區層級存取權,必須符合下列條件:

修改現有值區的考量

為現有 bucket 啟用統一 bucket 層級存取權時,請務必確認先前依賴 ACL 存取的使用者和服務,其權限已遷移至 IAM。本節概述將 bucket 遷移至統一 bucket 層級存取權時,應採取的步驟。請注意,由於 ACL 和 IAM 會同步處理 bucket 權限,因此您應著重於 bucket 內物件的存取權,而非 bucket 的存取權。

考慮值區層級 IAM 權限是否過度公開資料

將 ACL 指派給對應的 IAM 項目之前,請先考量下列事項:

  • 在 bucket 層級套用的 IAM 權限會套用至 bucket 中的「所有」物件,而物件 ACL 則可能因物件而異。

若您只想將存取權套用至部分物件,您應將這些物件放入不同值區。放入同一值區內的物件,應具有相同權限。

檢查物件 ACL 使用情形

遷移至統一 bucket 層級存取權時,請檢查 bucket 中的物件是否透過套用的 ACL 存取。如要檢查這點,Cloud Monitoring 提供可追蹤 ACL 使用情形的指標。如果這項指標顯示使用者或服務依賴 ACL 存取物件,您應先為 bucket 指派 IAM 對等項目,再啟用統一 bucket 層級存取權。如需在 Monitoring 中檢查 ACL 使用情形的指南,請參閱「檢查 ACL 使用情形」。

請使用這項指標,判斷啟用統一 bucket 層級存取權是否會中斷工作流程:

指標 說明
storage.googleapis.com/authz/acl_operations_count

啟用統一 bucket 層級存取權後,系統會停用的 ACL 作業數量,並依 ACL 作業類型和 bucket 細分。

務必要檢查的重要 ACL 作業是 OBJECT_ACCESS_REQUIRED_OBJECT_ACL:

  • 如果這個數字為零,表示過去 24 個月內,存取物件時不需要物件層級 ACL。IAM 政策涵蓋 bucket 或專案層級的必要權限。

  • 如果這個數字大於零,表示過去 24 個月內,曾有要求存取物件,但需要物件 ACL 權限。啟用統一 bucket 層級存取權前,請先指派同等 IAM 政策。

如要進一步瞭解 Monitoring 指標,請參閱「指標、時間序列和資源」。

檢查值區的預設物件 ACL

如果 bucket 沒有統一 bucket 層級存取權,就會有相關聯的預設物件 ACL。新增至這類值區的新物件會套用這個預設物件 ACL,除非在物件新增至值區時明確提供 ACL。

舉例來說,bucket 通常會使用 projectPrivate 預先定義的 ACL 做為預設物件 ACL。projectPrivate 會將物件 READER 權限授予與 bucket 相關聯的專案檢視者,並將物件 OWNER 權限授予與 bucket 相關聯的專案編輯者和擁有者。

啟用統一值區層級存取權之前,請先檢查值區的預設物件 ACL。啟用統一 bucket 層級存取權後,請考量是否要授予與預設物件 ACL 相關聯的權限。如果是,請將 IAM 對等項目指派給 bucket。

將 IAM 對等權限指派給物件 ACL

物件 ACL 可授予 IAM 目前不支援的存取權。為確保啟用值區層級一致存取權後,現有使用者不會失去物件存取權,請使用下表指派適當的 IAM 角色給受影響的使用者。

物件 ACL 權限 對等 IAM 角色
READER Storage 舊版物件讀取者 (roles/storage.legacyObjectReader)
OWNER Storage 舊版物件擁有者 (roles/storage.legacyObjectOwner)

使用 IAM 條件的注意事項

為避免值區的 IAM 政策與物件 ACL 發生衝突,IAM 條件只能用於已啟用統一值區層級存取權的值區。也就是說:

後續步驟