我已啟用 AWS Config 規則 “s3-bucket-ssl-requests-only”,以供 Amazon Simple Storage Service (Amazon S3) 儲存貯體政策在資料傳輸期間要求加密。我想確保我的儲存貯體政策遵守此規則。
解決方法
**注意:**Amazon S3 提供傳輸中加密和靜態加密。傳輸中加密是指 HTTPS,而靜態加密是指用戶端或伺服器端加密。
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"**的請求。如果請求使用 HTTPS,此陳述式會允許對儲存貯體中所有物件的 s3:GetObject 進行匿名存取。除非您的使用案例需要透過 HTTPS 進行匿名存取,否則請避免使用此類型的儲存貯體政策:
{
"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": "*"
}
]
}
相關資訊
如何使用儲存貯體政策並套用深度防禦以協助保護您的 Amazon S3 資料