AWS企業帳號代開 AWS S3 儲存桶權限公開設置方法
AWS企業帳號代開 第一章:為什麼要把 S3 設成「公開」?先想清楚公開的範圍
在 AWS S3 只要你提到「公開」,通常意味著兩件事之一:第一,任何人都能透過公共 URL 讀取你放在 S3 的檔案;第二,你希望某些行為對外開放,例如列出清單、下載或透過特定條件存取。可惜的是,很多人一開始就用同一種方式去設定,最後要嘛失效、要嘛過度暴露。
因此在動手之前,先把需求拆清楚:
- 你要公開的是整個儲存桶,還是只公開某些物件(Objects)?
- AWS企業帳號代開 你需要公開讀取(GetObject)就好,還是還要列出(ListBucket)?
- 公開後的內容是否真的允許被任何人下載?例如圖片、公開資料集通常可行,但如果有帳號資訊或內部文件,風險會非常高。
S3 的權限模型是疊加的:你可能同時在「儲存桶層級」與「物件層級」授權;而且 AWS 還有一層關鍵保護:Block Public Access(阻止公開存取)。只要這層設為阻擋,即使你寫了正確的 Bucket Policy,也可能仍然不會成功。
接下來我們會用可落地的方式,逐步走完整個流程:理解前置條件 → 調整 Block Public Access → 設定 Bucket Policy → 驗證公開是否生效 → 最後做安全與維運檢查。
第二章:公開前置條件—確認你擁有正確的權限與資源
很多設定失敗不是因為策略寫錯,而是因為你根本沒有足夠權限或前置狀態不同。建議你先做三件確認:
AWS企業帳號代開 小節 1:確認你是在正確的區域與正確的帳號下
S3 儲存桶是區域資源。若你用錯環境(例如 dev / prod),你可能以為你在公開某個桶,其實你在操作另一個桶。
登入 AWS Console 後,直接到 S3 儀表板,確認桶名稱(Bucket Name)與所在地區(Region)正確。
小節 2:確認你打算公開的是哪些檔案
公開可以是整桶(全部物件),也可以限制在特定前綴路徑。例如:
- 只公開
public/資料夾下的檔案 - 只公開
images/目錄的圖片 - 只公開特定檔案(例如
banner.png)
越精準越安全,尤其當你的桶內同時放著公開與非公開內容時。
小節 3:記得考慮「公開 URL」與「網站模式」的差異
你若只是要讓物件可被直接下載/讀取,通常不需要啟用網站託管(Static website hosting)。但若你要把它當成網站(例如使用 index.html),你可能需要另外設定「靜態網站」與相對應的存取方式。
本文聚焦在一般公開存取(透過對象 URL 讀取)的做法,網站模式可延伸使用同樣的權限原則。
第三章:先處理最常見的擋路石—Block Public Access
在 S3 中,Block Public Access 是避免意外把資料暴露到公網的保護層。要達到「公開設置」,你通常需要將它調整到允許公開策略生效。
小節 1:在哪裡找到 Block Public Access
進入 S3 後點選你的儲存桶,尋找:
- Permissions(權限)
- 在 Permissions 裡通常會有 Block public access (bucket settings)
小節 2:你需要怎麼改
在控制台中,可能看到多個選項(例如阻止新增公開 ACL、阻止透過新策略授權公開、等等)。針對「公開設置」,通常至少要取消對公開的阻擋,使得 Bucket Policy 可以生效。
但我不會建議你全部把阻擋都關掉後就算了。更好的做法是:保留你確定不會影響公開需求的保護項,並用最小變更完成目標。
簡化思路如下:
- 若你要用 Bucket Policy 公開物件,確保「阻止透過 Bucket Policy 使物件公開」的設定不要阻擋你的政策效果。
- 若你不打算用公開 ACL(Access Control List)管理權限,則 ACL 相關的阻擋通常可以保留。
每個帳戶的預設與組織策略可能不同,因此你在修改後必須做驗證(後面會說)。
第四章:設定 Bucket Policy—用最小權限達成公開
在 S3 要讓物件公開存取,最常用、也最清楚的方式是設定 Bucket Policy,授權 Principal 為公開的主體(一般使用 *),並允許對目標物件的 s3:GetObject。
你可以選擇公開整桶,或只公開某個前綴路徑。實務上,請優先採用「只公開必要路徑」,避免桶內其他資料被誤曝。
小節 1:公開整桶(通常不建議,除非你確定全部都要公開)
假設你的桶名稱是 my-public-bucket,並且你要所有人都可讀取桶內所有物件:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PublicReadGetObject",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::my-public-bucket/*"
}
]
}
這段政策的意思很直白:允許任何人對此桶下的所有物件執行讀取(GetObject)。
小節 2:只公開某個前綴(建議做法)
例如你只想公開 public/ 目錄下的檔案,Bucket Policy 可以改成:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PublicReadGetObjectForPublicPrefix",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::my-public-bucket/public/*"
}
]
}
這樣做的好處是:即使桶內還有其他檔案,你也不用擔心它們被同一條政策一併公開。
小節 3:若你想限制只允許 GET(避免其他行為)
公開要的是「讀取」,那你就只授予 s3:GetObject。不要用 s3:ListBucket,除非你真的要人們能列出目錄。
只要不加入列出權限,別人通常無法直接看到桶內檔案清單(即使你公開了部分物件,他們仍需要你提供具體檔案 URL)。
小節 4:放大風險的做法—公開 ListBucket
如果你加上 s3:ListBucket,就可能讓公網可以瀏覽桶內前綴內容。除非你是做公開網站或資料目錄展示,否則通常不建議。
AWS企業帳號代開 因此,除非需求明確,請採用「只公開物件讀取」而不是「公開列舉」。
第五章:在 Console 中實際操作—從寫政策到套用
下面用「控制台流程」描述,讓你能照做並快速定位問題。
小節 1:進入儲存桶的 Permissions → Bucket Policy
在你的 S3 儲存桶頁面,找到:
- Permissions
- 找到 Bucket Policy
- 點 Edit(編輯)
小節 2:貼上政策,檢查 ARN 與路徑
最常見的錯誤是 ARN 寫錯或路徑尾端忘了 /*。請確認:
- 桶名稱正確
- 若是只公開前綴,Resource 指向
.../public/* - 引號與 JSON 格式正確
AWS企業帳號代開 小節 3:儲存後立刻做驗證
不要只看政策是否成功儲存就結束。你需要驗證「公網是否真的能讀到」。理由是:Block Public Access 或帳戶層級的設定可能仍然阻擋。
第六章:驗證公開是否生效—用正確的測試方式避免假象
驗證的重點是:你要測試「沒有 AWS 身分」的情況。因為你在 Console 登入的狀態可能仍有權限,所以你看得到,不代表公網看得到。
AWS企業帳號代開 小節 1:用匿名方式測試 URL
做法很簡單:取得某個你已上傳到公開前綴的物件 URL,然後在:
- 無痕視窗(隨機瀏覽器 / 無登入狀態)
- 或完全不同的網路環境
嘗試直接存取該 URL。如果策略生效,你通常會看到檔案內容或可下載回應。
小節 2:觀察回應碼:403 通常代表授權或阻擋問題
- 200:成功公開(通常就是你要的結果)
- 403:多半是 Block Public Access、或政策 Resource 不符合、或桶設定阻擋。
- 404:可能是你測試的物件路徑不對,或該物件其實不在你授予的資源範圍內。
AWS企業帳號代開 小節 3:用 S3 Access Analyzer(如果你有)協助查問題
若你的環境提供相關工具(例如 Access Analyzer),可以用來找出「是否意外暴露」或「政策是否存在風險」。即便你不使用它,你也可以用本文提供的排查方向自行定位。
第七章:常見錯誤與排查清單(照表操作最省時間)
公開設置失敗,通常集中在少數幾個地方。以下給你一份排查清單,照順序檢查往往很快就能找到原因。
小節 1:Bucket Policy 寫對了,但仍然 403
常見原因:
- Block Public Access 還在阻擋:尤其是阻止透過政策公開。
- Resource ARN 不對:前綴寫錯、少了
/*、桶名拼錯。 - 你測試的物件不在授權範圍內:例如你只授權
public/*,但測試了assets/*。
小節 2:你以為公開了整桶,但其實只有部分檔案可讀
這通常是你上傳時把檔案放在不同前綴,或政策只涵蓋某一路徑。請核對物件 Key(檔名在桶內的路徑)。
小節 3:你設定了公開,但有人說看不到
除了權限外,還有幾個狀況:
- 檔案的內容類型(MIME type)或快取造成顯示問題(通常不是 403,但可能看起來像失敗)。
- 你分享的是錯誤 URL(例如少掉前綴或路徑)。
- 你測試時看到的其實是你已登入的身分權限,而公網未生效。
小節 4:意外公開—把本來不該公開的內容也放進同個前綴
這是很多團隊在後期才發現的風險。你一開始只打算公開一小塊,但後續上傳流程把其他資料誤放進公開目錄。建議你在命名與上傳流程上維持隔離,例如:
- 公開檔案放到專用前綴(例如
public-assets/) - 非公開檔案放到另一套前綴(例如
private/) - 限制上傳權限,讓一般使用者不能把檔案放到公開區
第八章:安全觀念—公開不是壞事,但要用管理替代僥倖
很多人一聽到「公開桶」就焦慮,其實不必然。關鍵在於你如何控制公開範圍、何時公開、以及公開後你是否能持續維運。
小節 1:盡量採用最小範圍公開
優先只公開必要前綴或必要物件。這會讓你即使不小心放進多餘檔案,也能降低外洩影響。
小節 2:避免讓敏感資訊出現在 URL 中
公開讀取意味著物件 URL 可能被轉發與長期保存。不要把臨時憑證、密鑰、內部文件、或可推導敏感資訊的內容放進公開區。
小節 3:考慮版本管理與刪除策略
如果你啟用了 S3 Versioning,公開內容可能保留舊版物件;如果關掉又可能造成誤刪後的追溯困難。你要理解公開策略變更後,既有物件是否仍可被存取。
實務上,公開政策變更後通常立即影響存取,但你仍應該用流程管理「何時上架、何時下架」,並在下架時確認物件確實移除。
第九章:進階延伸—只允許特定條件公開(比直接全公開更常見)
雖然你的標題是「公開設置方法」,但很多情境其實不需要「完全公開」。進階做法可以讓公開更精準,例如:
- 只允許特定 IP 或特定來源(通常需要你知道存取來源)
- 限制特定 HTTP 方法
- 配合前端使用,搭配短效簽名 URL(這是另一套思路:不是公開桶,而是「受控公開」)
如果你現在的需求其實是「讓外部可以下載,但不希望任何人隨意抓」,那就應該評估改用簽名 URL 或更嚴格的條件,而不是把整桶或整前綴永久公開。
AWS企業帳號代開 第十章:把流程做成習慣—上架與驗證的最小 SOP
最後我建議你不要每次靠回憶去改設定,而是建立一個簡單的 SOP(操作流程)。你可以把它寫成團隊內的清單,確保每一次公開都可控。
小節 1:上架前檢查
- 檔案是否在正確公開前綴
- 檔名/路徑是否符合策略授權範圍
- 內容是否真的可對外
- 是否需要特定內容類型與快取策略
小節 2:策略變更後檢查
- 用無痕視窗測試一個代表性物件 URL
- 若出現 403,先檢查 Block Public Access,再回到 Resource 範圍與物件 Key 對齊
- 確認沒有不小心打開不必要的列表權限(ListBucket)
小節 3:下架與清理
- 不再需要公開時要移除物件,或移到非公開前綴
- 若啟用版本管理,確認舊版是否也需要清理
- 定期抽查公開前綴是否混入不該公開的內容
結語:公開桶不是按一下就好,而是可控的承諾
把 S3 設成公開,真正的難點不在於你會不會寫 Bucket Policy,而在於你是否理解公開的範圍、是否穿透了 Block Public Access 的保護、以及你是否能用驗證方式確認「公網真的能存取」。只要你採用最小權限、限制前綴、並建立驗證與清理流程,就能把風險降到可接受,同時保留速度與便利。
如果你願意,我也可以依你的實際情境(例如:公開整桶還是只公開某資料夾?是否需要列出檔案清單?你用的是 Console 還是要用 AWS CLI?)幫你把策略文字精準改成可直接套用的版本。


