【问题标题】:API interceptor for real time scanning用于实时扫描的 API 拦截器
【发布时间】:2019-05-06 14:28:02
【问题描述】:

我正在设计一个拦截器来实时捕获 API 请求和响应,以识别敏感信息。 要求是作为一个独立的组件并拦截每个 API 请求和响应。

请找到带有拦截器的附加架构设计。 我需要专家建议来有效地实施拦截器。

【问题讨论】:

  • 这是一个非常开放的问题描述。具体有哪些要求?你使用的堆栈是什么?这个拦截器应该是应用程序拦截器还是单独的代理堆栈?您的“实时”SLA 是什么?
  • @trein,这是我的答案。具体有哪些要求?我的目标是在发送给客户端之前获取每个 API 响应的副本。你使用的堆栈是什么?拦截器需要独立工作,而与现有堆栈无关。这个拦截器应该是应用程序拦截器还是单独的代理堆栈?独立代理 您的“实时”SLA 是什么?没有 SLA 限制。我只需要获取 API 响应的副本以用于分析目的。
  • @Arun 您的 API/服务后端是 1 个单一应用程序还是网格或服务?另外,如果它有很多服务/微服务,它们是在单一语言堆栈还是多语言?
  • @AbhishekTyagi 是 1 单服务。假设服务可以使用任何语言实现,例如 Spring Boot 或 ASP.NET。
  • 不幸的是,正如所写,这个问题是题外话(“太宽泛”和“征求意见”) - 有很多方法可以实现这样的工具(许多语言,许多方法等) .正如所写,这本质上是一组要求,没有具体问题。

标签: architecture interceptor api-design


【解决方案1】:

您可以使用的两种方法。

  1. Side-car:创建一个可重用的库,它只有一个拦截器或过滤器(用于 java)或用于 .net 平台的 actionfilter。一旦添加为依赖项并由您的应用程序实例化,所有请求和响应都可以在此处访问并推送到代理。您的一名工作人员可以从经纪人那里读取数据。

  2. API Proxy/Gateway:像kong这样的轻量级API网关可以用作代理,您的应用程序将保持不变。您将能够将所有 HTTP 标头和有效负载记录到代理。这里的优势是,即使您有超过 1 个应用程序,解决方案也将保持不变,并且与后端应用程序语言或生命周期无关。

【讨论】:

  • 第一个选择不是一个选项,因为它需要在 API 中更改代码并创建依赖项。我不太担心第二选择,因为它在最坏的情况下出现故障时可能会影响 API SLA。我正在寻找 pyshark 或类似的解决方案,以从端口(比如说)443 获取 API 有效负载的副本,使用共享解密密钥对其进行解密并将其发布到代理。即使它出现故障,它也不会影响 API SLA。这是一个我现在正在尝试的想法。
  • 你也可以试试 envoy[envoyproxy.io]。虽然我会充当您应用程序的数据平面。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-13
  • 2019-12-28
  • 2010-12-06
  • 2018-03-31
相关资源
最近更新 更多