Logo

新人日誌

首頁關於我部落格

新人日誌

Logo

網站會不定期發佈技術筆記、職場心得相關的內容,歡迎關注本站!

網站
首頁關於我部落格
部落格
分類系列文

© 新人日誌. All rights reserved. 2020-present.

AWS S3「阻止所有公開訪問」設定說明

最後更新:2025年3月4日資料庫

本文為 圖片上傳 AWS S3 系列教學,第 6 篇:

  1. AWS S3 是什麼?
  2. boto3 與 django-storages:如何在 Django 中對接 AWS S3
  3. AWS S3 與 IAM:圖片上傳功能的權限管理指南
  4. S3 與 Postgres 的比較與應用
  5. Amazon S3 物件所有權設定解析
  6. AWS S3「阻止所有公開訪問」設定說明 👈 所在位置
  7. Amazon S3 儲存桶版本控制完整指南
  8. 如何設定 S3 儲存桶的「預設加密」?—— 初學者指南
  9. S3 儲存桶標籤(Tags)簡單介紹:讓你的 S3 管理更輕鬆!
  10. AWS S3 物件鎖定功能入門指南
  11. AWS S3 公開存取權完整指南
  12. AWS CORS 預檢請求與設定指南
  13. AWS IAM 設定教學:生成訪問密鑰以用於 S3 配置
  14. django-storages 基本配置:讓應用程式連接 S3 存儲桶
  15. Django-storages 的完整配置教學:從隱密性到快取控制
  16. Django-storages 完整配置指南:從文件存儲到訪問路徑
  17. Django-storages 配置:環境變數設定
  18. Django-storages 與 STORAGES 配置:未來相容性的最佳實踐
  19. 如何在 Django 中移除 DEBUG URL 的靜態檔案配置

建議閱讀本文前,先閱讀完 圖片上傳功能 系列文

「阻止所有公開訪問」是 AWS S3 提供的安全設定,用來強制阻止所有未經授權的外部存取,確保儲存桶和物件不會意外公開。

主要影響

  • 任何人 無法未經身份驗證,直接訪問你的儲存桶或物件(例如:透過公開網址存取)。
  • 無法透過「公開存取」的方式(如匿名使用者)讀取、修改或刪除儲存桶中的物件。
  • 這個設定會覆蓋儲存桶政策 和 存取控制清單(ACL),阻止任何形式的公開存取設定。

不影響的部分

  • 已經獲得授權的使用者,或 AWS 帳戶仍然可以讀取或上傳物件到儲存桶。
  • 例如:你的應用程式(如透過身份驗證的後端服務)仍然可以安全地操作 S3 儲存桶。

當「阻止所有公開訪問」不適合的情況

在某些特定需求下,啟用「阻止所有公開訪問」並不適用,反而會妨礙你的使用場景。

例如:

需要公開讀取的場景

有時候,你可能希望儲存桶中的物件(例如圖片、影片、靜態檔案),能夠被所有人透過公開網址直接訪問,而不需身份驗證。

這類需求常見於:

  • 網站公開圖片:網站上的圖片需要公開讀取,讓所有訪客可以直接查看。
  • 靜態檔案托管:將網站的 CSS、JavaScript、PDF 文件等檔案存放在 S3,並讓訪客能夠直接存取。
  • 資源分享:透過公開網址分享檔案給任何人,例如使用者上傳的圖片需要被其他人看到。

啟用「阻止所有公開訪問」時,AWS 會強制覆蓋任何公開權限設定,包括:

  • 儲存桶政策(Bucket Policy)中允許的公開讀取。
  • 物件級別的 ACL(Access Control List)公開設定。

因此,即使你手動設定允許公開存取,這個保護機制也會將公開設定封鎖,導致你的內容無法被所有人訪問。

不會帶來安全風險的公開存取

有些場景下,公開存取的內容本身不涉及敏感資料,沒有安全風險,例如:

  • 公開的產品圖片或影片。
  • 公共文件(例如可下載的操作手冊或白皮書)。
  • 公開的 API 文件、開發者工具或其他靜態資源。

在這種情況下,完全封鎖公開存取會造成不必要的限制,影響內容的正常公開分享與訪問。

搭配其他安全機制的公開內容

即使允許公開讀取,你仍然可以透過其他安全機制保護你的儲存桶:

  • 使用儲存桶政策,控制哪些物件可以公開存取。
  • 僅對某些特定目錄或檔案設定公開存取,避免其他物件誤設為公開。
  • 使用 AWS CloudFront 搭配簽名 URL,提供有時效性的存取權限。

在這樣的安全設計下,「阻止所有公開訪問」的全域保護機制反而會造成不便,影響應用程式的彈性設定。


結論

「阻止所有公開訪問」是 AWS 提供的一種安全保護鎖,適用於完全禁止未經授權的存取,確保儲存桶的內容不會意外公開。

但在以下情況下,它不適用:

  1. 需要公開讀取:例如網站圖片、靜態檔案或資源分享。
  2. 內容本身不敏感:公開訪問的資料不會帶來安全風險。
  3. 搭配其他安全控制:使用儲存桶政策或其他方式,控制公開內容的範圍與安全性。

在這類情境下,你應該不要啟用「阻止所有公開訪問」,而是使用儲存桶政策來精確控制權限,滿足需求的同時兼顧安全性。

這樣可以更靈活地達到「讓內容公開檢視」的目標,同時避免過度限制導致功能無法正常運作。

目前還沒有留言,成為第一個留言的人吧!

發表留言

留言將在審核後顯示。

資料庫

目錄

  • 主要影響
  • 不影響的部分
  • 當「阻止所有公開訪問」不適合的情況
  • 需要公開讀取的場景
  • 不會帶來安全風險的公開存取
  • 搭配其他安全機制的公開內容
  • 結論