具有数据敏感对象名称的AWS S3对象

时间:2018-05-22 09:21:33

标签: amazon-web-services amazon-s3

我们将S3对象名称命名为员工的生日。这是愚蠢的。我们希望避免使用敏感数据创建对象名称。使用S3用户定义的元数据存储敏感数据是否安全;或者添加拒绝操作S3:Getobject的S3存储桶策略。哪个会起作用?

3 个答案:

答案 0 :(得分:0)

如你所说;用敏感数据创建对象名称不是一个好主意;但它的确定......也不错。我建议删除S3策略中的listAllObjects()权限。策略应该只允许getObject(),这意味着任何人只有在知道对象名称时才能获取对象;即,当调用api已经知道用户的DOB时。

使用listAllObjects()权限;调用者可以列出存储桶中的所有对象并获取用户的DOB。

答案 1 :(得分:0)

对象密钥和用户元数据不应用于敏感数据。对象键背后的原因很明显,但元数据可能不太明显;

    每次提取对象时,都会在HTTP标头中返回
  • 元数据。这不能禁用,但可以使用CloudFront和Lambda @ Edge响应触发器来解决,可以在通过CloudFront下载对象时用于编辑元数据;然而,
  • 元数据未在S3中加密存储,即使对象本身已加密。

对象标记也不适用于敏感数据,因为它们也不是加密存储的。对象标记对于标记包含敏感数据的对象非常有用,因为标记可以在策略中用于控制对象的访问权限,但这仅在对象本身包含敏感数据时才相关。

如果“敏感”意味着“专有”而不是“个人”,则标签可以是数据的可接受位置......这可能是从业务角度来看被视为敏感的数据,但不一定是存储加密,例如创建对象的特定软件版本的标识。 (我使用此策略,以便如果稍后确定某个版本的代码有错误,我可以确定哪些对象可能已受到影响,因为它们是由该版本生成的)。您可能希望保留此信息的专有权,但在此上下文中它不会“敏感”。

答案 2 :(得分:0)

如果您的s3存储桶用于存储私人数据,而您允许公共访问存储桶,则这总是一个坏主意 - 它基本上是安全隐患。

您可以将存储桶锁定到您的应用,而不是更改现有的s3结构,然后通过cloudfront signed urls提供数据?

基本上在你当前注入s3 url的代码中你可以调用aws api来创建一个来自s3 url和策略的签名url并将这个新url发送给最终用户。这会屏蔽s3网址,你可以强制执行其他限制,例如链接有效期多长,强制要求特定标头或限制对特定IP等的访问权限。您还可以获得cdn边缘缓存并降低成本作为附带好处。

https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/PrivateContent.html