AWS SDK PHP Assume Role Provider调用STS出现403 Forbidden错误
STS服务返回403 Forbidden的常见原因
EC2实例角色缺少
sts:AssumeRole权限:实例配置文件绑定的IAM角色未被授予调用STS AssumeRole的权限,或权限策略中未明确指定允许扮演的目标角色ARN。需检查实例角色的权限策略,确保包含允许sts:AssumeRole操作,且资源字段指向目标角色的ARN。目标角色的信任策略未授权实例角色:要切换的目标IAM角色的信任策略未将EC2实例角色设置为可信实体。需在目标角色的信任策略中,将实例角色的ARN添加到
Principal字段,示例格式:{"AWS": "arn:aws:iam::你的账号ID:role/实例角色名称"}。实例配置文件未正确关联到EC2实例:如果实例配置文件未成功附加到EC2实例,实例无法获取基础临时凭证,调用STS时会被拒绝。可通过EC2控制台检查实例的IAM角色关联状态。
STS区域或端点配置错误:SDK中指定的STS服务区域与实例所在区域不兼容,或端点配置有误,会导致请求被拒绝。需确保SDK配置的STS区域为有效区域,且与目标S3桶所在区域匹配。
IAM策略存在显式拒绝规则:实例角色或目标角色的权限策略中存在
Deny语句,覆盖了允许sts:AssumeRole的权限,这会直接触发403错误。需排查所有关联的IAM策略,移除不必要的显式拒绝规则。IAM配置未完成传播:刚创建或修改的IAM角色、实例配置文件需要数分钟时间完成全局传播,立即调用会出现权限问题。可等待5-10分钟后重试,或重启EC2实例使配置生效。
内容的提问来源于stack exchange,提问作者user1794918
相关产品推荐
相关产品推荐

