由于存储桶策略,AWS S3复制失败

时间:2020-10-19 20:46:43

标签: amazon-web-services amazon-s3

在尝试启用复制之前,我们一直在使用适用于存储桶策略的模板,这些模板效果很好。该策略的第一件事是拒绝语句,该语句具有特定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语句中排除的正确方法?还有另一种方法可以限制访问,同时仍然允许复制吗?

2 个答案:

答案 0 :(得分:0)

拒绝语句总是很困难。他们往往最终否认比预期更多。

我认为以上说法是这样的:

  • 如果满足以下条件,则拒绝对此S3存储桶的访问:
    • 您不是来自以下IP地址之一,即 AND
    • 您不会通过该VPC端点 AND
    • 您没有使用该IAM角色

这实际上应该是在说“不要否认以上任何一项为真”(也就是说,它们使用的是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”。可行!