我想解决我在创建或更新 AWS Identity and Access Management (IAM) 策略时收到的“Has prohibited field Principal”(已禁止字段 Principal)错误。
解决方法
如果您基于身份的 IAM 策略包含 Principal 元素,则您会收到“Has prohibited field Principal”(已禁止字段 Principal)错误。您只能在基于资源的策略中使用 Principal 元素来控制允许访问资源的 IAM 身份。无需在基于身份的策略中使用 Principal 元素,因为您会将该策略附加到 IAM 身份。
确保在与您的资源关联的 AWS 服务中创建基于资源的策略。要检查 AWS 服务是否使用基于资源的策略,请参阅使用 IAM 的 AWS 服务。
您在 IAM 中可以为角色创建的唯一基于资源的策略是信任策略。要为 IAM 角色添加权限或删除其权限,请务必更新角色信任策略,而不是权限策略。
角色信任策略示例:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::111122223333:root"
},
"Action": "sts:AssumeRole"
}
]
}
权限策略示例:
{
"Version": "2012-10-17",
"Statement": {
"Effect": "Allow",
"Action": "sts:AssumeRole",
"Resource": "arn:aws:iam::111122223333/Test"
}
}
相关信息
基于身份的策略和基于资源的策略
如何使用 IAM 访问另一个 AWS 账户中的资源?
向用户授予切换角色的权限