我为 Amazon Simple Storage Service(Amazon S3)桶策略激活了 AWS Config 规则“s3-bucket-ssl-requests-only”,要求在数据传输期间进行加密。我想确保我的桶策略符合此规则。
解决方法
**注意:**Amazon S3 提供传输加密和静态加密。传输加密是指 HTTPS,静态加密是指客户端或服务器端加密。
Amazon S3 同时允许 HTTP 和 HTTPS 请求。默认情况下,Amazon S3 通过 AWS 管理控制台、AWS 命令行界面(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 数据