Permissions
嘗試撤銷對 CloudFront S3 儲存桶的公共訪問權限
所有 AWS 安全工具整天都在困擾我,因為我打開了公共 S3 儲存桶訪問。所以我肯定地說,我們唯一需要公共訪問的儲存桶是我們的雲端儲存桶,讓我解決這個問題,然後我可以使用新的“不要公開任何這些你有什麼問題”設置。我關注了 AWS 文件,https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-restricting-access-to-s3.html
因此,我進入了 cloudfront 發行版的來源,並將其設置為“限制儲存桶訪問”。我讓它創建一個新的原始訪問身份並將其應用於儲存桶。有用。我去檢查儲存桶權限/策略,現在它說:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AddPerm", "Effect": "Allow", "Principal": "*", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::cloudfront-mycompany-us-west-2/*" }, { "Sid": "2", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity E22JXXXXXKYVK2" }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::cloudfront-mycompany-us-west-2/*" } ] }
這一切看起來都很好。但是,當我“阻止公共訪問”該 S3 儲存桶時,我的網站會離線。我在 cloudtrail 和 cloudwatch 日誌中環顧四周,但看不到任何似乎表明原因的東西。
有沒有人讓 CloudFront 使用非公共 S3 儲存桶並知道我錯過了什麼步驟?
您有一個額外的語句(頂部)允許“*”訪問儲存桶的對象。您只需要底部策略即可允許 CloudFront 使用 OAI 訪問對象。當您“阻止所有公共訪問”時,它會看到您在那裡有一個公共條目,它可能只是禁用整個策略而不僅僅是頂部。刪除第一條語句,確保 OAI 與與您的 CF 發行版關聯的 OAI 相同,然後打開“阻止所有公共訪問”。如果 CloudFront 自動將其策略放在儲存桶上,則之前的語句已經從之前手動放置在儲存桶上。