您可以控管有權存取 Cloud Storage bucket 和物件的使用者,以及對方的存取層級。
選擇一致或精細存取權
建立 bucket 時,您應決定要使用「統一」或「精細」存取權套用權限。
統一 (建議):統一 bucket 層級存取權可讓您單獨使用 Identity and Access Management (IAM) 管理權限。IAM 會將權限套用至 bucket 內含的所有物件,或具有通用名稱前置字元的物件群組。此外,IAM 還可讓您使用 ACL 不支援的功能,例如代管資料夾、IAM 條件、網域限制共用和員工身分聯盟。
精細:精細選項可讓您同時使用 IAM 和存取控管清單 (ACL) 管理權限。ACL 是 Cloud Storage 的舊版存取控管系統,旨在與 Amazon S3 互通。ACL 也可讓您為各物件分別指定存取權。
精細存取權需要您協調兩種不同的存取控管系統,會增加資料意外暴露的風險,而且稽核資源存取權限的難度也會提高。如果物件含有個人識別資訊等機密資料,建議您將這類資料儲存在已啟用統一 bucket 層級存取權的 bucket 中。
搭配使用 IAM 權限和 ACL
Cloud Storage 提供兩種系統,可授予使用者 bucket 和物件的存取權:IAM 和存取控管清單 (ACL)。這些系統會平行運作,使用者只要獲得其中一個系統的授權,就能存取 Cloud Storage 資源。舉例來說,如果 bucket 的 IAM 政策僅允許少數使用者讀取 bucket 中的物件資料,但 bucket 中的其中一個物件具有可公開讀取的 ACL,則該特定物件會公開。
在大多數情況下,建議使用 IAM 控制資源存取權。IAM 可控管整個 Google Cloud 的權限,並允許您在 bucket 和專案層級授予權限。如要將權限套用至 bucket 中的多個物件,請使用 IAM,降低意外公開的風險。如要只使用 IAM,請啟用統一 bucket 層級存取權,禁止所有 Cloud Storage 資源使用 ACL。
ACL 僅控管 Cloud Storage 資源的權限,且權限選項有限,但可讓您授予個別物件的權限。ACL 最適合用於下列情況:
- 自訂 bucket 中個別物件的存取權。
- 從 Amazon S3 遷移資料。
其他存取控管選項
除了 IAM 和 ACL 之外,您也可以使用下列工具控管資源存取權:
經簽署的網址 (查詢字串驗證)
使用經簽署的網址,透過您產生的網址,授予物件限時讀取或寫入權限。無論是否擁有使用者帳戶,只要取得網址,就能在指定時間內存取物件。
除了 IAM 和 ACL 之外,您也可以使用經簽署的網址。舉例來說,您可以使用 IAM 僅向少數人授予 bucket 存取權,然後建立經簽署的網址,允許其他人存取 bucket 內的特定資源。
瞭解如何建立經簽署的網址:
已簽署的政策文件
使用已簽署的政策文件,指定可上傳至 bucket 的內容。相較於經簽署的網址,政策文件可更精確地控管大小、內容類型和其他上傳特性,網站擁有者可使用政策文件,允許訪客將檔案上傳至 Cloud Storage。
除了 IAM 和 ACL 之外,您也可以使用已簽署的政策文件。舉例來說,您可以使用 IAM 允許貴組織中的人員上傳任何物件,然後建立已簽署的政策文件,只允許網站訪客上傳符合特定條件的物件。
禁止公開存取
使用禁止公開存取功能,限制值區和物件的公開存取權。啟用禁止公開存取功能後,透過 allUsers 和 allAuthenticatedUsers 取得存取權的使用者將無法存取資料。
Bucket IP 篩選
使用 Bucket IP 過濾功能,根據要求的來源 IP 位址限制對 bucket 的存取。Bucket IP 篩選功能可防止未經授權的網路存取 bucket 和資料,多添一層安全保障。您可以設定允許的 IP 位址範圍清單,包括公開 IP 位址、公開 IP 位址範圍,以及虛擬私有雲中的 IP 位址。凡是來自未列入清單 IP 位址的要求,都會遭到封鎖。因此,只有獲得授權的使用者才能存取 bucket。
IAM 和 ACL 的最佳做法
IAM 政策和 ACL 必須主動管理才能發揮作用。在允許其他使用者存取 bucket、物件或代管資料夾之前,請務必確認您要與哪些使用者共用資源,以及要為每位使用者指派哪些角色。隨著時間推移,專案管理、使用模式和組織擁有權的變更,可能會要求您修改 bucket 和專案的 IAM 或 ACL 設定,尤其是在大型組織中或為大量使用者管理 Cloud Storage 時。評估及規劃存取控管設定時,請留意下列最佳做法:
授予 bucket、物件或代管資料夾的存取權時,請採用最小權限原則。
最小權限原則是授予資源存取權的安全指南。根據最小權限原則授予存取權時,您會授予使用者完成指派工作所需的最低權限。舉例來說,如要與他人共用檔案,應授予對方 Storage 物件檢視者 IAM 角色或
READERACL 權限,而非 Storage 管理員 IAM 角色或OWNERACL 權限。請勿將具備
setIamPolicy權限的 IAM 角色或 ACLOWNER權限授予不認識的人。授予
setIamPolicyIAM 權限或OWNERACL 權限,可讓使用者變更權限並控管資料。只有在您想委派物件、值區和代管資料夾的管理控制權時,才應使用具備這些權限的角色。授權給匿名使用者時請格外小心。
只有在網際網路上任何人都能讀取及分析您的資料時,才應使用
allUsers和allAuthenticatedUsers主體類型。雖然這些範圍適用於某些應用程式和情境,但通常不建議將特定權限授予所有使用者,例如 IAM 權限setIamPolicy、update、create或delete,或 ACLOWNER權限。確認您已委派值區的管理控制權。
請務必確保其他團隊成員仍可管理資源,以免具備管理員權限的人員離開群組。
為避免資源無法存取,您可以採取下列任一做法:
將專案的 Storage 管理員 IAM 角色授予群組,而非個人。
將專案的 Storage 管理員 IAM 角色授予至少兩位使用者。
將 bucket 的
OWNERACL 權限授予至少兩位使用者。
請注意 Cloud Storage 的可互通行為。
使用 XML API 與其他儲存服務 (例如 Amazon S3) 進行互通存取時,簽名識別碼會決定 ACL 語法。例如,如果您使用的工具或程式庫向 Cloud Storage 發出擷取 ACL 的要求,而此要求使用其他儲存空間供應商的簽名識別碼,則 Cloud Storage 傳回的 XML 文件會使用對應儲存空間供應商的 ACL 語法。如果您使用的工具或程式庫向 Cloud Storage 提出要求,要套用 ACL,且要求使用其他儲存空間供應商的簽章 ID,則 Cloud Storage 預期會收到使用對應儲存空間供應商 ACL 語法的 XML 文件。
如要進一步瞭解如何使用 XML API 與 Amazon S3 互通,請參閱「從 Amazon S3 輕鬆遷移至 Cloud Storage」。
後續步驟
- 瞭解如何使用 IAM 權限。
- 參閱 Cloud Storage 專屬的身分與存取權管理權限和角色。
- 查看共用和協作情境範例,瞭解如何設定 bucket 和物件 ACL。
- 瞭解如何讓公開網際網路上的所有人都能存取您的資料。
- 進一步瞭解經簽署的網址使用時機。