我使用Amazon S3将客户的文档存档在一个存储桶和一系列文件夹中,以区分每个客户端。
MyBucket/0000001/..
MyBucket/0000002/..
MyBucket/0000003/..
我的客户现在正在寻找一种将文件独立备份到本地计算机的方法。我想在给定的文件夹级别创建一组权限,以便仅在特定文件夹中查看/下载这些文件。
我希望在我的应用程序范围之外执行此操作,我的意思是,我想在S3浏览器中创建一组权限并告诉我的客户使用某些第三方应用程序链接到他们的区域。有人知道这是否可行?我现在反对编写一个模块来实现自动化,因为它们的需求并不是很大。
答案 0 :(得分:11)
您可以将IAM策略与存储桶策略结合使用来管理此类访问。
每个客户都需要自己的IAM配置文件,您可以设置策略来限制对象只能访问这些帐户。
以下是AWS文档:
http://docs.aws.amazon.com/AmazonS3/latest/dev/UsingIAMPolicies.html
我特别指出该文档中的示例1,它完全符合您的要求。
答案 1 :(得分:0)
请参阅以下政策以限制用户仅将对象上传或列出到特定文件夹。我创建了一个策略,允许我只列出folder1和folder2的对象,还允许将对象放到folder1并拒绝上传到存储桶的其他文件夹。 该政策如下: 1.列出存储桶的所有文件夹 2.列出允许的文件夹的对象和文件夹 3.仅将文件上载到允许的文件夹
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowUserToSeeBucketListInTheConsole",
"Action": [
"s3:ListAllMyBuckets",
"s3:GetBucketLocation"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::*"
]
},
{
"Sid": "AllowListingOfFolder1And2",
"Action": [
"s3:*"
],
"Effect": "Deny",
"Resource": [
"arn:aws:s3:::bucketname"
],
"Condition": {
"StringNotLike": {
"s3:prefix": [
"folder1/*",
"folder2/*"
]
},
"StringLike": {
"s3:prefix": "*"
}
}
},
{
"Sid": "Allowputobjecttofolder1only",
"Effect": "Deny",
"Action": "s3:PutObject",
"NotResource": "arn:aws:s3:::bucketname/folder1/*"
}
]
}