8

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

我的问题是:

  1. 我如何确保我的客户没有一个可能使用这对来窥视桶和不是他自己的文件夹?我可以创建“只写”访问对吗?

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

4

3 回答 3

11

我刚刚创建了一个像这样的只写策略,它似乎正在工作:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObject"
            ],
            "Resource": [
                "arn:aws:s3:::BUCKET_NAME/*"
            ]
        }
    ]
}

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

于 2018-06-13T13:57:32.820 回答
4

使用 IAM 为每个客户创建一个单独的用户(不仅仅是一个额外的密钥对),然后让每个用户只访问他们的 S3 文件夹。例如,如果存储桶被调用everybodysbucket,并且客户 A 的文件都以userA/(客户 B的文件都以 开头userB/),那么您可以将权限授予everybodysbucket/userA/*客户 A 的用户和客户 B 的权限everybodysbucket/userB/*

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

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

于 2013-02-25T22:09:53.643 回答
0

作为Charles 回答中推荐的方法的一种变体,您还可以通过 SFTP 在用户级别管理访问控制。这些用户都可以共享相同的全局 IAM 策略:

  • SFTP 确实支持用户特定的主目录(类似于“chroot”)。
  • SFTP 允许您通过服务管理的身份验证或您自己的身份验证提供程序来管理用户访问。我不确定服务管理的身份验证是否有用户限制。
  • 如果您希望允许用户使用客户端访问上传的文件,SFTP 非常干净地提供了它。
于 2020-02-14T20:36:59.827 回答