【发布时间】:2022-01-23 01:13:16
【问题描述】:
我有一个 s3 存储桶,我在其中制定了一项政策,以防止任何人在对象不是来自我的 VPC 的情况下访问这些对象,但是,现在当我在存储桶上放置生命周期策略时,它不适用
这是我对存储桶的当前政策:
{ "Version": "2012-10-17", "Id": "Policy1636125293921", "Statement": [ { "Sid": "Stmt1636125292369", "Effect": "Deny", "Principal": "*", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::bucketname/*", "Condition": { "StringNotEquals": { "aws:SourceVPC": [ "vpc-0987654321", "vpc-1234567890" ] } } } ] }
我已尝试添加第二条语句,通过此语句向我的用户提供完全访问权限:
{ "Sid": "Stmt1636125292368", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:user/username" }, "Action": "s3:*", "Resource": "arn:aws:s3:::bucketname/*" }
我已经尝试了第二条语句的几种不同组合,但它仍然没有运行生命周期策略,该策略存在并且存在,但它没有运行。在其中一个对象的“对象管理概述”下,到期日期和到期规则保持空白,但是如果我删除拒绝策略,那么我可以看到到期日期。我需要那个拒绝政策来继续做它做的事情,所以我不能删除它。我还要补充一点,我使用的用户具有完全的管理员权限。
【问题讨论】:
-
是生命周期策略没有运行的问题,还是无法“添加生命周期策略”(这种情况,报错信息是什么)?
-
@JohnRotenstein 该政策存在,我可以添加它,我还使用“get-bucket-lifecycle-configuration”通过 CLI 检查,我可以在那里看到它。但是它没有运行,并且在管理配置下的对象概述中,过期规则和过期日期保持空白
-
一般来说,最好避免使用
Deny策略。在这种情况下,它似乎拒绝了生命周期策略正在尝试的更改,因为它不是来自您的 VPC。如果您有一个超级机密存储桶,有时将其放入不同的 AWS 账户然后限制对该账户的访问会更容易。 -
@JohnRotenstein 我设法使用“NotPrincipal”让它适用于我的用例,我什至不知道它在今天之前存在。感谢您的帮助
标签: amazon-web-services amazon-s3 policy aws-policies