V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
vocalman
V2EX  ›  程序员

实现 API 管理系统的几个重要关键词

  •  
  •   vocalman · 2019-08-20 11:20:24 +08:00 · 1481 次点击
    这是一个创建于 1959 天前的主题,其中的信息可能已经有所发展或是发生改变。

    管理 API 的需求源自于 Web API 开展业务。从 2006 年开始,然后逐渐成熟,并在 2016 年之前进入市场。无论是通过代理现有 API 的管理网关、本身作为用于部署 API 本身的网关的一部分,还是作为连接层在代码中,API 管理就是针对 API 进行编辑、测试、发布、身份验证,计量,分析报告、监控等。在过去十年中,API 管理提供商共同定义了一些使用 Web API 完成业务的常用方法。虽然 API 技术非常技术化,但它依旧与 API 业务密切有关,并且通过使用 Web 提供对数据,内容,算法和其他数字资源的访问所产生的价值。下面将通过几个关键词的形式说明 API 管理的重要性和实现方式。

    1.安全性:

    API 认证

    如果你经常向合作伙伴提供 API 访问权限,那限制 API 访问合作伙伴 IP 地址的防御力(白名单)非常强大。但你仍需要进行身份验证和速率限制,只要将流量减少到只有已知的合作伙伴,这会消除在对更广泛的互联网开放的 API 上看到的大量恶意流量,例如蛮力企图获取访问权限和拒绝服务攻击。即便使用 IP 白名单,建立 API 网关仍然是最佳做法。这有助于身份验证并确保后端仅接收正确返回的 API 调用。

    最常见的是 OAuth 和 OAuth2,用于在 API 之间进行通信和保护通信。即便使用 OAuth,其他人的 Token 也可能是一个问题。如何管理 Token 的生命周期? Token 是否得到刷新?在一些成功的基础架构中,使用了一次性 Token 来严格限制正在尝试的操作类型,它是一种归结为安全 Token 管理和基于证书的身份验证。

    在授权之前始终对 API 进行身份验证 ,有许多方法可以进行 API 身份验证,但多因素身份验证是常用的方法。对于 API,使用外部进程(例如通过 OAuth 协议)获取访问 Token 是很常见的。身份验证密钥最敏感,必须保持安全,建议使用管理存储来自动执行整个过程。

    也就是说,仅凭身份验证不足以授予对 API 的访问权限,应该有一个授权步骤来确定哪些资源可以访问 API。检查授权的各种方法包括基于内容的访问控制( CBAC ),基于角色的访问控制( RBAC )或基于策略的访问控制( PBAC ),这些方法可确保业务数据保持完全受到保护,以防止未经批准的访问。

    1_9oK18ZPQX75ophT4s6Ee6A.png

    限制访问 API 的资源

    保护 API 环境涉及每个 API 接触点,对 API 客户端(第三方应用程序和开发人员或微服务)进行身份验证和授权,限速 API 调用以缓解分布式拒绝服务( DDoS )攻击并保护处理后端应用程序 API 调用。

    用于保护 API 的一些技术和工具是:

    1 )使用 JSON Web Token ( JWT )来验证和授权 API 客户端,JWT 包括有关客户端的信息,例如管理权限或到期日期。当客户端向 JWT 提供其 API 请求时,API 网关会验证 JWT 并验证其中的声明是否与你为客户端请求的资源设置的访问策略相匹配。

    2 )定义和实施访问控制策略,仅允许某些类型的客户端执行写入操作或访问敏感数据(如定价)。

    3 )定义基于角色的访问控制,该控制仅允许某些用户(例如特定组织内的开发人员)发布敏感信息(如定价或库存水平)的 API。

    4 )通过应用速率限制策略来保护 API 本身,该策略设置 API 网关从指定源(例如客户端 IP 地址)每秒(或其他时间段)接受的请求数量的阈值。

    5 )使用 HTTPS 保护后端应用程序 - 应该在 API 网关和处理 API 请求的后端系统之间使用 HTTPS 协议。

    限制和配额的断路器,一个好的做法是强制执行每个应用程序的数据使用配额,以便在 DoS,DDoS 攻击或防止未经授权的用户不正当使用 API 时,后端不会受到影响。每个资源的节流和配额不仅可以作为断路器,还可以防止系统产生负面影响。具有配额和限制等策略的复杂 API 管理平台可提供此功能。

    三个关键领域

    API 安全方法的三个关键领域:

    1 )采用说明性方法。客户转向 OAuth 2 并使用 Open ID Connect 进行覆盖,OAuth 2 有很多选择,Open ID 虽然限制了选择但也指导出最佳实践。

    2 )仔细考虑应用程序 ID 如何与用户身份相关联。

    3 )从最广泛的意义上考虑 API 安全性,以减少入侵企图。可以采取分发安全实施的方法。默认情况下,API 管理专注于提供 API 网关,而 API 网关应该专注于流量的身份验证和授权。建议采用多层方法,并在 Apache Mod Security 的单独层中包含 Web 应用防火墙。

    10100191-screen-shot-2018-08-28-at-25821-pm.png

    2.易用性:

    部署 API 有许多重要元素,包括身份验证,保护 /可用性和货币化。但是如果不使用 API,其中许多都无关紧要。易于使用和成功完成用例是被使用的关键。我们的集成平台使 API 易于使用。通过我们的应用程序连接器,我们可以简化许多 API 的使用。

    API 中的最后一个字母是“界面”,因此明确定义该界面如何工作是十分重要的。客户如何使用你的 API,以及开发人员如何将这些 API 推向市场,你需要提前做出一些重要的架构决策。随着 API 数量的增长,保持命名和数据格式的一致性变得很重要。当你提供 5-10 个 API 时,这并不是什么大问题,但是当数量超过 100 时,你可能有多个人(或多个团队)在不同的时间段创建它们,作为不同产品的一部分引入等等,让所有团队轻松了解并执行现有规范至关重要。如果这些规范不统一且难以阅读,那它一定会导致问题。

    3.API 生命周期管理:

    具有以下四个主要元素:

    1.API 生命周期管理,提供管理 API 整个生命周期的能力,从 API 的设计、开发、发布和管理(包括维护和版本控制),从而允许公司通过撰写创新解决方案来加速创新,提高开发效率,促进企业数据的更好安全性,并允许用户轻松发现和使用 API。

    2.API 网关,API 网关充当一组 API 的入口点。使用 API 网关的好处是为每个客户端提供最佳 API,减少客户端需要进行的请求数量并实施适当的安全性和控制。

    3.文件,Developer Portal 是提高 API 采用率和粘性的关键。这是开发人员学习和使用 API 的第一点,也是开发人员了解身份验证 /授权机制的地方。此外,他们还将了解哪些 API 可供使用,并利用每个 API 请求的描述和示例。

    4.API 分析 /监控,API 分析和监控可帮助了解和理解其 API 的使用情况,从而提供有关各种 API 使用的见解。或者,开发者可以强制执行 API 配额,限制和 API 流量,以阻止 /限制与你的业务目标不一致的使用。

    在国内的 API 接口管理工具中,能完整实现 API 管理全流程并且体验较好的平台和工具就是 EOLINKER了,包括接口文档编辑、API 测试、自动化测试和 API 监控和 API 网关等功能,能体验到完整的 API 研发方案。而国外的诸如 POSTMAN、Swagger 功能也很强大,但是前者注重测试,后者注重接口管理,可能并不全面,而且全英的语言对国人也不是很友好。因此有需求或者感兴趣可以各自了解下 EOLINKER、POSTMAN、Swagger。

    在选择 API 管理解决方案时,最好的建议是始终保持关系简单,模块化,强独立性并与 API 生命周期中的其他模块分离,并保持业务参与度有限,使得可以在没有冗长合同的情况下不断使用成长。API 生命周期中的每一阶段都应该反映 API 的理念,并保持小巧,分离,专注做好该阶段目标。

    参考资料:

    Kin Lane,API Life Cycle Basics: API Management,https://dzone.com/articles/api-life-cycle-basics-api-management Tom Smith,Keys to API Management,https://dzone.com/articles/keys-to-api-management

    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1019 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 19:51 · PVG 03:51 · LAX 11:51 · JFK 14:51
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.