【问题标题】:amazon server side encryption with post request带有发布请求的亚马逊服务器端加密
【发布时间】:2015-10-16 16:42:20
【问题描述】:

我正在尝试使用和实施亚马逊 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 标头并上传文件。但是,在亚马逊后端控制台中检查时,我可以看到这些文件 加密

有人知道我做错了什么吗?我还尝试将x-amz-server-side-encryption 作为表单字段传递,但它没有帮助。 有趣的是,当我删除 x-amz-server-side-encryption 标头时,请求因“拒绝访问”原因而失败。

【问题讨论】:

  • 我建议您暂时删除存储桶策略并将 x-amz-server-side-encryption=AES256 放在表单中,并将{"x-amz-server-side-encryption": "AES256"}, 放在表单策略文档中,标题中没有任何内容,看看你得到了什么。还要检查响应标头,因为它们应该包含对加密的提及。
  • 是的,我就是这么做的,谢谢!

标签: amazon-web-services encryption amazon-s3


【解决方案1】:

解决方案是将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”表单字段。在这种情况下无需将其添加为标题

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-06
    • 1970-01-01
    • 1970-01-01
    • 2011-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多