S3 Object Ownership 兩種模式差異
Amazon S3 服務全名為 簡單儲存服務 (Simple Storage Service),可支援存取放置於AWS公有雲的檔案,其服務類似 Google Drive 或 Microsoft OneDrive 的網碟功能。S3 儲存容器稱為水桶,儲存的檔案稱為物件。
建立S3水桶時,須決定上傳到水桶的物件,其擁有者將自動歸屬於誰,稱為物件擁有權(Object Ownership)設定。只有物件的擁有者才能設定物件的存取權。這裡簡單介紹兩種設定模式的差異:
🔒 模式一:ACL disabled(recommended)
所有物件都由 Bucket 擁有者持有,不論是誰上傳。ACL 完全被停用,不能再用 ACL 來授權。存取控制只能透過 IAM Policy 或 Bucket Policy 來設定。
優點:集中管理,避免跨帳號物件所有權混亂。
最佳實務:AWS 建議使用這種模式,因為更安全、更容易維護。
🔑 模式二:ACLs enabled
物件可能由上傳者帳號持有,而不是 Bucket 擁有者。存取控制可以透過 ACL(物件或 Bucket 層級)來設定。Bucket Policy 仍然可以使用,但 ACL 會一起參與判斷。
用途:適合跨帳號上傳的特殊情境,例如合作夥伴需要保有自己上傳檔案的所有權。
缺點:管理較複雜,容易造成權限混亂。
⚡ 簡單比較 模式 物件擁有者 存取控制方式 AWS 建議 ACL Disabled Bucket 擁有者 Policy(IAM / Bucket)✅ 建議 ACL Enabled 上傳者帳號可能成為物件擁有者 ACL + Policy 僅限特殊需求
✍️ 結語
如果你的環境需要簡單、集中、安全的存取管理,選擇 ACL Disabled(Bucket owner enforced) 是最佳做法。 只有在跨帳號物件所有權的特殊需求下,才需要考慮 ACL Enabled。
註: S3 權限管理機制比較:ACL vs. 水桶政策
| 功能特性 | S3 ACL (存取控制清單),舊版 | 水桶政策 (Bucket Policy),新版 |
|---|---|---|
| 物件所有權 | 預設由「上傳者」擁有物件,即使上傳者不是水桶擁有者。 | 由「水桶擁有者」自動擁有水桶內的所有物件。 |
| 設定格式 | XML 格式。 | JSON 格式。 |
| 控制粒度 | 可針對「單一物件」進行微調。 | 針對整個水桶或特定「前綴 (Prefix/資料夾)」進行管理。 |
| 權限複雜度 | 僅限基本權限(讀取、寫入、完全控制),不支援「拒絕 (Deny)」。 | 支援複雜條件(IP 限制、MFA、特定時間、明確拒絕等)。 |
| 稽核便利性 | 低。必須逐一檢查每個物件的 ACL 才能得知誰有存取權。 | 高。只需查看一個 JSON 文件即可瞭解全域權限。 |
| AWS 建議實務 | 不建議使用(除了特定日誌寫入需求)。 | 強烈建議使用(最佳實務)。 |