如何创建 public 多区域访问点策略?

How to create a public Multi-Region Access Point policy?

我正在试验多区域接入点及其过于复杂的策略语法,但我无法让最简单的东西发挥作用。

我在全球生成了 3 个存储桶,并创建了一个访问点。我的所有项目都是私有的,因为我的多区域访问点策略尚未配置。

到目前为止我有这个:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "*"
            },
            "Action": "s3:GetObject",
            "Resource": [
                "arn:aws:s3::<my account id>:accesspoint/xyz.mrap"
            ],
            "Condition": {
                "StringEquals": {
                    "s3:DataAccessPointAccount": "<my account id>"
                }
            }
        }
    ]
}

错误指出:

Action does not apply to any resource(s) in statement

他们的 example 使用 "Action" : "*", 但我想限制这个。

谁能帮我看看我的保单有什么问题吗?

s3:GetObject 仅适用于 对象 。您的 arn:aws:s3::<my account id>:accesspoint/xyz.mrap 代表访问点,而不是它的对象。因此它应该是:

            "Resource": [
                "arn:aws:s3::<my account id>:accesspoint/xyz.mrap/*"
            ],

根据 docs,接入点策略需要 /object/* 前缀:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "*"
            },
            "Action": [
                "s3:ListBucket",
                "s3:GetObject"
            ],
            "Resource": [
                "arn:aws:s3::123456789012:accesspoint/xyz.mrap",
                "arn:aws:s3::123456789012:accesspoint/xyz.mrap/object/*"
            ]
        }
    ]
}

您似乎正在尝试向 "AWS": "*" 主体授予 public 访问权限,要审核的步骤:

  1. 确保您的 MRAP 是在 public 关闭访问限制的情况下创建的
  2. 根据this guide,将您的存储桶的权限委托给您的 MRAP,确保存储桶不会妨碍
  3. 制定适合的 MRAP 政策