我将几个客户的文件直接备份到Amazon S3存储桶 - 每个客户到另一个文件夹。我正在使用一个在Windows任务下运行的简单.Net客户端,每晚一次。为了允许写入存储桶,我的客户端需要AWS访问密钥和密钥(我创建了一对新密钥)。
我的问题是:
如何确保我的客户都不可能使用该对来查看存储桶和不属于他自己的文件夹?我可以创建“只写”访问对吗?
我是以正确的方式接近这个吗?这应该通过AWS访问设置解决,还是我应该在上传之前客户端加密客户机器上的文件(每个客户使用不同的密钥)并避免上述交叉访问?
答案 0 :(得分:2)
使用IAM为每个客户创建一个单独的用户(而不仅仅是一个额外的密钥对),然后让每个用户只能访问他们的S3文件夹。例如,如果存储桶被调用everybodysbucket
,而客户A的文件都以userA/
开头(而客户B则以userB/
开头),那么您可以向everybodysbucket/userA/*
授予权限客户A的用户,以及客户B的everybodysbucket/userB/*
。
这将阻止每个用户看到任何不属于他们自己的资源。
使用还可以控制每个用户可以访问的特定S3操作,而不仅仅是资源。所以,是的,如果需要,您可以向用户授予只写权限。
答案 1 :(得分:0)
我刚刚创建了这样的只写策略,它似乎正在运行:
output = [{'ORDERID': 123, 'LEAVESQTY': 5000},
{'ORDERID': 456, 'LEAVESQTY': 100},
{'ORDERID': 789, 'LEAVESQTY': 300}]
我认为像这样创建一个更简洁的解决方案。
答案 2 :(得分:0)
作为Charles' answer中建议的方法的变体,您还可以通过SFTP在用户级别管理访问控制。这些用户都可以共享相同的全局IAM策略: