AWS IAM 用户凭证始终以匿名身份进行身份验证

AWS IAM user credential always authenticated as anonymous

提问人:piano-antinomy 提问时间:2/18/2023 更新时间:2/19/2023 访问量:243

问:

我正在创建一个简单的 API 网关并尝试应用其身份验证。我创建了一个 IAM 用户(称为 postman-user)并创建了它的凭证(作为 AccessKeyId 和 SecretAccessKey)。

我的 IAM 用户策略如下所示:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": "execute-api:*",
            "Resource": "*"
        }
    ]
}

在我的 api 网关中,我应用了资源策略,如下所示:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::<my account id>:root",
                    "arn:aws:iam::<my account id>:user/postman-user"
                ]
            },
            "Action": "execute-api:Invoke",
            "Resource": "arn:aws:execute-api:us-west-2:<my account id>:<my api g id>/*"
        }
    ]
}

我在邮递员中应用了密钥 ID 和密钥 ID:在此处输入图像描述

然后问题来了。无论我如何使用此 IAM 用户的 aws 凭证调用 api 终端节点,我总是收到此错误:

User: anonymous is not authorized to perform: execute-api:Invoke on resource: arn:aws:execute-api:us-west-2:******

我以为是邮递员未能签署此AWS sigV4,然后我在python中尝试了这个:

url = 'https://<apig id>.execute-api.us-west-2.amazonaws.com/beta/query/'

auth = AWSRequestsAuth( aws_access_key='<my key id>',
                        aws_secret_access_key='<my  secret key>',
                        aws_host='ec2.amazonaws.com',
                        aws_region='us-west-2',
                        aws_service='api')

response = requests.get(url, auth=auth)

这个错误对我来说是永远的


User: anonymous is not authorized to perform: execute-api:Invoke on resource: arn:aws:execute-api:us-west-2:******

谁能告诉我我错过了什么?我点击了资源中的 deployAPI 来暂存 beta 100 次......

尝试过 python,尝试过邮递员,没有任何效果

amazon-web-services aws-api-gateway 匿名 身份管理 sigv4

评论


答:

0赞 Erik Asplund 2/18/2023 #1

听起来 API 平面上缺少一些东西。可能是您尚未在尝试使用的 http 方法上配置 IAM 身份验证。我也可能是资源策略没有附加到api网关。注意:如果策略已更新并重新附加,则需要重新部署 API 网关。

友情链接: https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-resource-policies-create-attach.html

评论

0赞 piano-antinomy 2/19/2023
每次更新资源策略时,我都会重新部署。我的 IAM 使用 * 作为资源,所以这可能不是问题。
1赞 piano-antinomy 2/19/2023 #2

这是一个 API Gateway 配置问题:

资源 -> 单击方法 -> 方法请求 -> 授权:它曾经是 None,更改为 make this work。AWS IAM

评论

0赞 James Ding 3/5/2023
这是对的!谢谢。。在我看到这个之前,我遇到了同样的问题几个小时......