【问题标题】:I would like to know how to access control with GAE我想知道如何使用 GAE 进行访问控制
【发布时间】:2019-11-08 03:23:33
【问题描述】:

有没有办法使用 Google App Engine 自动控制对特定 IP 的访问? 例如,如果一个 API 端点在一分钟内被访问 10 次,它将不会接受对该 IP 地址的请求。

我了解 GKE 和 GCE 可以通过 Google 负载平衡和 GOOGLE CLOUD ARMOR 实现相同的功能。我想用 Google App Engine 做到这一点。

【问题讨论】:

    标签: google-app-engine go


    【解决方案1】:

    带有 App Engine 的 Cloud Endpoints 是一种解决方案。

    1. 您可以设置 ESP 来验证客户端 Choosing an Authentication Method

    2. 然后您可以通过在您的 OpenAPI 文档Configuring quotas 中添加配额来限制 api 请求。

    这是来自官方文档的示例:

    以下示例显示如何配置 x-google-quota 在扩展 路径部分:

    x-google-management:  
     metrics:
    # Define a metric for read requests.
     - name: "read-requests"
       displayName: "Read requests"
       valueType: INT64
       metricKind: DELTA   quota:
     limits:
       # Define the limit or the read-requests metric.
       - name: "read-limit"
         metric: "read-requests"
         unit: "1/min/{project}"
         values:
           STANDARD: 1000 paths:   "/echo":
     post:
       description: "Echo back a given message."
       operationId: "echo"
       produces:
       - "application/json"
       responses:
         200:
           description: "Echo"
           schema:
             $ref: "#/definitions/echoMessage"
       parameters:
       - description: "Message to echo"
         in: body
         name: message
         required: true
         schema:
           $ref: "#/definitions/echoMessage"
       x-google-quota:
         metricCosts:
           "read-requests": 1
       security:
       - api_key: []
    

    你可以找到更多关于OpenAPI extensions

    1. 您可以使用一些更高级的技术Proof of Work 来强制实施速率限制,而无需记住 IP 地址SO case

    【讨论】:

    • 感谢您的详细回答。我认为流程可能如下。设置 ESP → 将 OpenAPI 设置为配额 → 设置特定操作的限制。我会尝试它以供参考。非常感谢。
    【解决方案2】:

    我自己没有尝试过,但看起来有一个 API 可以做到。

    https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.firewall.ingressRules

    要以编程方式为您的 App Engine 应用创建防火墙规则,您 可以使用 Admin API 中的 apps.firewall.ingressRules 方法。

    【讨论】:

    • 感谢您的回答。我第一次听说 Admin API ingressRules,所以让我们来看看。
    【解决方案3】:

    您可以使用Cloud Endpoints with App Engine。您可以借助 Cloud Endpoints 在任何 Google Cloud 后端开发、部署和管理 API。

    Cloud Endpoints 提供配额,让您可以控制速率 哪些应用程序可以调用您的 API。设置配额允许您 指定使用限制以保护您的 API 免受过多的 来自调用应用程序的请求。过多的请求可能有 由简单的错字或设计效率低下的系统引起 这会对您的 API 进行不必要的调用。不管是什么原因, 阻止来自特定来源的流量一旦到达某个特定来源 级别对于 API 的整体运行状况是必要的。通过设置一个 配额,您确保一个应用程序不会对其他应用程序产生负面影响 使用您的 API 的应用程序。

    您也可以查看Rate limiting on Apigee Edge

    【讨论】:

    • 正如其他人所回答的那样,Cloud Endpoints 可能能够限制使用。我会试一试。谢谢你的回答。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-03
    相关资源
    最近更新 更多