OWASP 十大 API 威胁

您正在查看 Apigee Edge 文档。
前往 Apigee X 文档
信息

本文档介绍了您可以在 Apigee 中使用哪些方法来解决 OWASP 指出的安全漏洞。如需了解为 Apigee 记录的其他方法,请参阅 Google Cloud 上的 OWASP Top 10 2021 缓解选项

简介

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

本文档将介绍防范 OWASP 2019 年十大 API 安全威胁中所述常见 API 攻击的方法。最新列表中突出显示的重大威胁的一个共同特点是,这些威胁是由身份验证和授权控制措施放置不当所致,例如,通过使用依赖于使用方客户端应用执行访问控制强制执行的反模式,依赖于在客户端应用中过滤 API 请求返回的数据。

随着 API 生态系统的持续快速发展,API 滥用和滥用导致攻击者渗漏数据,这不幸已成为当今最常见的攻击媒介之一。安全性仍然是 Apigee 的首要任务,我们推出了许多新功能,例如 Advanced API Ops,其中包括安全报告和异常检测功能。不过,正确设计和实现 Apigee 的安全功能对于降低 API 遭到成功攻击的可能性至关重要。

由于您无法控制应用所运行的平台,因此应将消费者应用视为不可信或“公开”应用。假设任何公开应用都可能遭到入侵,因此无法信任它们来强制执行访问控制 (API1API5)、过滤响应数据 (API6) 或安全地存储客户端密钥 (API2) 等客户端密钥或访问令牌。我们从 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 代理始终使用这些身份验证模式。

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)。

Advanced API Ops 基于现有 API Monitoring 提醒机制构建,添加了以下高级提醒类型:

  • 总流量提醒。当流量在某个时间范围内的变化幅度达到指定百分比时发出提醒。例如,您可以选择在流量在一小时内增加 5% 或更多时发出提醒,或在一周内降低 10% 或更多时发出提醒
  • 异常值提醒。Edge 可检测流量和性能问题,您无需自行确定这些问题。然后,您可以就这些异常值发出提醒
  • TLS 到期提醒。在 TLS 证书快要过期时发出通知

API3:2019 过度数据泄露

威胁说明

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

Apigee 的 API 设计“外向内”设计原则之一是数据简洁。与用户体验设计师和开发者合作,仅通过应用界面中所需的 API 公开数据。后端系统并非专为公共使用模式而构建,因此使用 Apigee 进行 API 优先设计时,首要任务之一是将公开的数据量减少到最低限度,以便为客户和开发者提供出色的 API 产品。

Apigee 的另一项设计原则是可重复使用。除了安全问题之外,依赖应用来过滤 API 提供的数据会导致您需要将过滤逻辑移植到您开发应用的每个平台。

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

以下部分将介绍如何:

  • 重写对后端服务的请求和响应,以最大限度地减少数据泄露
  • 实现故障处理,以防止详细错误消息向攻击者泄露有关后端服务的敏感环境信息

重写响应和请求

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

为此,Apigee 使用以下三个关键政策:

  • Assign Message
  • 代码宣传信息
  • 故障处理

AssignMessage 政策

在 API 代理流期间,AssignMessage 政策会更改或创建新的请求和响应消息。该政策可让您对这些消息执行以下操作:

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

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

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

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

利用程序化代码,您可以:

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

Apigee Edge 针对受支持的语言提供了单独的政策:JavaScript 政策JavaCallout 政策PythonScript 政策

故障处理

通过 Apigee,您可以使用 RaiseFault 类型政策执行自定义异常处理。Raise Fault 政策是 Assign Message 政策的变体,让您可以生成自定义故障响应来响应错误情况。

共享流

共享流程可用于强制标准化故障消息。例如,用于检测后端中的特定 HTTP 错误代码的配置政策可以用于重写错误响应,以返回通用错误消息。

API4:2019 缺少资源和速率限制

威胁说明

如果未实现速率限制政策,攻击者可以通过拒绝服务攻击使后端过载。

您可以使用以下 Apigee 功能轻松解决此威胁:

  • 配额和 Spike Arrest 政策,作为预防性控制措施来对入站 API 请求施加流量限制
  • Apigee Sense,用于动态检测和响应由漫游器驱动的攻击
  • 高级 API 监控和提醒作为检测控制措施,用于提醒正在进行的 DDoS 攻击

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

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

  • Spike Arrest 提供了一项在 API 代理级别定义的通用政策,用于对后端的传入请求总数进行速率限制
  • 配额提供了一种精细的政策工具,可在 API 代理级别或 API 产品级别强制执行配额政策

Spike Arrest

Spike Arrest 政策可以防范流量激增。此政策使用政策中可定义的滚动平均值,限制 API 代理处理并发送到后端的请求数,从而避免性能滞后和停机。

配额

配额政策可用于配置 API 代理在一段时间(例如分钟、小时、日、周或月)内允许的请求消息数量。您可以将所有访问 API 代理的应用都设置为相同配额,也可以根据以下项设置配额:

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

此政策比 Spike Arrest 更精细,通常应与 Spike Arrest 一起使用。

使用 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 作为中介和抽象层的重要性,因为许多后端系统(并非专为公开访问而设计)默认可能会提供单个端点来执行多个业务逻辑函数,甚至包括高风险的管理功能。

用于降低此类威胁可能性的概念元素通常可分为以下几类:

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

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

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

Apigee 提供了高度灵活的工具包,可实现 API 资源的逻辑细分,从而允许将 API 代理捆绑到任意数量的 API 产品中,这些 API 产品随后可供应用开发者使用,他们还可以注册使用您的 API 产品的应用。您可以在任一级别定义访问权限政策。

不过,若要实现有效的功能授权和细分,定义 API 产品策略至关重要。在这个基本且持续的过程的一部分中,您需要从客户和开发者的角度审视 API 资源,然后在路径资源和 HTTP 动词级别定义允许的确切请求类型,从而定义 API 产品的“谁”和“什么”。

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

使用 OAuth 作用域和 JWT 声明实现函数级访问权限控制

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

为降低错误配置的风险,建议您与安全团队合作,确保使用 OAuth 作用域或 JWT 声明,在访问令牌中包含有关请求用户的断言。

使用条件流进行请求验证

从基础层面来看,REST API 调用由以下部分组成:

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

此威胁中所述的攻击类型通常由 API 请求过滤不充分导致,从而允许攻击者执行未经授权的操作或访问受保护的资源。除了允许您根据访问令牌或声明过滤请求的有条件逻辑之外,Apigee 还允许您根据请求本身实现过滤逻辑。

在明确了解并定义 API 产品的业务逻辑以及 API 允许执行哪些功能后,下一步是通过以下 Apigee 产品功能限制任何超出此范围的请求:

  • 条件逻辑和 Raise Fault 政策,用于在代理流配置的任何步骤中限制资源路径或动词
  • 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 规范中定义的数据架构(包括基本路径动词请求消息政策参数)验证传入的请求

SOAP 消息验证政策

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

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

API7:2019 安全配置错误

威胁说明

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

  • TLS 配置错误
  • 包含堆栈轨迹的错误消息
  • 未打补丁的系统
  • 公开存储空间或服务器管理控制台

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

  1. 建立并标准化强化和补丁流程
  2. 制定 API 生态系统治理方案
  3. 限制管理员访问权限并启用审核和提醒

共享流和流程钩子

Apigee 支持共享流的概念,让 API 开发者可以将政策和资源组合成一个可重复使用的组。通过将可重复使用的功能集中到一个地方,共享流有助于确保一致性、缩短开发时间以及更轻松地管理代码。您可以在各个 API 代理中添加共享流,也可以更进一步,将共享流放入流钩子,以便为与共享流部署在同一环境中的每个 API 代理自动执行共享流逻辑。

API 安全报告

随着各组织努力制定治理框架,Apigee 提供了 API 安全报告相关功能,可帮助运营团队获得所需的 API 安全属性可见性,以便:

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

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

借助安全报告,安全管理员可以快速了解 API 代理的安全配置方式,以及可能会影响代理安全性的运行时条件。您可以根据这些信息调整配置,确保为每个代理设置适当的安全级别。

API 监控

Apigee 提供全面的 API 监控平台,可与安全报告功能相辅相成。借助 API Monitoring,组织可以主动检测 API 流量和性能问题。Apigee API Monitoring 与 Apigee Edge for Public Cloud 结合使用,可提供有关 API 性能的实时上下文数据洞见,帮助快速诊断问题,并促进采取补救措施以实现业务连续性。

图:Apigee API Monitoring 提供了各种工具来监控、调查和处理问题。它利用 Google Cloud Platform 提供的卓越智能功能。

Apigee Sense

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

通过此分析,组织可以识别发出不必要请求的客户端,然后采取措施来允许、屏蔽或标记这些请求。借助 Apigee Sense,您可以保护 API 免受以下请求模式的侵害:

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

API8:2019 年注入

威胁说明

将不可信的数据(例如 SQL、NoSQL、XML 解析器、ORM、LDAP、操作系统命令和 JavaScript)注入 API 请求可能会导致执行意外命令或未经授权访问数据。攻击者会通过任何可用的注入矢量(例如直接输入、参数、集成服务等)向 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 Operations Suite:利用开箱即用的集成功能,轻松集成 Google 提供的可伸缩性极高的监控和日志记录工具。

服务标注政策:添加了对需要 HTTP 端点发送事件的日志流的支持。

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

API 监控:如前所述,此工具提供可根据重要事件触发的提醒功能。您可以进一步分析流量日志并采取相应措施。