OWASP 十大 API 威胁

您正在查看的是 Apigee Edge 文档。
转到 Apigee X 文档
信息

本文档介绍了您可以在 Apigee 中用于解决 OWASP 所标识安全漏洞的各种方法。如需了解记录的其他 Apigee 方法,请参阅 Google Cloud 2021 年 OWASP 十大缓解方案

简介

OWASP 是一个致力于帮助组织开发、购买和维护可信应用和 API 的开放社区。通过 OWASP API 安全项目,OWASP 向 Web 应用和 REST API 发布了最严重的安全风险,并提供应对这些风险的建议。

本文档将讨论如何防范基于 API 的常见攻击,这些攻击来自 OWASP 2019 年十大 API 安全威胁。在最新列表中突出显示的主要威胁中,有一个共同的主题是由于身份验证和授权控件的放置不当,例如,使用依赖使用方客户端应用强制执行访问权限控制的反模式,例如依赖于对客户端应用内的 API 请求返回的数据进行过滤。

遗憾的是,随着 API 生态系统持续快速发展,导致攻击者的数据渗漏的 API 滥用和误用已成为当今最常见的攻击途径之一。安全性仍然是 Apigee 的重点要务,Apigee 还推出了高级 API 操作等一系列新功能,其中包括安全报告和异常检测功能。但是,正确设计和实现 Apigee 的安全功能对于降低 API 遭到成功攻击的可能性至关重要。

使用方应用应被视为不可信或“公共”应用,因为您无法控制运行该应用的平台。假设任何公开应用都可能会并且会遭入侵,因此它们无法被信任,无法强制执行访问权限控制(API1API5)、过滤响应数据 (API6) 或安全存储客户端密钥 (API2),例如 API 密钥或访问令牌。查看 2019 年 OWASP 十大风险报告提供了一些建议:

  • 确定哪类客户端应用将使用 API(SPA、移动应用或基于浏览器),并设计适当的身份验证、授权和安全模式。
  • 始终使用“公共客户端”OAuth 或 OpenID Connect 流程(强烈建议使用 PKCE
  • 考虑应用的业务逻辑,首先定义 OpenAPI 规范,并设计 API 代理以过滤来自 Apigee 后端的所有响应数据。切勿依赖下游应用代码逻辑来执行此操作!
  • 过滤包含特定于用户的个人身份信息的所有数据请求,以仅允许来自后端用户的数据请求。

API1:2019 对象级授权已损坏

威胁说明

如果对象访问请求的授权验证不充分,攻击者便可以重复使用访问令牌来执行未经授权的操作。此威胁是由授权验证配置不当引起的。Apigee 提供了 VerifyApiKey、OAuth 和 JSON Web 令牌 (JWT) 政策,有助于防范此漏洞,但正确配置这些政策有助于防止此类威胁。

为防止这种威胁,应用开发和安全团队必须紧密协作。授权本质上是一个复杂的主题,有效的精细授权需要深入了解应用的业务逻辑。

从 Apigee 实现的角度来看,需要考虑两个主要方面:

  • 访问令牌完整性
  • 强制执行访问权限控制

访问令牌完整性

请务必使用正确的 OAuth 或 OpenID Connect 流程以及相应的凭据验证或签名机制,验证发出请求的客户端提供的令牌是否被篡改。Apigee 支持所有常用的 OAuth 流程

Apigee 访问令牌验证政策包括:

强制执行访问权限控制

验证访问令牌的有效性后,请务必实施访问控制强制执行政策,以根据授权令牌的访问权评估每个传入的 API 请求。

Apigee 提供了两种主要的机制来验证和强制执行授权政策:

  • 内部:根据从授权令牌中提取为流变量的声明,使用条件流来评估访问请求
  • 委托:使用服务调用程序向第三方访问权限管理解决方案发送

如果访问权限控制模型相对简单,建议采用内部方法(如上图所示)。例如,从访问令牌中提取的声明可用于直接评估和授权 API 对象请求。

使用 OAuth 或 JWT 政策可用的流变量,通过条件流语句评估访问请求。

如果从访问令牌提取的声明无法直接用于授权对后端对象的 API 请求,或者对于需要单独调用授权服务器以获取访问令牌的更复杂的 OAuth 流程类型,建议使用委派方法(如上图所示)。

使用服务调用程序政策,可以请求第三方服务做出授权政策决策,或者获取有关发出请求的代理的其他声明信息,然后利用条件流做出访问控制决策

API2:2019 用户身份验证失败

威胁说明

实施不当的用户身份验证政策会让攻击者利用身份验证实现中的实现缺陷来冒充合法用户。在实现身份验证方法时,需要注意以下一些身份验证原则:

  • 始终对用户代理(应用)和发出请求的用户进行身份验证
  • 使用委托的身份验证和授权模式,避免直接在 API 请求中传递密码
  • 请务必验证访问凭据的签名,并确保使用的所有访问凭据都有指定的过期时间
  • 设置配额并使用 Apigee Sense 来检测和响应机器人驱动的暴力破解攻击,以防止暴力破解

由外而内的范式下,API 设计围绕使用者的数据用例(而不是后端系统中现有数据的结构)构建,并且在为外部使用者设计 API 时,安全性是关键要素。传统上,后端系统构建时未使用足够强的身份验证实现来向公共网络公开。这样,Apigee 就可以结合身份和访问权限管理解决方案,提供强大的解决方案来抵御此威胁。

这里要考虑几个主要元素,这两个因素将在后续部分中得到解决:

  • 安全设计:充分利用 Apigee 功能来实现身份验证模式
  • 治理:确保在所有已发布的 API 产品中以一致的方式正确使用设计的身份验证模式
  • 运营安全性:能够检测可疑或异常行为,并尝试规避或暴力破解经过身份验证的 API 代理

安全设计

安全设计的目标是正确实现身份验证流程并与第三方身份工具集成。安全设计是一个关键阶段,首先要根据将使用 API 端点的应用类型了解正确的委托身份验证流程类型。下一步是与您的身份团队一起定义要与您的身份解决方案一起实现的集成模式。

OpenID ConnectOAuth RFC 提供了大量委托的身份验证和授权流程,以及这些流程涉及的参与者。这是一个复杂的主题,而损坏的身份验证成为主要的 OWASP API 威胁之一,也就不足为奇了。有关如何正确实现身份标准的全面入门指南不在本文档的讨论范围内,但 Apigee 还有许多其他资源可供您更好地了解 OAuth 流程,例如此电子书网络广播以及实现示例

身份验证政策

可帮助解决身份和身份验证问题的 Apigee 政策包括:

流量管理

以下 Apigee 流量管理功能有助于防范暴力破解:

  • Spike Arrest 政策,用于设置 API 代理的总体滚动平均速率限制
  • 配额政策,用于根据应用密钥、开发者或 API 产品配额定义的配额为 API 代理设置精细的速率限制
  • 缓存政策,用于根据定义的过期时间缓存存储的访问令牌,以及使已缓存凭据invalidate的功能(例如,在有效访问令牌被盗的情况下)

治理

安全是一个持续不断的过程,而不是“一劳永逸”的项目,而配置错误是导致安全事故的一大原因。在定义身份验证流程、身份集成模式以及与身份验证相关的流量管理政策后,正确、一致地实施这些政策至关重要。

Apigee 提供了许多功能和工具来确保实现完整性并防止配置错误。

基于角色的访问控制 (RBAC)

无论您是大型企业还是小型初创公司,为避免配置错误,首先要确保只有合适的人员和团队可以访问和修改 API 代理配置。API 计划由贵组织中的多学科团队提供支持。每个团队只能被授予执行 API 之旅中工作所需的必要权限,这一点至关重要。

借助 Apigee 的功能,您可以将用户分配给预定义角色或创建适合 API 团队的自定义角色,从而管理基于角色的访问权限。正确定义和管理角色分配对帮助您安全扩缩 API 项目至关重要。您还可以使用联合与现有的公司目录集成,并减少在 Apigee 中管理第二组管理员凭据的需求。

共享流

借助共享流,您可以将政策和资源定义为可跨 API 代理实现的可重用对象。例如,您可能根据使用 API 的应用的类型,与您的安全团队协作设计了多种身份验证设计模式。API 开发者即使不是身份专家也可以重复使用此 API,只需知道正确的共享流,可以使用流调用程序政策添加到其现有 API 代理配置。

图:共享流是可重复使用的政策和条件逻辑捆绑包,可让您维护复合模式。

安全报告

确保只有组织中的合适人员可以修改您的身份验证模式,并且定义了共享身份验证流程后,您必须确保 API 团队开发的 API 代理以一致的方式使用这些身份验证模式。

Apigee 新的 Advanced API Ops 功能包括高级安全报告,可让运营和安全团队轻松查看所有 API 代理的报告,并专注于遵守安全政策,例如使用共享流。报告、日志记录和提醒是 API 安全性的关键要素,我们将在 API10:日志记录不足部分对其进行详细介绍,但从防止破坏的身份验证风险的角度来看,这对于确保遵循以共享流程形式实现的定义的身份验证标准非常有用。

运营安全性

一旦您的 API 使用正确的身份验证模式和基准流量管理方式在生产环境中投入使用,您的 SecOps 团队还必须能够监控和响应可疑活动,这些活动通常始于试图破解身份验证凭据。

Apigee Sense

Apigee Sense 可保护您的 API 免受不必要的请求流量的侵害,包括来自恶意客户端的攻击。Apigee Sense 会分析 API 请求流量,找出可能代表不需要的请求的模式。通过此分析,您可以识别发出不需要请求的客户端,然后采取措施来允许、屏蔽或标记这些请求。Sense 未来的功能将包括能够针对可疑流量自动启用 ReCAPTCHA 验证。

利用 Apigee Sense,您可以保护您的 API 免受请求模式的影响,其中包括:

  • 与人类行为相融合的自动化行为
  • 来自同一 IP 地址的持久性尝试
  • 异常错误率
  • 可疑客户端请求
  • 数据抓取
  • 密钥收集和身份验证暴力破解
  • 活动爆发
  • 地理位置模式

Advanced API Ops

虽然 Sense 专为检测和响应机器人式威胁而设计,但 Advanced API Ops 包括异常值检测高级提醒定义。

异常值检测的工作原理是将人工智能 (AI) 和机器学习 (ML) 模型应用于您的历史 API 数据。然后,异常值检测功能可以针对您甚至未曾想到的场景实时发出提醒,从而提高工作效率,并缩短 API 问题的平均解决时间 (MTTR)。

高级 API Ops 以现有的 API 监控提醒机制为基础,增加了以下高级提醒类型:

  • 总路况提醒。当流量在某个时间范围内发生指定百分比变化时发出提醒。例如,您可以在某个小时内流量增加 5% 或更多时发出提醒,或者在某一周流量下降 10% 或更多时发出提醒。
  • 异常值提醒。Edge 会检测流量和性能问题,而无需您自行预先确定问题。然后,您可以针对这些异常情况发出提醒
  • TLS 到期提醒。在 TLS 证书即将过期时发出通知

API3:2019 数据泄露过多

威胁说明

已发布的 API 可能会公开更多不必要的数据,需要依靠客户端应用执行必要的过滤。如果攻击者直接查询底层 API,则可以访问敏感数据。

数据简洁是 Apigee 针对 API 设计的“由外而内”的设计原则之一。请与您的用户体验设计人员和开发者合作,仅通过应用界面所需的 API 公开数据。后端系统并非针对公共使用模式而构建,因此使用 Apigee 设计 API 优先的首要任务之一,就是将公开的数据减少到为您的客户和开发者提供出色 API 产品所需的最少数据。

可重用性是 Apigee 的设计原则之一。除安全问题外,如果依赖应用来过滤 API 提供的数据,就必须在开发应用的每个平台上移植该过滤逻辑。

从安全角度来看,这种威胁是由将授权强制执行委托给应用导致的,但通常发生在您无法控制的平台或操作系统上。我们已经在 API1API2 中了解了正确实现身份验证和授权来避免未经授权的数据访问的重要性。

后续部分将介绍如何执行以下操作:

  • 将请求和响应重写为后端服务,以最大限度地减少数据泄露
  • 实现故障处理,防止详细错误消息将敏感环境信息泄露给攻击者,使其了解后端服务

重写响应和请求

后端系统通常不适用于公共应用或不受信任的公共网络。Apigee Edge 旨在通过保护后端免遭过度暴露数据,让您能够部署公共 API 产品。

为此,Apigee 使用了三项关键政策:

  • 分配消息
  • 代码宣传信息
  • 故障处理

AssignMessage 政策

在 API 代理流程中,分配消息政策会更改或创建新的请求和响应消息。通过此政策,您可以对这些邮件执行以下操作:

  • 向消息添加新的表单参数、标头或查询参数
  • 将现有属性从一条消息复制到另一条消息
  • 移除邮件的标头、查询参数、表单参数和/或邮件载荷
  • 设置消息中现有属性的值

使用“分配消息”时,您通常需要添加、更改或移除请求或响应的属性。不过,您也可以使用“分配消息”创建自定义请求或响应消息,并将其传递给替代目标,如创建自定义请求消息中所述。

使用自定义代码进行复杂的重写

对于复杂程度超出“分配消息”政策能力的复杂数据处理和重写规则,您可以使用 JavaScript、Java 或 Python 等过程语言。您可以将自定义代码添加到 API 代理,然后从添加到代理流的政策中调用该代码。对过程代码的支持旨在让您更轻松地实现对流变量、故障以及请求和响应正文的复杂处理。

借助过程代码,您可以:

  • 创建或操纵复杂的正文值,例如请求和响应值。
  • 重写网址,例如屏蔽目标端点网址。

Apigee Edge 针对支持的语言提供单独的政策:JavaScript 政策Java 宣传信息政策Python 脚本政策

故障处理

借助 Apigee,您可以使用 Raise Fault 类型的政策执行自定义异常处理。“递增故障”政策是“分配消息”政策的变体,允许您生成自定义故障响应来响应错误情况。

共享流

共享流可用于对故障消息强制执行标准化。例如,从后端检测特定 HTTP 错误代码的相同已配置政策可用于重写错误响应,以返回一般性错误消息。

API4:2019 资源不足和速率限制

威胁说明

如果不实施速率限制政策,攻击者可能会利用拒绝服务攻击让后端不堪重负。

您可以使用以下 Apigee 功能轻松应对这种威胁:

  • 使用配额和 Spike Arrest 政策作为预防性控制措施,对入站 API 请求设置流量限制
  • Apigee Sense 可动态检测和响应机器人驱动的攻击
  • 高级 API 监控和提醒功能作为检测控制措施,以便在发生 DDoS 攻击时收到提醒

使用配额和 Spike Arrest 政策进行速率限制

Apigee 提供了两种速率限制政策:

  • 高峰控制提供在 API 代理级别定义的一般政策,用于限制发送到后端的入站请求的总数
  • 配额提供了一种精细的政策工具,用于在 API 代理或 API 产品级别强制执行配额政策

Spike Arrest

高峰逮捕 政策旨在防范流量激增。此政策使用可在政策内定义的滚动平均值,限制 API 代理处理并发送到后端的请求数,以防止性能延迟和停机。

配额

借助配额政策,您可以配置 API 代理在一段时间内(例如一分钟、一小时、一天、一周或一个月)允许的请求消息数量。您可以针对访问 API 代理的所有应用设置相同的配额,也可以根据以下条件设置配额:

  • 包含 API 代理的产品
  • 请求 API 的应用
  • 应用开发者
  • 许多其他条件

此政策比“高峰控制”更精细,通常应同时使用。

使用 Apigee Sense 进行机器人检测

借助 Apigee Sense,您可以根据特定客户端、IP 范围或自治系统组织表现出恶意或可疑行为的客户端或位置,明确允许、屏蔽或标记来自这些组织的请求。Apigee Edge 会在您的 API 代理处理请求之前将这些操作应用于请求。例如,可以检测到存在“暴力猜测”行为的 IP 范围或特定客户端,然后对其进行屏蔽或标记。

使用 Advanced API Ops Monitoring 进行威胁检测

使用流量提醒,当环境、代理或区域的流量在某个时间范围内变化达到指定百分比时发出通知。当流量明显偏离您的预期吞吐量时,此功能可以动态发出提醒,就像在 DDoS 攻击期间一样。这些提醒可轻松发送给第三方日志记录和监控解决方案。

API5:2019 函数级授权已损坏

威胁说明

此威胁是 API1 的变体,也是一个授权漏洞。利用这种威胁,攻击者可以将请求发送到未经授权访问的函数,从而执行操作。例如,在 API 端点不验证 HTTP 请求动词的情况下,攻击者可能可以修改或删除他们仅有权读取的数据,方法是将 GET 替换为 PUT 或 DELETE。或者,如果不对 API 资源 URI 路径实现足够严格的访问控制,API 端点可能会让攻击者仅通过更改请求中的路径就能查看其他用户的数据。

此类威胁凸显了使用 Apigee 作为中介和抽象层的价值,因为默认情况下,许多并非为公开访问设计的后端系统都可能会提供一个端点来执行多个业务逻辑函数,包括高风险的管理功能。

降低这种威胁可能性的概念性要素通常分为以下几类:

  • 受保护的内容是什么?考虑您的 API 产品策略,并在使用 RESTful 最佳实践来设计 Apigee API 代理、产品和应用功能所公开的路径和资源时实现功能的逻辑细分。
  • 谁在访问您的 API 资源?使用 Apigee 的一些身份验证和授权功能(如 API1API2 中所述),定义高层级角色并实现“最小权限”默认访问权限。
  • Google 如何强制执行您的访问权限政策?使用条件流和故障来验证所有 API 请求的网址路径和动词。

图:此图演示了在 Apigee 中如何使用访问令牌中提供的范围作为授权来强制执行函数级授权。

使用 API 代理、产品和应用进行逻辑分割

Apigee 提供了高度灵活的工具包,可实现 API 资源的逻辑分割,从而使 API 代理能够捆绑到任意数量的 API 产品中,而这些 API 产品反过来又可供您的应用开发者使用,这些应用能够注册使用您的 API 产品的应用。访问权限政策可以在这些级别进行定义。

然而,要实现有效的职能授权和细分,定义 API 产品策略仍然至关重要。这个持续性的基本流程是定义 API 产品的“谁”和“内容”的一部分,具体方法是从客户和开发者的角度查看您的 API 资源,然后详细定义路径资源和 HTTP 动词级别,确切指定允许哪些类型的请求。

图:捆绑到一个 API 产品的 API 资源可以来自一个或多个 API,因此您可以混合搭配资源来创建使用层和授权边界。

使用 OAuth 范围和 JWT 声明的函数级访问权限控制

虽然上面针对 API1:2019 损坏的对象授权考虑的授权方法可以解决对象级别的精细访问权限控制问题,但在函数级别解决粗粒度访问权限控制同样重要。发出请求的用户是否根本能够请求此网址路径?此类政策通常按用户角色(客户、员工、管理员、内部或第三方开发者)进行定义。

为了降低配置错误的风险,此处的建议是与您的安全团队合作,确保通过使用 OAuth 范围或 JWT 声明,在访问令牌中包含关于发出请求的用户的断言。

使用条件流程请求验证

从基础层面上讲,REST API 调用包括以下部分:

  • 端点
  • 资源
  • 操作动词
  • 任意数量的其他请求属性,如查询参数

此威胁中所述的攻击类型通常是由于 API 请求过滤不足所致,致使攻击者能够执行未经授权的操作或访问受保护的资源。除了条件逻辑(允许您根据访问令牌或声明过滤请求)之外,Apigee 还支持根据请求本身实现过滤逻辑。

一旦您清楚了解并定义了 API 产品的业务逻辑,您的 API 允许哪些功能,下一步就是通过以下 Apigee 产品功能限制超出此范围的任何请求:

  • 条件逻辑和“引发故障”政策,以限制代理流配置中任何步骤的资源路径或动词
  • JSONXML 威胁防范政策,使用格式错误的 JSON 或 XML 请求载荷防范基于内容的攻击

API6:2019 批量分配

威胁说明

通过 API 向客户端应用提供的未经过滤的数据允许攻击者通过请求猜测对象属性,或者使用端点命名惯例获得线索,了解在何处对存储在后端的数据对象执行未经授权的修改或访问属性。

当未经过滤的数据(通常采用 JSON 或 XML 格式)发送到客户端时,就会引发这种威胁,从而让攻击者能够猜测出您后端系统的底层实现细节,以及机密数据元素的属性名称。此类攻击的结果可能会让攻击者能够读取或操纵不当数据,在最糟糕的情况下,还可能会导致远程代码执行漏洞。

允许此类威胁通常涉及两个方面:

  • API 设计视角。切勿依赖应用逻辑来执行客户端数据过滤,因为应用可能会被攻击者利用并被视为可信。始终设计 API 数据架构,以便仅公开启用 API 服务所需的最少数据
  • API 实现的观点。实现数据过滤和架构验证,防止意外将机密数据泄露给客户端应用

从 Apigee 产品的角度来看,我们提供多项实用功能,可确保为您的 API 实现可靠的数据过滤。

OpenAPI 规范过滤政策

借助 OASValidation(OpenAPI 规范验证)政策,您可以根据 OpenAPI 3.0 规范(JSON 或 YAML)验证传入的请求或响应消息。通过此政策,您可以:

  1. 通过创建 OpenAPI 规范 (OAS) 来设计您的 API
  2. 实现必要的中介、安全和缓存逻辑,以使用 Apigee 从后端安全地公开 API 产品
  3. 根据 OAS 规范中定义的数据架构(包括 basepathverb请求消息政策参数)验证传入请求

SOAP 消息验证政策

SOAP 消息验证政策允许您通过根据 XSD 架构验证 XML 消息或根据 WSDL 定义验证 SOAP 消息来验证基于 XML 的请求。此外,您还可以使用消息验证政策确认 JSON 或 XML 消息载荷的格式是否正确,包括在 XML 或 JSON 消息中验证以下内容:

  • 有一个根元素,
  • 内容中没有非法字符
  • 对象和标记已正确嵌套
  • 开始标记和结束标记相一致

API7:2019 安全配置错误

威胁说明

安全配置错误通常是由于以下原因造成的:不安全的默认配置、不完整或临时的配置、开放的 Cloud Storage、配置错误的 HTTP 标头、不必要的 HTTP 方法、宽松的跨域资源共享 (CORS) 以及包含敏感信息的详细错误消息。攻击者通常会尝试查找未修补的漏洞、常见端点或不受保护的文件和目录,以未经授权访问或了解他们想要攻击的系统。安全配置错误不仅会泄露敏感的用户数据,还会泄露可能导致服务器完全入侵的系统详细信息。此外,安全错误配置漏洞的其他一些用例可能包括:

  • TLS 配置有误
  • 包含堆栈轨迹的错误消息
  • 未安装补丁的系统
  • 暴露的存储空间或服务器管理面板

组织可以采取各种措施来解决和缓解与安全错误配置相关的挑战,其中包括:

  1. 建立安全强化和修补流程并将其标准化
  2. 制定 API 生态系统治理机制
  3. 限制管理员权限并启用审核和提醒功能

共享流和流钩子

Apigee 支持共享流程的概念,可让 API 开发者将政策和资源组合成可重复使用的群组。共享流程通过在一个位置捕获可重复使用的功能,帮助您确保一致性、缩短开发时间并更轻松地管理代码。您可以在各个 API 代理中包含共享流,也可以更进一步,将共享流放在流钩子中,为与共享流在同一环境中部署的每个 API 代理自动执行共享流逻辑。

API 安全性报告

随着组织努力开发治理框架,Apigee 提供了 API 安全性报告功能,可帮助运营团队了解他们需要 API 安全特性来执行以下操作:

  • 确保遵循安全政策和配置要求
  • 保护敏感数据免遭内部和外部滥用
  • 主动识别、诊断和解决安全突发事件

Apigee 安全报告可为运营团队提供深入的数据洞见,以确保遵从政策和配置要求,保护 API 免遭内外部滥用,并快速识别和解决安全突发事件。

通过安全报告,安全管理员可以快速了解 API 代理的安全性配置方式,以及可能影响代理安全性的运行时条件。使用此信息,您可以调整配置,以确保每个代理都具有适当的安全级别。

API 监控

Apigee 提供了一个全面的 API 监控平台,与安全报告功能相辅相成。API 监控功能让组织能够主动检测 API 流量和性能问题。Apigee API Monitoring 与适用于公有云的 Apigee Edge 搭配使用,提供有关 API 性能的实时情境数据分析,有助于快速诊断问题,并促进采取补救措施以确保业务连续性。

图:Apigee API Monitoring 提供各种工具来帮助您监控、调查问题并采取行动。它利用了 Google Cloud Platform 的一流智能功能。

Apigee Sense

Apigee Sense 有助于保护 API 免受不需要的请求流量(包括来自恶意客户端的攻击)的侵害。Apigee Sense 会分析 API 请求流量,找出可能代表不需要的请求的模式。

利用此分析,组织可以识别发出不需要请求的客户端,然后采取措施允许、屏蔽或标记这些请求。利用 Apigee Sense,可以保护 API 免受请求模式的影响,其中包括:

  • 与人类行为相融合的自动化行为
  • 来自同一 IP 地址的持久性尝试
  • 异常错误率
  • 可疑客户端请求
  • 数据抓取
  • 密钥收集
  • 活动爆发
  • 地理位置模式

API8:2019 注入

威胁说明

如果以不受信任的方式向 API 请求注入 SQL、NoSQL、XML 解析器、ORM、LDAP、操作系统命令和 JavaScript 等数据,可能会导致意外的命令执行或未经授权的数据访问。攻击者会通过任何可用的注入矢量(例如直接输入、参数、集成服务等)向 API 提供恶意数据,并期望这些数据会被发送到解释器。在使用漏洞扫描程序和模糊测试工具查看源代码时,攻击者可以轻松地发现这些漏洞。成功注入可能会导致信息泄露,影响机密性和数据丢失,在某些情况下,还可能会导致 DoS。

减少注入错误/攻击的最佳实践包括严格定义输入数据(例如架构、类型、字符串模式)、执行输入验证、限制检查以及在运行时强制执行检查。Apigee 平台允许使用过滤条件验证传入数据,以仅允许每个输入参数提供有效值。

Apigee Edge 充当传入 API 请求的服务器,用于检查以确保载荷结构在可接受的范围内(也称为限制检查)。您可以配置 API 代理,以便输入验证例程转换输入以移除有风险的字符序列,并将其替换为安全值。

RegularExpressionProtection 政策

RegularExpressionProtection 政策从消息中提取信息(例如 URI 路径、查询参数、标头、表单参数、变量、XML 载荷或 JSON 载荷),并根据预定义的正则表达式评估相应内容。如果任何指定的正则表达式的计算结果为 true,相应消息就会被视为威胁并被拒绝。正则表达式(简称 regex)是一组指定字符串中的模式的字符串。正则表达式使得可以通过编程方式针对模式评估内容。例如,正则表达式可用于评估电子邮件地址,以确保其结构正确。

RegularExpressionProtection 的最常见用法是评估 JSON 和 XML 载荷中的恶意内容。

任何正则表达式都无法消除所有基于内容的攻击,您应该结合使用多种机制来实现深度防御。本部分介绍了一些阻止内容访问的推荐模式。

还有几种其他方法可以验证 Apigee 平台提供的输入:

验证内容类型

内容类型是指通过 HTTP 传输的文件的内容,并根据两部分结构进行分类。Apigee 建议使用条件逻辑来验证请求和响应的内容类型,如下所述。

API 安全性报告

随着组织努力开发治理框架,Apigee 提供了 API 安全性报告功能,让运营团队了解他们需要 API 安全特性来执行以下操作,从而协助并帮助运营团队了解保护 API 安全:

  • 确保遵循安全政策和配置要求。
  • 保护敏感数据免遭内部和外部滥用行为的侵扰。
  • 主动识别、诊断和解决安全事件。

API9:2019 资产管理不当

威胁说明

环境管理不当和环境隔离会导致攻击者访问安全性较低的 API 端点。缺少治理保护措施还会导致不必要地公开已弃用的资源。

您可以利用 Apigee 的成熟功能来管理整个 API 生命周期,从而构建全面的治理模型,实现团队之间的协作,同时在安全利益相关方与 API 开发者之间实现职责分离,从而应对这种威胁。边界和控件可以使用以下代码进行配置和维护:

组织、环境和修订版本:可通过运行时环境确保隔离和安全的提升过程的虚拟和物理安全措施。

基于角色的访问权限控制:只有 API 团队中的必要人员才有权管理配置更改以及升级流程。

API 文档的受众群体管理:API 在开发者门户中发布后,您可以通过管理目标对象群组来限制文档的公开范围。

流钩子:您可以强制执行全局政策和模式,这些政策和模式可以作为特权保护措施进行管理,API 开发者无法修改。

安全报告:安全利益相关方可以端到端地了解已发布的 API 及其支持配置。您可以根据每个已发布 API 端点的风险概况来审核和评估对全局安全政策的遵守情况。

组织和环境

Apigee 中的配置工件、用户和功能可限定为特定组织和/或环境。这意味着,平台具有可以围绕 API 及其支持配置放置的预构建安全措施。

组织:组织是 Apigee 中的顶级租户。它让您可以对流量、配置和用户进行完全隔离。作为治理最佳实践,您应考虑将生产组织和非生产组织分开。这种做法可有效避免将生产数据、用户和流量与较低环境混合在一起。

环境:Apigee 中的 API 可以通过多种部署状态进行升级;每种状态都与一个执行上下文相关联。环境上下文不会在升级过程中一并传送,因此可以避免向无特权的用户公开敏感配置。

修订版本:修订版本支持通过环境无缝升级 API 和各项功能。

基于角色的访问控制

为了减少 API9 的影响,必须明确定义安全利益相关方与 API 开发者之间的职责定义,并明确这些职责分离。如本文档中所述,Apigee 具有基于角色的灵活访问权限控制功能,允许您为自定义角色分配权限。对于这种特定威胁,可以对角色进行界定,以限制每个组织、环境的权限或更精细的配置权限。建议的做法是,考虑对权限进行限制,以便通过环境更改 API 的部署状态,并确保开发者无法访问或修改全局安全库 (Flow Hooks)。这些有限的角色可以防止未经请求更改全局安全政策,这些政策广泛适用于旧版端点和当前发布的端点。

API 受众群体管理文档

开发者门户是 API 策略成功的关键组成部分;它可让您维护与您的 API 相关的所有文档(包括主机/端点、资源、操作、载荷架构等)的全面清单。在 Apigee 中,您可以使用 API 产品结构对 API 进行分组。API 产品由属于同一业务和安全环境的资源和操作集合(例如服务计划、业务网域、类别、公司层次结构等)定义。

借助 Apigee 的集成式开发者门户,您可以发布 API 产品,并通过管理目标对象群组来限制发布内容的公开范围。此功能符合符合业务和安全要求的内容分割策略。

流挂钩

API 的推广和发布流程必须始终包括安全合规性和认证流程。为了提高效率,使用适当工具的 API 团队应能制定安全措施,保证职责分离并保持敏捷的发布周期。

借助 Apigee,您可以通过流钩子强制执行全球政策,从而提升安全治理职责。这些全局政策可以作为特权保护措施进行管理,API 开发者无法修改,因此可以保证职责分离,还可以通过应用默认安全性来提升敏捷性,进而为给定执行环境中部署的所有 API 提供安全合规性。

图:在 Apigee 中,可以通过流钩子和共享流配置特权保护措施。安全利益相关方负责维护与安全相关的全局政策。这些功能可保证责任分离,并有助于实现敏捷的开发生命周期。

安全报告

安全审核旨在评估和测试旨在保护贵组织的数据和业务目标的安全政策。API 是标准化的公共或专用接口,需要受到同时可审核的全面安全治理模型的保护。

在 Apigee 中,您可以访问专门的安全报告,这些报告有助于确保遵循定义的政策,并让您的安全团队根据以下各方面的全面深入分析采取行动:

运行时流量:通过一站式视图获取有关 API 流量的数据分析:目标服务器、虚拟主机、TLS 配置、每个环境的流量更改等。

配置:对 API 代理配置的审核功能,端到端地全面揭示在 API 代理级别执行的所有政策,以及在组织或代理级别附加的共享流程的执行范围。

用户活动:跟踪平台用户执行的敏感操作。通过深入分析可疑活动来分析可疑活动。

API10:2019 日志记录和监控功能不足

威胁说明

日志记录、监控和提醒功能不足使得正在进行的攻击不会被检测到,因此需要制定策略来获取有关业务影响的关键事件的数据洞见。

API 的事件和日志记录管理策略应考虑以下最佳实践:

  • 日志管理政策:记录并强制执行规则,以对日志详细程度、日志级别、日志完整性、集中式存储库等进行标准化和控制
  • 事件管理政策:保证每个事件均可追溯到其来源。此外,事件应能够按重要性和业务影响进行分类
  • 报告和审核:安全和运营利益相关方应该能够实时访问日志和事件并做出响应。此外,利益相关方可以执行强化周期,以根据历史数据调整检测模式

Apigee 提供了创建全面的事件和日志记录管理策略所需的工具。这些工具包括:

消息日志记录政策:根据来自 API 流量的流量数据或元数据创建日志流。您可以利用条件逻辑和消息模板,灵活地决定数据流的详细程度。

Google 的 Cloud 运维套件:利用开箱即用的集成功能,与 Google 提供的伸缩能力极强的监控和日志记录工具集成。

服务出价邀约政策:增加了对需要 HTTP 端点发送事件的日志流的支持。

分析:可通过开箱即用和/或自定义报告访问和分析历史流量元数据。根据趋势创建和管理提醒,并了解流量异常。

API 监控:如前所述,此工具提供了可根据关键事件触发的提醒功能。系统可以进一步分析和处理流量日志。