在尝试启用复制之前,我们一直在使用适用于存储桶策略的模板,这些模板效果很好。该策略的第一件事是拒绝语句,该语句具有特定vpce的例外和三个IP网络范围。 deny语句后跟一些allow语句。这很好。当我们尝试配置复制时,对于添加或更新的任何对象,我们都会获得复制失败状态。因此,我们将为此复制创建的IAM角色添加到了拒绝异常以及作为主体的allow语句中。这仍然会导致复制失败。我们知道问题出在政策上,因为删除政策会导致复制正常完成。这是deny语句的格式...
"Statement": [
{
"Sid": "Stmt1587152999999",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:*",
"Resource": [
"<Bucket ARN>",
"<Bucket ARN>/*"
],
"Condition": {
"NotIpAddress": {
"aws:SourceIp": [
"x.x.x.x/xx",
"x.x.x.x/xx",
"x.x.x.x/xx"
]
},
"StringNotEquals": {
"aws:SourceVpce": "<VPCE ID>"
},
"ArnNotEquals": {
"aws:SourceArn": "<IAM role created for replication>"
}
}
},
用于复制的IAM角色的源信息是否是将其从deny语句中排除的正确方法?还有另一种方法可以限制访问,同时仍然允许复制吗?
答案 0 :(得分:0)
拒绝语句总是很困难。他们往往最终否认比预期更多。
我认为以上说法是这样的:
这实际上应该是在说“不要否认以上任何一项为真”(也就是说,它们使用的是IP或VPC端点或IAM角色)。
请参阅:Creating a condition with multiple keys or values - AWS Identity and Access Management
这意味着您的陈述应该是正确的,但是您报告有问题。我看不到您正在做的事情有直接的问题,但是请尝试从具有IAM角色条件的 only 开始,测试其是否正常运行,然后一次添加其他条件是时候找出冲突原因了。
答案 1 :(得分:0)
我的政策存在问题在于角色ARN。
我使用了“ aws:SourceArn”,但应该使用了“” aws:PrincipalArn“
我很确定我从策略生成器获得了SourceArn。我最终打开了一个案例,经过几次反复的支持,我得到了“ aws:PrincipalArn”。可行!