AWS企業帳號代開 AWS S3 儲存桶權限公開設置方法

亞馬遜雲AWS / 2026-07-21 19:51:50

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?)幫你把策略文字精準改成可直接套用的版本。

Telegram售前客服
客服ID
@cloudcup
联系
Telegram售后客服
客服ID
@yanhuacloud
联系