弱弱自己的部落格圖庫是使用AWS S3 & AWS CloudFront

但基於安全性與最佳練習,弱弱不想讓該AWS S3 Bucket隨便公開給別人存取。

所以使用了CloudFront Origin Access Identity搭配AWS S3 Bucket Policy來限制存取。

S3 Bucket這部分就不多說明了,僅說明CloudFront OAICloudFront設定,並且修改S3 Policy

流程大概是:

  • 建立CloudFront OAI(Origin Access Identity)
  • 設定CloudFront ODN(Origin Domain Name)
  • 修改S3 Bucket Policy
  • 驗證

不多說,上圖!

oai01 進入到CloudFront Service後點選左下角的Origin Access Identity

oai02 點擊Create Origin Access Identity

oai03 在跳出的頁面輸入comment

oai04 OAI就建好囉

oai05 接著要建立CloudFront

oai06 新增一個Disreibutions並選擇Web

oai07 Origin Domain Name選擇S3 Bucket

oai08 這邊要稍微注意一下,不要又新增另一個OAI了。另外因為等等要演示S3 Policy的部分,所以這邊並沒有讓它自動更新Policy

oai09 接下來要設定以及調整一下CNAME跟預先申請好的ACM

到了這一部分,CloudFront的部分已經設定好了,在Status變成Deployed前,我們可以先去設定S3 Policy

oai10 主要要看Principal這個部分,要設定為"AWS":"arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity Your_OAI_ID"

oai11 接著我們來驗證一下,開啟S3 Static WebSite Hosting複製EndPoint

oai12 在瀏覽器貼上後會發現跳出AccessDenied的訊息

oai13 如果我們改用CNAME後(Route53或自管DNS)的URL,就會正常讀取

當然如果需要保護的更嚴謹一點,可以在CloudFront前面再加上AWS WAF

這部分弱弱就沒有設定了(因為費用問題XDDD)