我正在使用一个桶策略,拒绝任何非SSL通信和未加密的对象上传。
{
"Id": "Policy1361300844915",
"Version": "2012-10-17",
"Statement": [
{
"Sid": "DenyUnSecureCommunications",
"Action": "s3:*",
"Effect": "Deny",
"Resource": "arn:aws:s3:::my-bucket",
"Condition": {
"Bool": {
"aws:SecureTransport": false
}
},
"Principal": {
"AWS": "*"
}
},
{
"Sid": "DenyUnEncryptedObjectUploads",
"Action": "s3:PutObject",
"Effect": "Deny",
"Resource": "arn:aws:s3:::my-bucket/*",
"Condition": {
"StringNotEquals": {
"s3:x-amz-server-side-encryption": "AES256"
}
},
"Principal": {
"AWS": "*"
}
}
]
}
该策略适用于支持SSL和SSE设置的应用程序,但仅适用于正在上传的对象。
我遇到了以下问题:
- CloudBerry Explorer和S3浏览器在具有Bucket Policy的存储桶中进行文件夹和文件的重命名时失败。在我仅在存储桶策略中应用SSL要求后,这些浏览器成功地完成了文件/文件夹重命名。
只有在启用选项-通过本地计算机进行Amazon S3复制/移动(速度较慢且需要花费一定费用)之后,CloudBerry Explorer才能使用完整的SSL/SSE存储桶策略重命名对象。
由于该限制性策略,Amazon S3内部的所有复制/移动都失败了。
这意味着我们无法控制不起源于操作本地对象的应用程序的复制/移动过程。至少上述提到的CloudBerry选项证明了这一点。
但我可能是错的,这就是为什么我发布这个问题。
- 在我的情况下,启用了该Bucket Policy后,S3管理控制台变得无用。用户无法创建、删除文件夹,他们只能上传文件。
我的Bucket Policy是否有问题?我不知道Amazon S3用于对象操作的机制。
Amazon S3是否以不同方式处理外部请求(API / http标头)和内部请求?
是否可以仅将此策略应用于上传而不是内部Amazon S3 GET / PUT等操作?我已尝试使用存储桶URL的http referer但无济于事。
带有SSL / SSE要求的Bucket Policy对我的实现是强制性的。
任何想法都将不胜感激。
非常感谢。