Amazon S3 只写访问

Tra*_*Guy 6 permissions amazon-s3 amazon-web-services

我将多个客户的文件直接备份到 Amazon S3 存储桶中 - 每个客户都备份到不同的文件夹。我正在使用一个简单的 .Net 客户端,每晚在 Windows 任务下运行一次。为了允许写入存储桶,我的客户需要 AWS 访问密钥和秘密密钥(我创建了一个新密钥对)。

我的问题是:

  1. 我如何确保我的客户没有可能使用这对工具查看存储桶和非他自己的文件夹?我可以创建“只写”访问对吗?

  2. 我是否以正确的方式接近这个?这应该通过 AWS 访问设置来解决,还是应该在上传之前客户端加密客户机器上的文件(每个客户使用不同的密钥)并避免上述交叉访问?

Cha*_*lke 8

使用 IAM 为每个客户创建单独的用户(而不仅仅是额外的密钥对),然后授予每个用户仅访问其 S3 文件夹的权限。例如,如果存储桶名为everybodysbucket,并且客户 A 的文件均以 开头userA/(客户 B 的文件均以userB/)开头,则您可以向客户 A 的用户授予 权限everybodysbucket/userA/*,向everybodysbucket/userB/*客户 B 的用户授予 权限。

这将防止每个用户看到任何不属于自己的资源。

使用还可以控制每个用户可以访问的特定 S3 操作,而不仅仅是资源。所以,是的,如果需要,您可以向用户授予只写权限。


Alp*_*per 8

我刚刚创建了一个这样的只写策略,它似乎有效:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObject"
            ],
            "Resource": [
                "arn:aws:s3:::BUCKET_NAME/*"
            ]
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

我认为创建这样的水滴是一个更简洁的解决方案。