iT邦幫忙

2025 iThome 鐵人賽

DAY 9
0

前言

我們在前一篇文章中,提到 S3 Bucket 架設靜態網站,就兩種做法。

  • 如果桶子裡放靜態網頁,直接對外接收網頁請求,那就必須關掉 BPA (Block Public Access)。:
    Client <--> S3 Bucket
  • 或者是根據最佳實踐原則,用 CDN 夾在中間:
    Client <--> CDN <--> S3 Bucket
  • 修改之前
    https://ithelp.ithome.com.tw/upload/images/20250921/20130149ER9F561bqF.png
  • 修改之後
    https://ithelp.ithome.com.tw/upload/images/20250921/20130149OEIueWRfoC.png
  • Hosting 也關掉吧
    https://ithelp.ithome.com.tw/upload/images/20250921/20130149DEQzNMlxUC.png
  • Hosting 關掉後
    https://ithelp.ithome.com.tw/upload/images/20250921/20130149aPi2WFRvYZ.png

關掉 BPA 會怎麼樣?

  • 如果你確定桶裡面只放單純的靜態網頁,也確認只做單純的事情,那就關吧!
    • Static Website 本來就要 讓任何人 GET Object
    • Bucket Policy 通常會寫成「只允許 s3:GetObject」。

缺點 / 潛在風險

  1. 人為錯誤風險提高
    • 只要 BPA 關掉,之後誰都可以寫一個 更寬鬆的 Bucket Policy (新方法) 或 ACL (舊方法建議慢慢棄用)
      • s3:* Principal: * 這種寬鬆 Bucket Policy,那 S3 不會再幫你擋。
    • 意外把 s3:PutObjects3:DeleteObject 開放給匿名使用者
      • 不小心造成「誰都能覆蓋 / 刪掉網站檔案」
  2. 合規 / 安全掃描會報警告
    • 很多資安工具(AWS Security Hub、Trusted Advisor、外部稽核)會看到「S3 BPA 關掉 + Public Bucket Policy」,就會亮紅燈。
    • 即使這是你刻意設的「public website」,審計人員或 SOC 會認為是弱點,需要額外解釋。
  3. 沒使用 CDN 的壞處
    • HTTPS(S3 website endpoint 只能 http,沒有 https)
    • WAF / 防火牆規則(不能擋惡意請求)
    • 快取與加速(全球訪客可能速度慢)
    • 防盜鏈(不能限制 Referer / 簽名 URL)
  4. 容易被爬蟲掃描
    • 雖然只是公開網頁檔案,但安全掃描器(Shodan、GreyNoise)會自動把 Public S3 bucket 列入可見清單。
    • 雖然檔案內容沒什麼機密,但你的 Bucket 名稱 和 結構 會被知道(可能帶來額外攻擊面)。

開啟 CloudFront / CND

  • 建立新的 Distribution / 來源要選 S3 喔!
    https://ithelp.ithome.com.tw/upload/images/20250921/20130149UJHPZbEZyR.png
  • 這邊留預設的
    https://ithelp.ithome.com.tw/upload/images/20250921/20130149INPKZk6yuO.png
  • WAF 可以順便開啟? 啊我現在不想花每個月八美金保護網站,低消八美金喔!! 一百萬次連線十四美金!!
    https://ithelp.ithome.com.tw/upload/images/20250921/201301493KQY8Mmq8Q.png
  • 關掉ㄌ
    https://ithelp.ithome.com.tw/upload/images/20250921/20130149icHO1c1yBQ.png
  • 要把 Default Root 加入 index.html
    https://ithelp.ithome.com.tw/upload/images/20250921/201301492yxDYeupMi.png
  • 上圖圈起來的地方,加 CNAME Record 吧
    https://ithelp.ithome.com.tw/upload/images/20250921/20130149dn7yniixYp.png
  • 把 CloudFront 端的 Domain 加入我們自定義的域名
    https://ithelp.ithome.com.tw/upload/images/20250921/20130149l20IU5Sg4X.png
  • 匯入憑證喔
    https://ithelp.ithome.com.tw/upload/images/20250921/20130149DZWyc2zY9o.png

結論

  • 使用 CDN 可以改善使用者體驗。
  • 不過依照經驗,用量低的時候會有比較貴一點點的傳輸費單價。
  • 月用量超過 10TB 傳出,開始打折,會變便宜。
  • 連結: https://vlog.nipapa.tw/

上一篇
【Day 8】 實作 / 上傳頁面
下一篇
【Day 10】 製作無伺服器的會員系統 - DynamoDB 的使用入門
系列文
無法成為片師也想拍 Vlog?!個人影音小工具的誕生!30
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言