我為 Amazon Simple Storage Service (Amazon S3) 儲存貯體政策啟動了 s3-bucket-ssl-requests-only AWS Config 規則,以要求在傳輸資料期間進行加密。我想確保我的儲存貯體政策遵守此規則。
解決方法
Amazon S3 允許 HTTP 和 HTTPS 請求。依預設,Amazon S3 會透過 AWS 管理主控台、AWS Command Line Interface (AWS CLI) 或 HTTPS 提出請求。
若要遵守 s3-bucket-ssl-requests-only 規則,請確認您的儲存貯體政策明確拒絕對 HTTP 請求的存取。允許 HTTPS 請求但未明確拒絕 HTTP 請求的儲存貯體政策可能不符合規則。
若要確定儲存貯體政策中的 HTTP 或 HTTPS 請求,使用檢查 aws:SecureTransport 金鑰的條件。當您將關鍵條件設為 true 時,Amazon S3 會透過 HTTPS 傳送請求。為了遵守 s3-bucket-ssl-requests-only 規則,請建立儲存貯體政策,當請求滿足 "aws:SecureTransport": "false" 條件時,明確拒絕對 HTTP 請求的存取。
符合 s3-bucket-ssl-requests-only 規則的儲存貯體政策
以下範例儲存貯體政策符合 s3-bucket-ssl-requests-only 規則。當請求滿足 "aws:SecureTransport": "false" 條件時,政策明確拒絕儲存貯體和物件的所有動作:
{
"Id": "ExamplePolicy",
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowSSLRequestsOnly",
"Action": "s3:*",
"Effect": "Deny",
"Resource": [
"arn:aws:s3:::DOC-EXAMPLE-BUCKET",
"arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"
],
"Condition": {
"Bool": {
"aws:SecureTransport": "false"
}
},
"Principal": "*"
}
]
}
儲存貯體政策不符合 s3-bucket-ssl-requests-only 規則
以下儲存貯體政策不符合 s3-bucket-ssl-requests-only 規則。此政策允許存取符合 "aws:SecureTransport": "true" 條件的請求,而不是明確的 Deny (拒絕) 陳述式。當請求使用 HTTPS 時,該陳述式允許對儲存貯體中的所有物件匿名存取 GetObject:
{
"Id": "ExamplePolicy",
"Version": "2012-10-17",
"Statement": [
{
"Sid": "NOT-RECOMMENDED-FOR__AWSCONFIG-Rule_s3-bucket-ssl-requests-only",
"Action": "s3:GetObject",
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"
],
"Condition": {
"Bool": {
"aws:SecureTransport": "true"
}
},
"Principal": "*"
}
]
}
**注意:**只有當您的使用案例需要透過 HTTPS 進行匿名存取時,才使用上述儲存貯體政策。
相關資訊
如何使用儲存貯體政策並套用深度防禦以協助保護您的 Amazon S3 資料