Amazon服务器端post请求加密



我正在尝试使用和强制amazon s3服务器端加密。我按照他们的文档创建了以下桶策略:

{
   "Version":"2012-10-17",
    "Id":"PutObjPolicy",
    "Statement":[{
        "Sid":"DenyUnEncryptedObjectUploads",
        "Effect":"Deny",
        "Principal":"*",
        "Action":"s3:PutObject",
        "Resource":"arn:aws:s3:::YourBucket/*",
        "Condition":{
           "StringNotEquals":{
              "s3:x-amz-server-side-encryption":"AES256"
           }
        }
     }
  ]
} 

我正在使用python boto包,当我添加x-amz-server-side-encryption头时,它的工作就像一个魅力。

问题是应用程序中有几个地方使用HTML表单的post请求来上传文件到s3。

我已经设法添加了x-amz-server-side-encryption头和文件上传。然而,当检查amazon后端控制台时,我可以看到这些文件是而不是加密的

有人知道我做错了什么吗?我也试图通过x-amz-server-side-encryption作为一个表单字段,但它没有帮助。有趣的部分是,当我删除x-amz-server-side-encryption标头时,请求因"访问拒绝"原因失败。

解决方案是将x-amz-server-side-encryption添加到策略对象中。

例如:

POLICY = """{'expiration': '2016-01-01T00:00:00Z',
'conditions': [
   {'bucket': 'my_bucket'},
   ['starts-with', '$key', '%s/'],
   {'acl': 'public-read'},
   ['starts-with', '$Content-Type', ''],
   ['content-length-range', 0, 314572800],
  {'x-amz-server-side-encryption': 'AES256'}
]
}"""

并添加值为"AES256"的'x-amz-server-side-encryption'表单字段。在本例中,不需要将其添加为标题

最新更新