在AWS S3和IAM文件夹策略中使用Duplicity

我试图从多个主机设置备份到一个桶。 每台主机都有自己的AWSlogin和凭证。 最上面的文件夹(前缀)映射到AWS用户ID,我试图限制只能访问该文件夹。

在备份期间,我得到“S3ResponseError:403 Forbidden”。 我正在使用以下政策:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowGroupToSeeBucketListInTheConsole", "Action": [ "s3:ListAllMyBuckets", "s3:GetBucketLocation" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::*" ] }, { "Sid": "AllowRootAndHomeListingOfCompanyBucket", "Action": [ "s3:ListBucket" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::mybucketexample" ], "Condition": { "StringEquals": { "s3:prefix": [ "" ], "s3:delimiter": [ "/" ] } } }, { "Sid": "AllowListingOfUserFolder", "Action": [ "s3:ListBucket" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::mybucketexample" ], "Condition": { "StringLike": { "s3:prefix": [ "${aws:username}/*" ] } } }, { "Sid": "AllowAllS3ActionsInUserFolder", "Action": [ "s3:*" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::mybucketexample/${aws:username}/*" ] } ] } 

当我附加一个允许所有访问s3的策略时,重复备份工作得很好。 所以上面的政策是缺less的东西或有错误。

一个有趣的观察:最终在S3中有重复文件,所以我想知道是否允许放置,但列表不是。

有任何想法吗?

我也遇到过这个问题,在AWS论坛上有关于这个问题的详细讨论。

主要的问题是,一些S3客户端根本不在“ListBucket”请求中添加“前缀”。 因此,“AllowRootAndHomeListingOfCompanyBucket”上没有匹配,因此拒绝访问。 这应该是双重性的情况。

另一个解决方法是使用拒绝规则,而丹尼尔在该线程中提出了这个规则。 这个政策应该和你提到的一样。

下面是一个修改和添加用户variables,它应该工作的重复性:

 { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowUserToSeeBucketListInTheConsole", "Action": [ "s3:ListAllMyBuckets", "s3:GetBucketLocation" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::*" ] }, { "Sid": "AllowRootAndHomeListingOfCompanyBucket", "Action": [ "s3:ListBucket" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::mybucketexample" ] }, { "Sid": "DenyAllListingExceptRootAndUserFolders", "Effect": "Deny", "Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::mybucketexample" ], "Condition": { "Null": { "s3:prefix": "false" }, "StringNotLike": { "s3:prefix": [ "", "${aws:username}/*" ] } } }, { "Sid": "AllowAllS3ActionsInUserFolder", "Effect": "Allow", "Action": [ "s3:*" ], "Resource": [ "arn:aws:s3:::mybucketexample/${aws:username}/*" ] } ] }