首先,我想先说一下,我没有参与建立这个 GCP 项目,所以我对配置的内容了解有限,但我确实对正在运行的应用程序以及它们执行的角色有所了解。

已知:

  • 建立了一个 API 网关,其背后有大约 10 个云运行服务。全部都是 Java API。

  • 我认为随着系统使用率的提高,对 servicecontrol.googleapis.com/report 端点的调用量一直在稳步增加,目前已达到每天 2.5m/次操作。这导致我们的账单上出现了一个明显的项目。

  • 当我查看服务控制 API 的 API/服务详细信息图表时,它毫无帮助地显示流量来自“未指定”作为凭证。这显然无助于我缩小来源范围。

  • 如果我禁用服务控制 API,调用次数显然会降至零,但每次我访问配置页面时,API 网关都会提示我启用服务控制 API,因此显然某些操作是“必需的”。

  • 禁用服务控制 API 后,我在日志中看到类似这样的错误

    { "insertId": "61bd29cad64fcdeb3a72c087c743457e-1@a1",
    "jsonPayload": {
      "apiConfig": "//apigateway.googleapis.com/projects/XXXXXXXXXXX/locations/global/apis/adminservice1/configs/my-config-name",
      "httpRequest": {
        "duration": "13ms",
        "responseSize": "39",
        "path": "/v1/services/adminservice1-2flbn13q8pv2z.apigateway.my-project-id.cloud.goog:report",
        "hostname": "servicecontrol.googleapis.com",
        "httpVersion": "HTTP/1.1",
        "status": 403,
        "requestSize": "2236"
      },
      "serviceConfig": "//servicemanagement.googleapis.com/services/adminservice1-2flbn13q8pv2z.apigateway.my-project-id.cloud.goog/configs/my-config-name-0exxy8atd70t3",
      "api": "//apigateway.googleapis.com/projects/XXXXXXXXXXX/locations/global/apis/adminservice1"
    },
    "resource": {
      "type": "apigateway.googleapis.com/Gateway",
      "labels": {
        "gateway_id": "ezylink-apigateway-preprod",
        "location": "australia-southeast1",
        "resource_container": "projects/XXXXXXXXXXX"
      }
    },
    "timestamp": "2024-06-26T22:34:01.523107678Z",
    "severity": "ERROR",
    "logName": "projects/my-project-id/logs/apigateway.googleapis.com/service_control_queries",
    "receiveTimestamp": "2024-06-26T22:34:11.539672849Z"}
    

未知:

  • 这些调用到底是从哪里来的!我不知道是代码还是配置导致了这个问题。

任何见解都将不胜感激。

1

  • 审计日志有助于回答“谁在何时何地做了什么?”。如果 API 不是管理员活动,则必须启用数据访问日志。查看此 Cloud Monitoring 的审计日志记录和配置访问日志


    – 

0