amazon s3存储桶策略中的无效主体

Cyb*_*kie 11 api amazon-s3 amazon-web-services

我正在尝试在Amazon S3控制台中创建新的存储桶策略并获取错误

策略中的主体无效 - "AWS":"my_username"

我正在使用的用户名是我的默认存储桶被授予者.

我的政策

{
  "Id": "Policy14343243265",
  "Statement": [
    {
      "Sid": "SSdgfgf432432432435",
      "Action": [
        "s3:DeleteObject",
        "s3:DeleteObjectVersion",
        "s3:GetObject",
        "s3:GetObjectVersion",
        "s3:GetObjectVersionAcl",
        "s3:PutObject",
        "s3:PutObjectAcl",
        "s3:PutObjectVersionAcl"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::my_bucket/*",
      "Principal": {
        "AWS": [
          "my_username"
        ]
      }
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

我不明白为什么我会收到错误.我究竟做错了什么?

wil*_*ynn 16

如错误消息所示,您的主体不正确.检查有关如何修复它的指定Principals的S3文档.如示例策略中所示,它需要类似于arn:aws:iam::111122223333:root.

  • 谢谢你的指导!为了更好的安全性(我想)我使用`arn:aws:iam :: 123456789:user/my_user`授予我的IAM用户权限 (3认同)

Jan*_*ens 7

更好的解决方案:

  1. 创建一个 IAM 策略来访问存储桶
  2. 将其分配给一个组
  3. 将用户放入该组

您可以定义“这些是可以触摸这个的人”,而不是说“这个桶可以被这个用户触摸”。

现在听起来很傻,但请等到您再添加 42 个存储桶和 60 个用户。拥有一个管理所有资源访问的中心位置将节省一天的时间。


Bro*_*rod 5

我在 S3 存储桶策略生成器中也遇到了同样的错误。结果表明,现有策略之一的主体已被删除。问题不在于添加的策略。

在这种情况下,要发现错误的策略,您可以查找在 ARN 中没有账户或角色的委托人。

所以,而不是看起来像这样:

"Principal": {
    "AWS": "arn:aws:iam::123456789101:role/MyCoolRole"
}
Run Code Online (Sandbox Code Playgroud)

它看起来像这样:

"Principal": {
    "AWS": "ABCDEFGHIJKLMNOP"
}
Run Code Online (Sandbox Code Playgroud)

因此,它不是正确的 ARN,而是像ABCDEFGHIJKLMNOP这样的字母数字键。在这种情况下,您需要确定错误主体存在的原因,并且最有可能对其进行修改或删除。希望这会对某人有所帮助,因为很难找到我,而且我没有找到任何文件来表明这一点。