API Gateway 资源策略:将 IAM 角色指定为 AWS 委托人

问题描述 投票:0回答:2

我正在尝试使用资源策略设置 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 委托人吗?

amazon-web-services aws-api-gateway
2个回答
0
投票

基于文档 https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-control-access-policy-language-overview.html,

主体 – 有权访问操作的帐户或用户 以及声明中的资源。在资源策略中,主体是 作为此权限接收者的 IAM 用户或账户。

看起来角色无法添加为主体。

P.S:花了两天时间尝试使用角色限制访问,但无法使其发挥作用。


0
投票

这对我有用:

{
    "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"
                }
            }
        }
    ]
}
© www.soinside.com 2019 - 2024. All rights reserved.