存取權控管總覽

您可以控管有權存取 Cloud Storage bucket 和物件的使用者及其存取層級。

選擇統一或細部存取權

建立 bucket 時,您應決定要使用統一精細存取權套用權限。

  • 統一 (建議)統一 bucket 層級存取權可讓您單獨使用 Identity and Access Management (IAM) 管理權限。IAM 會將權限套用至值區內含的所有物件,或具有相同名稱前置字串的物件群組。此外,IAM 還可讓您使用 ACL 無法提供的功能,例如受管理資料夾IAM 條件網域限制共用員工身分聯盟

  • 精細:精細選項可讓您同時使用 IAM 和存取控制清單 (ACL) 管理權限。ACL 是 Cloud Storage 的舊版存取控管系統,專為與 Amazon S3 互通而設計。您也可以使用 ACL 逐一指定物件的存取權。

    由於細部存取權需要您在兩個不同的存取權控管系統之間協調作業,因此無意間洩漏資料的機率會增加,稽核資源存取權的作業也會更加複雜。如果物件含有個人識別資訊等機密資料,建議您將資料儲存在啟用統一儲存空間層級存取權的儲存空間中。

搭配存取控制清單使用 IAM 權限

Cloud Storage 提供兩個系統來授予使用者存取值區和物件的權限:IAM 和存取控制清單 (ACL)。這些系統會並行運作,不過只需要其中一個系統授予使用者權限,使用者即可存取 Cloud Storage 資源。舉例來說,如果值區的 IAM 政策只允許少數使用者讀取值區中的物件資料,但值區中的某個物件具有可公開讀取的 ACL,則該特定物件會公開。

在大多數情況下,建議使用 IAM 控制資源存取權。IAM 可控管整個 Google Cloud 的權限,讓您在值區和專案層級授予權限。針對適用於值區中多個物件的權限,您應使用 IAM,以降低意外曝光的風險。如要只使用 IAM,請啟用統一 bucket 層級存取權,禁止所有 Cloud Storage 資源使用 ACL。

ACL 僅控管 Cloud Storage 資源的權限,而且權限選項有限,但可讓您依照個別物件授予權限。在下列情況中,您可能要考慮使用 ACL:

  • 自訂 bucket 中個別物件的存取權。
  • 從 Amazon S3 遷移資料。

其他存取控管選項

除了 IAM 和 ACL 之外,您還可以透過下列工具控管資源存取權:

已簽署的網址 (查詢字串驗證)

使用已簽署的網址,透過您產生的網址,提供對物件的限時讀取或寫入存取權。任何人只要有該共用網址,無論是否有使用者帳戶,都能在指定的時間內存取物件。

除了 IAM 和 ACL 之外,您也可以使用已簽署的網址。舉例來說,您可以使用 IAM 僅授予少數人存取值區的權限,然後建立已簽署的網址,允許其他人存取值區內的特定資源。

瞭解如何產生已簽署的網址:

已簽署的政策文件

使用已簽署的政策文件,指定可上傳至值區的內容。相較於已簽署的網址,政策文件另可進一步控制大小、內容類型及其他上傳特性,網站擁有者可使用這個項目來允許訪客上傳檔案到 Cloud Storage。

除了 IAM 和 ACL 之外,您也可以使用簽署的政策文件。舉例來說,您可以使用 IAM 允許貴機構的使用者上傳任何物件,然後建立已簽署的政策文件,只允許網站訪客上傳符合特定條件的物件。

Firebase 安全性規則

使用 Firebase 安全性規則,透過 Cloud Storage 專用的 Firebase SDK,對行動和網路應用程式進行以屬性為基礎的精細存取權控制。例如,您可以指定誰可以上傳或下載物件、物件的大小上限,或物件可下載的時間。

禁止公開存取

使用禁止公開存取功能,限制值區和物件的公開存取權。啟用「不可公開存取」限制後,透過 allUsersallAuthenticatedUsers 取得存取權的使用者將無法存取資料。

憑證存取權範圍

使用「憑證存取範圍」縮減 OAuth 2.0 存取權杖可用的權限。首先,您要定義憑證存取權界線,指定權杖可存取的值區,以及該值區可用的權限上限。接著,您可以建立 OAuth 2.0 存取權杖,並將其換成符合憑證存取邊界的存取權杖。

Bucket IP 過濾

使用 Bucket IP 過濾功能,根據要求的來源 IP 位址限制 Bucket 的存取權。Bucket IP 過濾功能可防止未經授權的網路存取 bucket 及其資料,進一步提升安全性。您可以設定允許的 IP 位址範圍清單,包括公開 IP 位址、公開 IP 位址範圍,以及虛擬私有雲中的 IP 位址。系統會封鎖來自不在清單中的 IP 位址的所有要求。因此只有獲得授權的使用者才能存取值區。

身分與存取權管理和存取權控制清單的最佳做法

IAM 政策和 ACL 需要積極管理才能發揮作用。 在將值區、物件或受管理資料夾提供給其他使用者存取之前,請務必確定您已經知道要和誰共用資源,以及要指派什麼角色給這些人。經過一段時間後,專案管理、使用模式和機構擁有權都可能會異動,需要您修改值區和專案的 IAM 或 ACL 設定,尤其當您是在大型機構或是為大型使用者群組管理 Cloud Storage 時更是如此。評估及規劃存取控制設定時,請牢記下列最佳做法:

  • 在授予值區、物件或受管理資料夾的存取權時,請採用最低權限原則。

    最低權限原則是授予資源存取權的安全性方針。如果您根據最低權限原則授予存取權,即表示您只將使用者完成指派工作所需的最小權限授予使用者。舉例來說,如要與他人共用檔案,請授予對方 Storage 物件檢視者 IAM 角色或 READER ACL 權限,而非 Storage 管理員 IAM 角色或 OWNER ACL 權限。

  • 避免將具有 setIamPolicy 權限的 IAM 角色或 ACL OWNER 權限授予您不認識的對象。

    授予 setIamPolicy IAM 權限或 OWNER ACL 權限,可讓使用者變更權限並取得資料的控制權。只有在您要委派物件、值區和受管理資料夾的管理控制權時,才可使用具有這些權限的角色。

  • 授權給匿名使用者時請格外小心。

    只有在網際網路上所有人都可以讀取和分析您的資料時,才可以使用 allUsersallAuthenticatedUsers 主體類型。雖然這些範圍對部分應用程式和某些情況來說很有用,但我們不建議將某些權限 (例如 IAM 權限 setIamPolicyupdatecreatedelete,或是 ACL OWNER 權限) 授予給所有使用者。

  • 確認您已委派值區的管理控制權。

    請務必確保如果具有管理員存取權的成員離開群組,其他團隊成員仍可管理資源。

    如要避免資源無法存取,請採取下列任一做法:

    • 將專案的「Storage 管理員」IAM 角色授予群組,而非個別使用者。

    • 至少授予兩位使用者專案的「儲存空間管理員」IAM 角色。

    • 為值區授予至少兩位使用者的 OWNER ACL 權限。

  • 請注意 Cloud Storage 的可互通行為。

    使用 XML API 與其他儲存服務 (例如 Amazon S3) 進行互通存取時,簽名識別碼會決定 ACL 語法。例如,如果您使用的工具或程式庫向 Cloud Storage 發出擷取 ACL 的要求,而此要求使用其他儲存空間供應商的簽名識別碼,則 Cloud Storage 傳回的 XML 文件會使用對應儲存空間供應商的 ACL 語法。如果您使用的工具或程式庫向 Cloud Storage 發出套用 ACL 的要求,而要求使用其他儲存空間供應商的簽名識別碼,則 Cloud Storage 收到的 XML 文件會使用對應儲存空間供應商的 ACL 語法。

    如要進一步瞭解如何使用 XML API 與 Amazon S3 進行互通存取,請參閱從 Amazon S3 簡易遷移至 Cloud Storage

後續步驟