9

我正在使用 Amazon S3 将客户的文档存档在单个存储桶和一系列文件夹中,以区分每个客户。

MyBucket/0000001/..
MyBucket/0000002/..
MyBucket/0000003/..

我的客户现在正在寻找一种将他们的文件独立备份到本地机器的方法。我想在给定的文件夹级别创建一组权限,以便仅在特定文件夹中查看/下载这些文件。

我希望在我的应用程序范围之外执行此操作,我的意思是,我想在 S3 浏览器中创建一组权限,并告诉我的客户使用一些第 3 方应用程序链接到他们的区域。有人知道这是否可能吗?我目前反对编写一个模块来自动化它,因为它们的需求还不够大。

4

2 回答 2

15

您可以将 IAM 策略与存储桶策略结合使用来管理此类访问。

每个单独的客户都需要他们自己的 IAM 配置文件,并且您将设置策略以将对象访问权限仅限于这些账户。

这是 AWS 文档:

http://docs.aws.amazon.com/AmazonS3/latest/dev/UsingIAMPolicies.html

我会特别指出该文档中的示例 1,它完全符合您的要求。

于 2013-04-08T16:57:47.007 回答
2

请参阅以下策略以限制用户仅将对象上传或列出到特定文件夹。我创建了一个策略,允许我仅列出文件夹 1 和文件夹 2 的对象,还允许将对象放入文件夹 1 并拒绝上传到存储桶的其他文件夹。该策略如下: 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/*"
        }
    ]
}
于 2018-01-18T16:25:41.377 回答