[AWS]S3限制只讓CloudFront存取
弱弱自己的部落格圖庫是使用AWS S3
& AWS CloudFront
但基於安全性與最佳練習,弱弱不想讓該AWS S3 Bucket
隨便公開給別人存取。
所以使用了CloudFront Origin Access Identity
搭配AWS S3 Bucket Policy
來限制存取。
S3 Bucket
這部分就不多說明了,僅說明CloudFront OAI
及CloudFront
設定,並且修改S3 Policy
流程大概是:
- 建立
CloudFront OAI(Origin Access Identity)
- 設定
CloudFront ODN(Origin Domain Name)
- 修改
S3 Bucket Policy
- 驗證
不多說,上圖!
進入到CloudFront Service
後點選左下角的Origin Access Identity
點擊Create Origin Access Identity
在跳出的頁面輸入comment
OAI
就建好囉
接著要建立CloudFront
新增一個Disreibutions
並選擇Web
Origin Domain Name
選擇S3 Bucket
這邊要稍微注意一下,不要又新增另一個OAI
了。另外因為等等要演示S3 Policy
的部分,所以這邊並沒有讓它自動更新Policy
接下來要設定以及調整一下CNAME
跟預先申請好的ACM
到了這一部分,CloudFront
的部分已經設定好了,在Status
變成Deployed
前,我們可以先去設定S3 Policy
主要要看Principal
這個部分,要設定為"AWS":"arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity Your_OAI_ID"
接著我們來驗證一下,開啟S3 Static WebSite Hosting
複製EndPoint
在瀏覽器貼上後會發現跳出AccessDenied
的訊息
如果我們改用CNAME
後(Route53或自管DNS)的URL,就會正常讀取
當然如果需要保護的更嚴謹一點,可以在CloudFront
前面再加上AWS WAF
這部分弱弱就沒有設定了(因為費用問題XDDD)