【问题标题】:How to whitelist IAM access to APIGateway based on policy如何根据策略将 IAM 访问 APIGateway 列入白名单
【发布时间】:2020-11-25 02:01:11
【问题描述】:

我在 ApiGateway 中启用了 AuthorizationType: AWS_IAM 的方法。当我为 IAM 用户提供 AccessKey 和 SecretKey 并在标头中使用编程访问策略时,此方法有效,但这只是预期结果的一半。

有没有办法进一步扩展此授权以仅允许为特定 API 网关方法附加策略的 IAM 用户?

我最初的想法是在 API 网关上有一个资源策略来拒绝所有请求,然后将方法访问策略分配给特定的 IAM 用户以覆盖它,但根据Policy Evaluation Logic documentation,任何具有显式拒绝的资源都会覆盖那个与允许。

是否可以将 API Gateway 方法限制为仅允许具有该方法的允许策略(也称为“白名单”)的 IAM 用户?

【问题讨论】:

  • 我想当您使用 AWS_IAM 作为身份验证时。只有有权调用端点的用户或角色才能调用。不是真的?
  • 我可以调用 API 而不给它显式访问权限。这与编程访问有关吗?我正在关注这个视频youtu.be/KXyATZctkmQ。我认为我需要编程访问来生成访问密钥
  • 我刚才试过了。我创建了一个完全没有权限的用户。用户无法执行 api。我已经更新了我发布的答案。但我注意到一件事,当我对政策进行更改时,我需要一段时间才能反映我从邮递员那里测试它时
  • 你是对的,你需要编程访问来生成访问密钥。控制台访问只是让用户登录到 aws 控制台。
  • @ArunK 我创建了一个新的 IAM 用户,它现在按预期工作。当我为其他用户使用它时,我一定使用了错误的访问键。

标签: amazon-web-services aws-api-gateway amazon-iam


【解决方案1】:

您可以附加允许用户调用特定 API 方法的 IAM 策略。用户在没有调用权限的情况下无法调用api端点。

为了测试,我创建了一个没有权限的用户,我收到了以下错误。

{
    "Message": "User: arn:aws:iam::********1111:user/test-api-gateway-iam-auth is not authorized to perform: execute-api:Invoke on resource: arn:aws:execute-api:ap-southeast-2:********1111:b2r0m0gev9/test/GET/"
}

我已将以下策略附加到 IAM 用户。该策略允许用户调用特定的 api 方法。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "execute-api:Invoke"
            ],
            "Resource": [
                "arn:aws:execute-api:ap-southeast-2:********1111:xxx/test/GET/"
            ]
        }
    ]
}

【讨论】:

  • 嗨。 boto3 是否支持调用受策略保护的此类 api?只是想知道,如何使用 boto3 调用 api。
  • 只是想了解一下。 api 有一个端点 url,它可以从任何 REST 客户端访问,例如 curl、post man 等。当您使用 REST 客户端调用 api url 时,aws 凭证以计算出的 AWS 签名的形式传递。我错过了什么吗?
  • 我的意思是 lambda 的 boto3 有 invoke 方法来调用 lambda 函数。但我没有看到任何对 api 网关的等效调用。如果您使用 curl,您如何强制执行 test-api-gateway-iam-auth 用户的 IAM 凭证?答案没有错。我投了赞成票。只是想知道如何在 boto3 中使用此类策略。也许 boto3 不能用于那个?
  • 是的,我们必须手动计算签名。当我测试这个时,我使用 Postman,Postman 有一个特殊的授权方法称为AWS Singature,它将接受 aws 访问密钥 ID、秘密访问密钥 ID、区域和服务名称为 execute-api 并计算签名并将其添加到动态标题。
  • 这里是python中签名的计算方式docs.aws.amazon.com/general/latest/gr/…
猜你喜欢
  • 2020-09-07
  • 2021-02-15
  • 2020-05-21
  • 2011-09-30
  • 2019-02-12
  • 1970-01-01
  • 2020-12-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多