Lambda调用AWS SSO权限集接口时报AccessDeniedException错误怎么办
问题排查方向
你附加了全权限Admin策略仍触发权限拒绝,优先排查以下几点:
- API调用区域不匹配:AWS IAM Identity Center(原SSO)的实例是单区域部署的全局资源,调用
sso-admin相关API时必须指定实例实际部署的区域,若你初始化boto3客户端时未指定区域,会默认使用Lambda所在区域,区域不匹配时就会返回AccessDenied错误。
修正客户端初始化代码示例:import boto3 # 替换为你的SSO实例实际部署的区域 client = boto3.client('sso-admin', region_name='<SSO实例所在区域ID>') - 组织SCP限制:AWS Organizations的服务控制策略(SCP)是组织层面的权限边界,优先级高于账号内的身份权限。如果根OU或Lambda所属账号所在的OU绑定的SCP禁用了
sso:PutInlinePolicyToPermissionSet操作,哪怕账号内角色有全权限也会被拒绝。 - 权限边界限制:如果你的Lambda执行角色附加了权限边界(Permissions Boundary),权限边界会定义角色的最大权限范围,若权限边界未允许对应SSO操作,也会触发权限拒绝。
- 账号权限不足:操作SSO权限集的权限默认只有组织管理账号的身份拥有,如果你用的是成员账号的Lambda角色,需要先将该成员账号设置为Identity Center的委托管理员,否则哪怕角色有全权限也无法操作SSO资源。
SSO权限集与常规IAM权限的核心区别
两者的操作逻辑差异很大:
- 常规IAM权限是账号级资源,权限直接附加到对应账号的用户/角色/组上,操作IAM的API属于单账号的IAM服务范畴,只要当前账号内的身份有对应权限即可操作。
- SSO权限集是组织级的模板资源,归属于组织的IAM Identity Center服务,操作权限集的API需要身份拥有组织层面的SSO操作权限,且必须指向SSO实例部署的区域发起调用,跨区域调用默认无效。
内容的提问来源于stack exchange,提问作者PiaklA
相关产品推荐
相关产品推荐

