我正在尝试使用资源策略设置 API 网关终端节点,该策略允许访问我的账户中的特定 IAM 角色。 IAM 角色是跨账户的,使用信任策略设置,允许从另一个账户向特定 IAM 用户主体 AssumeRole。
在API网关资源策略中,当我将AWS委托人设置为角色ARN:
arn:aws:iam::********:role/myRole
时,调用API时出现以下403错误:
User: arn:aws:sts::********:assumed-role/myRole/mySession is not authorized to perform: execute-api:Invoke on resource: arn:aws:execute-api:us-west-2:********:********/test/POST/echo
但是,如果我将 AWS 委托人更改为临时 STS 用户 ARN:
arn:aws:sts::********:assumed-role/myRole/mySession
,那么我就可以成功调用 API。
这是不起作用的资源策略:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::********:role/myRole"
},
"Action": "execute-api:Invoke",
"Resource": "arn:aws:execute-api:us-west-2:********:********/*"
}
]
}
这是有效的资源策略:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:sts::********:assumed-role/myRole/mySession"
},
"Action": "execute-api:Invoke",
"Resource": "arn:aws:execute-api:us-west-2:********:********/*"
}
]
}
IAM 角色可以用作 API Gateway 资源策略的 AWS 委托人吗?
主体 – 有权访问操作的帐户或用户 以及声明中的资源。在资源策略中,主体是 作为此权限接收者的 IAM 用户或账户。
看起来角色无法添加为主体。
P.S:花了两天时间尝试使用角色限制访问,但无法使其发挥作用。
这对我有用:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "execute-api:Invoke",
"Resource": "arn:aws:execute-api:us-west-2:********:********/*",
"Condition": {
"ArnEquals": {
"aws:PrincipalArn": "arn:aws:iam::********:role/myRole"
}
}
}
]
}