【问题标题】:S3-bucket. Unknow error occured: Action does not apply to any resource(s) in statement. How to create s3-bucket policy?S3 桶。发生未知错误:操作不适用于语句中的任何资源。如何创建 s3-bucket 策略?
【发布时间】:2020-12-24 22:58:51
【问题描述】:

我尝试按照下一个教程进行操作:https://docs.aws.amazon.com/AmazonS3/latest/user-guide/add-bucket-policy.html 但出现“未知错误”缺少必填字段主体

json:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:GetObject",
                "s3:DeleteObject",
                "s3:ListObjectsV2",
                "s3:ListObjects"
            ],
            "Resource": "arn:aws:s3:::awesome-proj/*"
        },
        {
            "Sid": "VisualEditor1",
            "Effect": "Allow",
            "Action": "s3:GetBucketLocation",
            "Resource": "arn:aws:s3:::awesome-proj"
        }
    ]
}

我生成了一个策略,但结果相同:

我更新了 ResourcePrincipal 的值 - :

{
    "Id": "Policy1608869326556",
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Stmt1608869322454",
            "Action": [
                "s3:GetObject",
                "s3:ListBucket",
                "s3:PutObject"
            ],
            "Effect": "Allow",
            "Resource": "arn:aws:s3:::awesome-proj/*",
            "Principal": "*"
        }
    ]
}

因此,我现在遇到错误Action does not apply to any resource(s) in statement

如何正确创建 s3-bucket 策略?

【问题讨论】:

  • 存储桶策略没有ec2-user 这样的东西。你想达到什么目标?从 ec2 实例访问存储桶?
  • 如果您展开“API 响应”会显示什么信息?
  • @JohnRotenstein API 响应消息:操作不适用于声明中的任何资源
  • @Marcin 我需要将文件从 ec2-user 保存到存储桶

标签: amazon-web-services amazon-s3


【解决方案1】:

本政策将满足您的要求:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": [
                "s3:DeleteObject",
                "s3:GetBucketLocation",
                "s3:GetObject",
                "s3:ListBucket",
                "s3:PutObject"
            ],
            "Resource": [
                "arn:aws:s3:::awesome-proj",
                "arn:aws:s3:::awesome-proj/*"
            ]
        }
    ]
}

需要注意的几点:

  • 我直接引用了存储桶 (awesome-proj) 和存储桶的内容 (awesome-proj/*),因为有些操作适用于存储桶,有些则适用于存储桶的对象。李>
  • API 调用并不总是直接映射到权限操作。例如,没有名为s3:ListObjectsV2 的权限——它实际上使用了s3:ListBucket
  • 此策略授予任何人 (*) 使用这些操作的权限,这对安全非常不利!。您绝不应该允许任何人在存储桶中放置/删除对象。相反,直接在 IAM 内授予对 IAM 用户的权限,而不是使用存储桶策略。向特定人员授予权限时,请使用 IAM 而不是存储桶策略。

【讨论】:

    【解决方案2】:

    如错误消息所述,您的策略缺少Principal。也就是说,政策没有说明正在接收权限。

    您显示的策略在附加到 IAM 用户时将起作用(因为委托人自动成为它所附加到的 IAM 用户),但在提供 存储桶策略时,委托人必须指定。

    如果您使用了策略生成器,您可以在一个字段中指定主体。如果您希望 任何人 拥有这些权限,则可以将 * 指定为 Principal。但是,我不建议这样做,因为该策略授予上传/下载/删除权限。

    【讨论】:

    • 谢谢。但是我现在生成了策略并得到了相同的结果。请查看更新的答案
    【解决方案3】:

    是的,因为资源名称有问题

    应该是"Resource": "arn:aws:s3:::jatinbuckek101/*"。你错过了/*,这意味着桶内的任何对象。

    还有你提到你的委托人的方式,请查看如何引用principal

    这就是我的策略的外观(这里 xxxxx 指的是对于您的用例而言会有所不同的数字),使用策略生成器,而不是手动编辑使用策略生成器来消除错误风险。

    {
        "Version": "2012-10-17",
        "Id": "Policyxxxxxxx",
        "Statement": [
            {
                "Sid": "Stmtxxxxxxxx",
                "Effect": "Allow",
                "Principal": "*",
                "Action": "s3:GetObject",
                "Resource": "arn:aws:s3:::jatin/*"
            }
        ]
    }
    

    【讨论】:

    • 不,这没有帮助 - 我更新了答案
    • 您是否可以尝试使用策略生成器而不是手动编辑来做到这一点,也可以代替图片发布您的策略,请通过我提供的链接检查主体名称格式。
    • 只是为了确保政策有效,暂时用这个替换你的委托人"Principal": "*"
    • 是的,我都是这样做的——我生成了策略而不是手动编辑。你的例子也没有帮助
    • 您更新后的策略中有一个 {} 不匹配,最后 } }(// 这个是多余的,请尝试删除这个)] }
    【解决方案4】:

    试试这个,希望它有帮助,它应该可以工作。

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Sid": "DelegateS3Access",
                "Effect": "Allow",
                "Principal": {"AWS": "111111111111"},
                "Action": ["s3:GetBucket","s3:PutObject"],
                "Resource": [
                    "arn:aws:s3:::BUCKET-NAME-HERE/*",
                    "arn:aws:s3:::BUCKET-NAME-HERE"
                ]
            }
        ]
    }
    

    【讨论】:

      猜你喜欢
      • 2023-03-16
      • 1970-01-01
      • 2017-10-28
      • 2017-12-04
      • 2020-10-31
      • 1970-01-01
      • 1970-01-01
      • 2021-10-18
      • 2020-09-25
      相关资源
      最近更新 更多