APIClarity 概述系列:架构

在这篇博客中,我们将探讨APIClarity。有关 APIClarity 和 API 安全性的更高级别介绍,请参阅APIClarity 简介博客。有关入门提示,请不要忘记我们的APIClarity 安装指南。

APIClarity 和 API 安全概述

APIClarity 是一个开源项目,在 Kubernetes 集群中以 pod 部署方式运行,并分析 API 流量是否存在安全风险。让我们来看看不同的组件。您的 API 安全性可能缺少关键风险,让您面临您不知道的漏洞——APIClarity 可以帮助您识别这些漏洞。首先,让我们来看看不同的组件,并学习如何保护 API

主要的 APIClarity 服务由一个服务器 pod 和一个在“apiclarity”命名空间中运行的 PostgreSQL 数据库组成,如下图 1中深绿色显示。

APIClarity 架构

图 1: APIClarity 架构
服务器 pod 负责收集传入的 API 流量、对其进行分析并通过 UI 报告任何 API 安全风险。API 规范、流量和分析都存储在​​数据库中。

为了分析 API 流量,APIClarity 有许多插件,可以与不同类型的流量源一起使用,以窃取 API 流量并将其发送到 APIClarity 服务器。为了便于说明,图 1中以浅绿色显示了不同的插件,每个插件都有一个箭头,该箭头指向发送到 APIClarity 服务器的更大的“API 流量”箭头。

为了监控外部来源的 API 流量,APIClarity 提供了以下插件:

Kong API 网关
Tyk API 网关
Apigee X 网关
F5 BIG-IP LTM 负载均衡器
OpenTelemetry收集器
对于应用程序微服务之间的内部 API 流量,APIClarity 通过安装与服务网格集成WebAssemby(WASM)在 Envoy 级别进行过滤以利用 API 流量。Istio和支持Kuma服务网格。图 1中的浅绿色“WASM”框代表 APIClarity 的 envoy WASM 过滤器。

此外,APIClarity 还具有 API 窃听功能,可以被动窃听给定 Kubernetes 命名空间的 API 流量。这在图 1中以浅绿色显示,并标记为“APIClarity Tapper” 。

可以使用 UI 查看观察到的 API 流量并检查 APIClarity 报告的任何异常或安全风险。

APIClarity 服务器

让我们来看看APIClarity服务器的功能。

OpenAPI规范上传/重构
该模块允许上传现有的OpenAPI规范(specs)或根据观察到的 API 流量学习和重建规范(如果未提供)。重建的规范在 UI 中可用,用户可以在其中查看和批准。支持 OpenAPI v2.0 和 v3.0。

OpenAPI 规范差异检测器
“spec diff” 检测器会查找已批准的范与观察到的 API 流量之间的差异。它可以检测影子 API 和僵尸 API。影子 API是可观察到 工程师数据库 的但不在已批准的规范中,这意味着它们是未知的 API 调用。僵尸 API是仍在使用的已弃用的 API 版本。这些将在未来的博客中探讨。

特殊数据

BFLA(损坏功能级授权)检测器

BFLA检测器通过首先观察 API 交互,然后检测与模型的任何差异,为应用程序微服务交互构建授权模型。BFLA 违规意味着应用程序内的功能被未经授权使用。用户可以将任何已获悉的交互标记为“非法”,在这种情况下,这些交互将被标记为 BFLA 违规。更多信息可参见自述文件。

痕量分析仪

这跟踪分析器可在观察到的 API 流量中检测不同类型的 API 安全漏洞,无论是在 API 端点级别还是在事件级别(即实际 API 调用)。它为每个检测到的漏洞提供低、中或高的分数。您可以配置跟踪分析器扫描的一些内容,例如用于匹配敏感信息的字典匹配和正则表达式规则。如果需要,还可以忽略发现结果。

跟踪分析器可以检测和标记多种类型的安全漏洞。

弱基本身份验证

如果应用程序使用基本身份 保养良好的外观不会 验证(用户名/密码),则跟踪分析器将检查短密码、弱密码(众所周知的密码)或重复使用的密码。

弱 JSON Web 令牌
如果应用程序使用了 JSON Web 令牌 (JWT),则跟踪分析器将检查以下内容:

取消设置算法
取消设置签名算法
推荐的签名算法
包含敏感数据的令牌声明
令牌过期声明
秘密签名密钥字典攻击

敏感信息

可以通过配置一组来检测敏感信息,包括个人身份信 bw列表 息或 PII要比较的正则表达式模式。例如关键字“密码”、电话号码、社会保险号等。

可猜测对象 ID
可以检测并标记容易猜到的对象 ID,例如按升序或降序排列的 ID。这些可能使应用程序面临 BOLA 攻击的风险(请参阅下一节)。

BOLA(对象级授权失效)

BOLA 攻击是指未经适当授权访问应用程序中的对象。检测 BOLA 的一种方法是在 API 请求中查找“未学习的标识符”,这意味着请求的对象 ID 未在应用程序之前的响应中提供。可猜测的对象 ID 可能会导致此问题。

数据模糊器
APIClarity 有数据检测数据注入风险的模糊器组件。模糊器使用已批准的应用程序 OpenAPI 规范,尝试将未经授权或无效的数据注入应用程序 API 端点,以标记输入验证和处理中的弱点。

用户界面

可以使用 UI 查看观察到的 API 流量并检查 APIClarity 报告的任何异常或安全风险。

数据库
APIClarity 使用自己的 PostgreSQL 数据库来存储 OpenAPI 规范、API 流量和流量分析。如果通过 Helm 安装,PostgreSQL 将需要一个持久卷进行存储。

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注