AWS Location Service跨账号调用geo:SearchPlaceIndexForText遇403拒绝
跨账号调用Amazon Location Service 403拒绝问题解决
核心原因
跨账号访问AWS资源,仅在调用方(账号A)配置允许策略完全不够,必须同时在资源所属方(账号B)的Place Index上配置资源级IAM策略,授权账号A的用户/角色访问该资源。另外报错明确提到「explicit deny」,也需要排查是否存在其他显式拒绝规则。
具体解决步骤
1. 在账号B中为目标Place Index添加资源策略
登录账号B的AWS控制台,找到对应的HerePlaceIndex,编辑其资源策略,添加允许账号A的user-name用户访问的规则。示例策略如下:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::账号A的ID:user/user-name" }, "Action": "geo:SearchPlaceIndexForText", "Resource": "arn:aws:geo:us-east-1:账号B的ID:place-index/HerePlaceIndex" } ] }
如果需要允许账号A下多个用户/角色,可指定账号A的根ARN(arn:aws:iam::账号A的ID:root)或者具体角色ARN。
2. 排查显式拒绝的来源
报错中的「explicit deny」可能来自以下场景,需逐一排查:
- 账号B的组织SCP(服务控制策略):检查是否有SCP限制geo服务跨账号访问,或直接拒绝该操作。
- 账号A的
user-name用户是否被附加拒绝型IAM策略:比如是否有策略显式拒绝geo:SearchPlaceIndexForText操作,或限制了访问资源范围。 - 账号B的Place Index是否存在冲突资源策略:比如存在拒绝账号A访问的规则,优先级高于允许规则。
3. 验证权限配置
可使用AWS IAM Access Analyzer或aws iam simulate-custom-policy命令,模拟账号A的用户调用该操作,确认权限是否生效。
内容的提问来源于stack exchange,提问作者Piyush Pranjal
相关产品推荐
相关产品推荐

