本頁討論統一值區層級存取權,可讓您統一控管 Cloud Storage 資源的存取權。在值區上啟用統一值區層級存取權後,存取控制清單 (ACL) 會停用,只有值區層級的 Identity and Access Management (IAM) 權限可授予該值區和其中物件的存取權。您會撤銷物件 ACL 授予的所有存取權,以及使用值區 ACL 管理權限的能力。
總覽
Cloud Storage 提供兩個系統來授予使用者存取值區和物件的權限:IAM 和存取控制清單 (ACL)。這些系統會並行運作,不過只需要其中一個系統授予使用者權限,使用者即可存取 Cloud Storage 資源。IAM 可用於整個Google Cloud ,讓您在值區層級和專案層級授予各種權限。ACL 僅可用於 Cloud Storage,而且權限選項有限,但也可讓您依照物件來授予權限。
為了支援統一的權限系統,Cloud Storage 具備統一值區層級存取權。在值區上使用這項功能,會停用值區中所有 Cloud Storage 資源的 ACL;此時只有 IAM 能夠授予 Cloud Storage 資源的存取權。值區上的統一值區層級存取權連續啟用超過 90 天後,將無法停用。
您是否應使用統一值區層級存取權?
一般來說,建議使用統一值區層級存取權:
統一值區層級存取權可統一並簡化 Cloud Storage 資源的存取權授予方式。
統一值區層級存取權可防止 ACL 意外公開資料。
如要使用下列功能,必須啟用統一值區層級存取權:
如果想為值區使用 ACL 系統,就不應使用統一值區層級存取權。
啟用後的行為
您可在建立新的值區時,或者在您明確在現有值區上啟用「統一值區層級存取權」時,啟用「統一值區層級存取權」。
啟用後,值區會有下列行為:
設定、讀取或修改值區和物件 ACL 的要求會失敗,並顯示
400 Bad Request
錯誤。- 包括使用任何
BucketAccessControls
、DefaultObjectAccessControls
或ObjectAccessControls
方法提出的 JSON API 要求。
- 包括使用任何
對值區或物件中繼資料的 full 投影 JSON API 要求會失敗,回應會包括空白的 ACL 清單。
個別物件擁有權將不再存在;由這些擁有權授予的存取權將被撤銷,對值區和物件中繼資料提出的要求不再包含
owner
欄位。建立值區時,系統會為其指派專屬的 IAM 角色。如果您在建立新值區時啟用統一的值區層級存取權,該值區會取得額外的 IAM 角色。
此行為會保留物件從值區標準預設物件 ACL 沿用的權限。
如果您在現有值區上啟用統一值區層級存取權,您必須手動套用這些角色;如果您先前曾變更值區的預設物件 ACL,您可能需要套用不同組的 IAM 角色。
若還原的行為
為了要停用統一值區層級存取權,並還原成使用 ACL,Cloud Storage 會保存現有 ACL。停用統一值區層級存取權後,會發生下列情況:
物件會重新取得已保存的 ACL。
在啟用統一值區層級存取權後新增至值區的物件,會依據該值區使用的預設物件 ACL 取得 ACL。
停用統一值區層級存取權的規定
如要停用統一值區層級存取權,必須符合下列條件:
啟用這項功能的時間未滿 90 天。
您已從 bucket 刪除所有代管資料夾。
修改現有值區的考量
在現有值區上啟用統一值區層級存取權時,應確保之前仰賴 ACL 獲得存取權的使用者和服務的權限均遷移至 IAM。本節概述將值區修改為啟用「統一值區層級存取權」時應採取的步驟。請注意,由於 ACL 和 IAM 會依據值區權限同步,您應特別考量值區內物件的存取權,而非值區的存取權。
考慮值區層級 IAM 權限是否過度公開資料
指派對應至 ACL 的 IAM 前,請考慮下列事項:
- 套用至值區層級的 IAM 權限,會套用至值區內的所有物件,但物件 ACL 則視物件而異。
若您只想將存取權套用至部分物件,您應將這些物件放入不同值區。放入同一值區內的物件,應具有相同權限。
檢查物件 ACL 使用情形
值區修改為啟用統一值區層級存取權時,應檢查值區內物件的存取權是否由 ACL 提供。如要檢查此情況,Cloud Monitoring 的指標可追蹤 ACL 使用情形。如果這項指標顯示使用者或服務必須透過 ACL 存取物件,您應先將對應的 IAM 指派至值區,再啟用統一的值區層級存取權。如需檢查 Monitoring 中 ACL 使用情形的指南,請參閱檢查 ACL 使用情形。
這個指標可用來判斷,啟用統一值區層級存取權是否會中斷您的工作流程:
指標 | 說明 |
---|---|
storage.googleapis.com/authz/acl_operations_count |
在啟用統一值區層級存取權後停用的 ACL 作業數目,會依 ACL 作業類型和值區細分。 |
務必要檢查的重要 ACL 作業是 OBJECT_ACCESS_REQUIRED_OBJECT_ACL
:
如果這個數字為零,則不需要物件層級的 ACL 就能存取過去 6 週內的物件。IAM 政策會涵蓋值區或專案層級的必要權限。
如果這個數字大於零,表示過去 6 週內曾有需要物件 ACL 權限的物件存取要求。啟用統一值區層級存取權之前,應先指派對等的 IAM 政策。
如要進一步瞭解 Monitoring 指標,請參閱指標、時間序列和資源一文。
檢查值區的預設物件 ACL
沒有統一值區層級存取權的值區,會與預設物件 ACL 建立關聯。新增至這類值區的物件都擁有預設物件 ACL,除非將該物件新增至值區時已明確提供 ACL。
舉例來說,值區通常會使用 projectPrivate
預先定義的 ACL 做為預設物件 ACL。projectPrivate
會將物件 READER
權限授予與值區相關聯的專案檢視者,並將物件 OWNER
權限授予與值區相關聯的專案編輯者和擁有者。
啟用統一值區層級存取權前,請檢查您值區擁有的預設物件 ACL。啟用統一 bucket 層級存取權後,請考慮是否要授予與預設物件 ACL 相關聯的權限。若想這樣做,請將對應的 IAM 指派至值區。
指派對應至物件 ACL 的 IAM
物件 ACL 可能會授予 IAM 目前無法授予的存取權。啟用統一值區層級存取權時,為了確保現有使用者不會失去物件的存取權,請參考下表,將適當的 IAM 角色指派給受影響的使用者。
物件 ACL 權限 | 對應的 IAM 角色 |
---|---|
READER |
Storage 舊版物件讀取者 (roles/storage.legacyObjectReader ) |
OWNER |
Storage 舊版物件擁有者 (roles/storage.legacyObjectOwner ) |
使用 IAM 條件的注意事項
為避免值區的 IAM 政策與物件 ACL 發生衝突,IAM 條件只能用於啟用統一值區層級存取權的值區。也就是說:
如要在值區中設定 IAM 條件,必須先啟用該值區的統一值區層級存取權。
如要停用值區的統一值區層級存取權,必須先移除該值區政策的所有 IAM 條件。如要瞭解如何查看及移除值區政策中的條件,請參閱「在值區上使用 IAM 條件」一文。
後續步驟
- 瞭解如何使用統一值區層級存取權。
- 瞭解如何強制執行統一值區層級存取權限制,您可以在 Google Cloud 機構、資料夾或專案中設定這項限制。
- 設定值區和專案上的 IAM 權限。