禁止公開存取

設定方式

本頁面將討論禁止公開存取值區設定,以及相關的禁止公開存取組織政策限制。使用設定或限制條件可限制可存取資料的實體,例如網際網路上的匿名使用者。如需存取權控管選項的總覽,請參閱存取權控管總覽

總覽

禁止公開存取可避免 Cloud Storage 值區和物件意外公開。強制執行禁止公開存取後,任何人都無法透過 IAM 政策或 ACL,將適用儲存空間中的資料設為公開。您可以透過下列兩種方式強制禁止公開存取:

是否應使用禁止公開存取功能?

如果您確定資料完全不應顯示於公開網際網路,請使用禁止公開存取功能。為盡可能保護資源安全,請在組織的最高層級強制執行「禁止公開存取」功能。

如要讓值區保持公開,以用於託管靜態網站等用途,請勿採用禁止公開存取的設定。如要在強制禁止公開存取的機構中,為這類 bucket 建立例外狀況,請在包含 bucket 的特定專案中停用禁止公開存取功能。

強制執行時的行為

受禁止公開存取功能限制的資源會出現下列行為:

  • 使用 allUsersallAuthenticatedUsers 授權對值區和物件提出的要求會失敗,並顯示 HTTP 401403 狀態碼。

  • 授予 allUsersallAuthenticatedUsers 存取權的現有 IAM 政策和 ACL 仍會保留,但會遭到禁止公開存取政策覆寫。

  • 如果 IAM 政策或 ACL 包含 allUsersallAuthenticatedUsers,建立值區或物件的要求會失敗,但有以下例外狀況:

    • 如果值區的預設物件 ACL 包含 allUsers,在該值區中建立物件的要求就會成功。這類物件的 ACL 包含 allUsers,但 allUsers 會遭到公開存取權預防措施覆寫。
  • allUsersallAuthenticatedUsers 新增至 IAM 政策或 ACL 的要求會失敗,並顯示 412 Precondition Failed

繼承

即使值區的設定未明確強制執行禁止公開存取功能,值區仍可能沿用禁止公開存取功能,如果值區所在的專案、資料夾或機構設定了機構政策限制 storage.publicAccessPrevention,就會發生這種情況。因此,值區狀態只能設為 enforcedinherited

  • 如果 bucket 的禁止公開存取中繼資料設為 enforced,則禁止公開存取適用於該 bucket。

  • 如果 bucket 的禁止公開存取中繼資料設為 inherited,則禁止公開存取的設定取決於storage.publicAccessPrevention機構政策限制:

    • 如果 storage.publicAccessPrevention 設為 True,則禁止公開存取功能會套用至包含 bucket 的專案

    • 如果專案 (包含 bucket) 的 storage.publicAccessPrevention 設為 False,則禁止公開存取功能不適用於 bucket。

    • 如果包含值區的專案未設定 storage.publicAccessPrevention,系統會根據包含專案的資料夾所設定的 storage.publicAccessPrevention 值 (如有) 判斷是否禁止公開存取。

      • 同樣地,如果包含值區的資料夾也沒有為 storage.publicAccessPrevention 設定任何值,則禁止公開存取功能會根據包含專案的機構所設定的 storage.publicAccessPrevention 值來判斷。

      • 如果未針對任何資源設定 storage.publicAccessPrevention,則禁止公開存取功能不適用於該值區。

停用後的行為

當資源不再適用禁止公開存取功能時,會發生下列情況:

  • 現有的 IAM 政策和 ACL 會授予 allUsersallAuthenticatedUsers 的存取權,讓大眾存取資料。

  • 要求建立允許存取 allUsersallAuthenticatedUsers 的 IAM 政策或 ACL 時,系統會允許。

  • 如果是在可公開存取的值區中建立物件,即使該物件是在禁止公開存取的情況下建立,且沒有公開 ACL,仍可能開放公開存取。

您可以隨時為專案、資料夾或機構停用禁止公開存取功能。即使您為包含值區的專案、資料夾或機構停用這項設定,設為 enforced 的值區仍會強制禁止公開存取。

注意事項

  • 對現有資源強制禁止公開存取時,系統會封鎖所有現有授權,以及新增的 allUsersallAuthenticatedUsers。這可能會對值區造成下列影響:

    • 如果應用程式需要依賴 allUsersallAuthenticatedUsers 存取資料或建立公開資源,啟用「禁止公開存取」功能可能會導致應用程式無法運作。如要瞭解如何找出其他應用程式可能依附的公開資源,請展開下列內容:

      如何識別公開資源

      強制禁止公開存取前,建議您先清查公開資源,確保不會中斷其他依賴公開資料的工作負載。您可以透過下列方法,找出公開的 bucket、物件和代管資料夾:

    • Cloud 稽核記錄不會追蹤公開物件的存取權。如果您在強制禁止公開存取時啟用資料存取記錄,系統可能會產生更多記錄,這些記錄會計入記錄擷取配額,並可能產生 Cloud 稽核記錄費用。先前公開且未記錄的存取權可能與特定授權建立關聯,並記錄下來,因此導致用量增加。

  • 已簽署的網址可讓使用者在指定時間內存取特定範圍的內容,不受禁止公開存取功能影響。

  • 未與機構建立關聯的專案無法使用機構政策。 這類專案中的 bucket 應使用 bucket 層級設定。

  • 更新後讀取時,系統會強烈一致地禁止公開存取, 但強制執行最多可能需要 10 分鐘才會生效。

  • 強制執行後,物件可能仍會透過網際網路快取公開存取一段時間,具體時間長度取決於物件的Cache-Control設定。舉例來說,如果物件的 Cache-Control:max-age 設為預設的 3600 秒,物件可能會在網際網路快取中保留這段時間。

後續步驟