您可以控管哪些使用者能存取 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 權限
Cloud Storage 提供兩種系統,可授予使用者值區和物件的存取權: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 內的特定資源。
瞭解如何建立經簽署的網址:
已簽署的政策文件
使用簽署的政策文件,指定可上傳至值區的內容。相較於經簽署的網址,政策文件可更精確地控管大小、內容類型和其他上傳特性,網站擁有者可使用政策文件,允許訪客將檔案上傳至 Cloud Storage。
除了 IAM 和 ACL 之外,您也可以使用已簽署的政策文件。舉例來說,您可以使用 IAM 允許貴機構的使用者上傳任何物件,然後建立簽署的政策文件,只允許網站訪客上傳符合特定條件的物件。
Firebase 安全性規則
使用 Firebase 安全性規則,為採用 Cloud Storage 專用 Firebase SDK 的行動和網頁應用程式,提供精細、以屬性為基礎的存取控管。例如,您可以指定哪些人可以上傳或下載物件、物件的大小上限,或物件可供下載的時間。
禁止公開存取
使用禁止公開存取功能,限制值區和物件的公開存取權。啟用禁止公開存取功能後,透過 allUsers 和 allAuthenticatedUsers 取得存取權的使用者將無法存取資料。
私有 bucket 存取權
使用私人 bucket 做為後端,僅透過 Cloud Load Balancing 和 Cloud CDN 提供內容,不公開 bucket 或其資料。請參閱全域外部應用程式負載平衡器的私有儲存空間存取權、傳統版應用程式負載平衡器的私有儲存空間存取權,以及 Cloud CDN 的私有儲存空間存取權。
舉例來說,您可以在 Cloud Storage bucket 中託管靜態網頁檔案等內容,但只允許透過 Cloud Load Balancing 和 Cloud CDN 存取,另一個例子是,您可以使用私人 bucket,允許從 Cloud CDN 存取私人物件,而不使用經簽署的網址。
您可以搭配使用禁止公開存取功能和私人 bucket 存取權。
憑證存取邊界
使用憑證存取邊界,限縮 OAuth 2.0 存取權杖可用的權限範圍。首先,您需要定義憑證存取權邊界,指定權杖可存取的 bucket,以及該 bucket 的權限上限。然後,您可以建立 OAuth 2.0 存取權杖,並換取符合憑證存取權界線的新存取權杖。
Bucket IP 篩選
使用 Bucket IP 過濾功能,根據要求的來源 IP 位址限制 bucket 的存取權。Bucket IP 篩選功能可防止未經授權的網路存取 bucket 和資料,多添一層安全保障。您可以設定允許的 IP 位址範圍清單,包括公開 IP 位址、公開 IP 位址範圍,以及虛擬私有雲中的 IP 位址。凡是來自未列入清單 IP 位址的要求,都會遭到封鎖。因此只有獲得授權的使用者才能存取儲存空間。
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權限。確認您已委派值區的管理控制權。
請務必確保資源仍可由其他團隊成員管理,以免具備管理員權限的個人離開群組。
如要避免資源無法存取,請採取下列任一做法:
將專案的「儲存空間管理員」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。
- 瞭解如何讓公開網際網路上的所有人都能存取您的資料。
- 進一步瞭解經簽署的網址的使用時機。