【问题标题】:Kong API key strategyKong API 密钥策略
【发布时间】:2019-08-24 20:27:53
【问题描述】:

我想使用 Kong 作为我所有上游服务的 API 网关。我想使用 API 密钥,以便我的客户可以使用它来使用他们被允许使用的一些 API。

有一个用于管理 API Keys 的插件:https://docs.konghq.com/hub/kong-inc/key-auth/

但我想知道是否可以将属性添加到某些 API 密钥或将其链接到某些配置。

让我用一个例子来解释:

我有 3 个 api

  • API 1
  • API 2
  • API 3

在 Kong API 网关上,我想使用速率限制。所以我想为 2 个具有某些属性的客户生成 API 密钥

  • 客户 X:基本订阅,API 1 的速率限制为每分钟 10 次请求,API 2 的速率限制为每分钟 20 次
  • 客户 Y:API 2 的高级订阅,其速率限制为每分钟 5000 个请求,API 3 每分钟 1000 个请求

所以在 Kong 中,我为这 3 个 API 创建了 3 个服务,并向其中添加了速率限制插件。有没有办法让速率限制插件知道(基于请求中发送的 API 密钥)它应该对刚刚输入的请求使用什么限制?

在我看来,我每次都需要为相同的 API 创建具有特定速率限制和特定值的新服务。在处理大量客户和 api 时,这感觉有点难以管理。

是否可以根据传递的 API 密钥获取速率限制值?

或者有什么解决办法吗?或者这是我们在 API 网关中想要的实际行为,如果是,为什么?

【问题讨论】:

  • 我可能错了,但我认为这是Kong的限制。没有 ACL / 策略的概念。您必须对每个消费者应用不同的速率限制插件。因此,您要么根据上面的建议创建大量服务,这从设计的角度来看毫无意义……要么为每个键/消费者创建一个 RL 插件 - 也有点时髦。

标签: api-key api-gateway kong kong-plugin


【解决方案1】:

Kong Enterprise Edition 有一个名为“Rate Limiting Advanced”的插件可以解决这个问题。它允许您为每个速率限制插件指定一个“标识符”,对于这种特殊情况,您将使用“标识符:消费者”。如果你想为同一个 API 和不同的消费者设置两个不同的速率限制,例如

  • API2:consumerX 有 20rpm
  • API2:consumerY 有 5000rpm

那么你必须在消费者而不是 api 上配置速率限制。 另外,在您的问题中,您指的是apis;仅供参考,api 对象自 v0.13.0 起已弃用,您应该移至 route/service 对象。

【讨论】:

    【解决方案2】:

    您也可以在消费者级别配置插件。这有效地将适当的速率限制应用于每个消费者(api 密钥)。

    文档中的示例代码:

    $ curl -X POST http://kong:8001/consumers/{consumer}/plugins \
        --data "name=rate-limiting" \
         \
        --data "config.second=5" \
        --data "config.hour=10000"
    

    文档:https://docs.konghq.com/hub/kong-inc/rate-limiting/#enabling-the-plugin-on-a-consumer

    【讨论】:

      猜你喜欢
      • 2013-07-30
      • 2011-02-08
      • 2021-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-13
      • 1970-01-01
      相关资源
      最近更新 更多