我尝试更新 Amazon S3 存储桶策略时,为什么会收到“策略中的主体无效”错误?

1 分钟阅读
0

我尝试使用控制台添加或编辑 Amazon Simple Storage Service (Amazon S3) 存储桶的策略。但是,我收到错误消息“错误: 策略中的主体无效。”

解决方法

您收到错误: 策略中的主体无效消息,可能是因为存储桶策略中的主体值无效。要解决此错误,请检查以下各项:

  • 存储桶策略为主体部分使用支持的值。
  • 主体部分格式正确。
  • 如果主体是 Amazon Identity and Access Management (IAM) 用户或角色,请确认该用户或角色未删除。

存储桶策略为“主体”部分使用支持的值

查看存储桶策略中的“主体”部分。检查其是否使用下面支持的值之一:

警告:“Action:” “Allow”组合使用时,“*”****主体部分可授予所有用户访问权限,包括已验证身份的用户和匿名用户。在存储桶策略中使用此组合之前,请确认您的内容支持此访问级别。

主体值格式正确

查看策略中的主体部分,检查其格式是否正确。如果主体包含一个用户,则主体部分必须采用以下格式:

"Principal": {
    "AWS": "arn:aws:iam::111111111111:user/user-name1"
}

主体部分中指定用户时,不能使用“*”表示所有用户。必须在主体部分中包含特定用户。

如果主体部分包含多个 IAM 用户或 IAM 角色,则主体部分必须采用以下格式:

"Principal": {
  "AWS": [
    "arn:aws:iam::111111111111:user/user-name1",
    "arn:aws:iam::111111111111:role/role-name1"
  ]
}

如果主体是所有用户,则主体部分必须采用以下格式:

{
  "Principal": "*"
}

最好不要在基于资源的策略且拥有允许权限的主体部分中使用通配符 (*)。只有您想要授予公共或匿名访问权限时,才使用通配符。在主体部分中指定所需的主体、服务或亚马逊云科技账户。然后,使用条件部分限制访问。IAM 角色信任策略尤其需要限制访问,因为这些策略允许其他主体成为您账户中的主体。

IAM 用户或角色未删除

如果存储桶策略在主体部分中包含 IAM 用户或角色,请确认这些 IAM 身份未删除。确保在主体部分中指定唯一标识符,而不是完整的 ARN。这有助于识别当前存储桶策略中删除的 IAM 用户和角色。

示例:

"Principal": {
  "AWS": [
    "arn:aws:iam::111111111111:user/user-name1",
    "AIDAJQABLZS4A3QDU576Q",
    "arn:aws:iam::111111111111:user/user-name2"
  ]
}

如果您尝试使用唯一标识符将存储桶策略另存为主体部分,则会收到策略中的主体无效错误。原因是主体部分仅支持有效的 IAM ARN。要解决此错误,必须从主体部分中移除任何唯一标识符。

IAM 主体的账户未启用亚马逊云科技区域

如果您的 S3 存储桶所在亚马逊云科技区域默认未启用,请确认 IAM 主体的账户已启用该区域。有关更多信息,请参阅管理亚马逊云科技区域

相关信息

Amazon 策略生成器

Amazon JSON 策略部分: 主体

AWS 官方
AWS 官方已更新 1 年前