我的客户使用旧的 TLS 版本。当他们访问存储在我的 Amazon Simple Storage Service(Amazon S3)存储桶中的内容时,我想强制使用最新的 TLS 版本。如何针对 Amazon S3 存储桶强制使用 TLS 1.2 或更高版本?
简短描述
对传输中的数据使用现代加密协议是最佳实践。您可以通过更新存储桶的安全政策,针对访问 Amazon S3 的连接强制使用 TLS 1.2 或更高版本。
**注意:**如果您的客户不使用 TLS 1.2 或更高版本,则他们无法访问存储在您的 S3 存储桶中的内容。
解决方法
您可以使用附加到存储桶的基于资源的策略,针对访问 S3 存储桶的所有连接强制使用 TLS 1.2 或更高版本。
要设置需要 TLS 1.2 或更高版本的存储桶策略,请执行以下操作:
- 前往 S3 控制台。
- 从列表中选择存储桶。
- 导航到 Permissions(权限)选项卡。
- 在 Bucket Policy(存储桶策略)下,选择 Edit(编辑)。
- 添加策略以拒绝对您要阻止的加密协议的访问。例如,使用以下策略拒绝使用低于 TLS 1.2 版本的所有 HTTPS 请求:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "EnforceTLSv12orHigher",
"Principal": {
"AWS": "*"
},
"Action": ["s3:*"],
"Effect": "Deny",
"Resource": [
"arn:aws:s3:::DOC-EXAMPLE-BUCKET/*",
"arn:aws:s3:::DOC-EXAMPLE-BUCKET"
],
"Condition": {
"NumericLessThan": {
"s3:TlsVersion": 1.2
}
}
}
]
}
确认您针对 S3 使用的是现代加密协议
要测试您的新策略,请使用以下示例 curl 命令,使用特定的传统协议发出 HTTPS 请求:
curl https://${BUCKET_NAME}.s3.us-east-1.amazonaws.com/image.png -v --tlsv1.0 --tls-max 1.0
示例 curl 命令返回 Access Denied(访问被拒绝),因为 Amazon S3 检测到您的请求未使用 TLS 1.2 或更高版本。
最佳实践是使用 AWS CloudTrail Lake 来识别访问 AWS 服务端点的较旧 TLS 连接。您可以配置 CloudTrail Lake 事件数据存储以捕获管理事件或数据事件。CloudTrail Lake 中相应的 CloudTrail 事件显示 TLS 版本为 1.2,这证实了您的客户使用现代安全政策连接到 Amazon S3。