API 密钥是一种唯一标识符,用于对尝试通过应用程序编程接口或 API 访问其他软件或系统的软件和系统进行身份验证。
API 即应用程序编程接口,是一组规则或协议,支持软件应用程序相互通信以交换数据、特性和功能。API 为应用程序所有者提供了一种简单、安全的方式,可让组织内的部门使用他们的应用程序数据和功能。应用程序所有者还可以将数据和功能共享或推销给业务合作伙伴或第三方。API 允许仅共享必要的信息,隐藏其他内部系统详细信息,这有助于保证系统安全。
由于 API 可提供对敏感数据的访问权限,因此,API 必须能够验证发出请求的应用程序是否被授权这样做,这一点非常重要。使用 API 密钥,应用程序开发者可以对调用 API 后端的应用程序进行身份验证,确保它们被授权这样做。
虽然 API 密钥是确保企业 API 及其处理的数据安全的一个方面,但它们并不是确定的 API 安全解决方案。值得注意的是,API 密钥不如身份验证令牌或 OAuth(开放授权)协议安全。这些措施更适合对特定人类用户进行身份验证,这样,各组织将能够更精细地控制对特定 API 功能的访问,并且可以设置为过期。
OAuth 可以与 API 密钥一起使用,也可以单独使用。有时,企业可能会对某些用户使用 API 密钥,而对其他用户使用 OAuth。还有其他方法来验证对 API 的调用,如 JSON Web 令牌 (JWT),但它们并不常用。
API 密钥仍然是 API 安全的一个有用方面,因为它们可以帮助组织监控对 API 的调用并管理 API 消耗,从而提高安全性并确保这些程序具有足够的带宽。
API 密钥是随机生成的唯一字母数字字符串,API 使用它对调用 API 的应用程序进行身份验证。API 提供商颁发的每个密钥都与特定的 API 客户端(例如软件模块)相关联。API 密钥使 API 服务器能够识别哪些软件和应用程序正在向 API 发送调用。生成的密钥用于该应用程序或项目向关联 API 发出的每个请求(直到刷新或删除密钥)。
当某个应用程序调用 API 以向另一个应用程序请求功能或数据时,API 服务器使用 API 密钥来验证该应用程序的真实性。对于 Web 应用程序和 REST API,密钥可以作为标头、查询字符串或 Cookie 发送。如果 API 密钥与已批准的密钥匹配,服务器将返回所请求的数据。如果不匹配,则拒绝该调用并发送拒绝消息。
如有必要,开发人员可以添加更多验证和限制。
例如,开发人员可以为应用程序或项目配置访问权限,仅允许访问某些类型的数据或功能。开发人员还可以设置应用程序限制,指定哪些网站、IP 地址、应用程序(或移动应用程序)以及软件开发工具包 (SDK) 可以使用 API 密钥。
虽然 API 密钥是 API 安全的一部分,但它们不应是组织确认和验证 API 调用的唯一方式。事实上,虽然 API 密钥很有用,但它们并不是一种特别安全的对调用进行身份验证的方法。API 密钥可以标识特定的应用程序或项目,但无法验证正在使用该应用程序进行调用的个人用户。这使得 API 密钥成为强制执行 API 访问控制的糟糕选择。API 密钥仅提供项目标识和项目授权,不提供用户标识或用户授权。
将 API 密钥视为密码:它是一层安全保障,但也是安全漏洞的潜在故障点。与密码一样,任何有权访问 API 密钥的人都可以使用它。无法验证谁在使用密钥,并且密钥很少过期,除非专门重新生成。
通过超文本传输协议 (HTTP) 进行传输时,用于 Web 应用程序的 API 密钥被认为并不安全,因为它们发送未加密的凭据。为了被视为安全的,Web 应用程序必须具有安全套接字层 (SSL) 认证,也称为超文本传输安全协议 (HTTPS)。
API 调用的其他验证方法包括:
身份验证令牌也称为 API 令牌,它们为 API 安全增加了额外一层,因为它们可以标识特定用户,而不仅仅是发出请求的应用程序。这些令牌是代码片段,用于标识正在向 API 请求数据的用户。由于它们是多行代码而不是单个字母数字字符串,因此,它们向 API 提供了有关哪些人或项目正在发出请求的更多信息。还可以生成范围有限的 API 令牌,仅授予在有限时间段内访问特定信息的权限。
OAuth(开放授权)协议是行业标准方法的一部分,用于在与 OpenID Connect (OIDC) 一起使用时对 API 调用进行授权和身份验证。OAuth 协议涉及授予用户访问所请求信息的权限,并用于更广泛的用户身份验证过程。
OAuth 使用一种称为访问令牌的 API 令牌。访问令牌由用户请求访问的 API 向用户发放。这些令牌通过 API 和用户之间的一系列通信,授予对用户所请求的特定信息的访问权限,而无需与 API 共享凭据或其他安全信息。
OpenID Connect 是一种基于 OAuth 构建的身份验证协议,支持 OAuth 通过发放身份令牌和访问令牌来对用户进行身份验证。这些身份令牌还包括有关发出请求的特定帐户的信息,而不仅仅是项目。OpenID Connect 对 OAuth 的授权流程进行了细微调整,在授予对 API 的访问权限之前,需要访问令牌和身份令牌。
API 密钥可以与其他形式的身份验证一起用于 API 调用,也可以单独使用。在企业内部,API 可能会根据请求访问权限的对象使用不同类型的身份验证和授权。组织中的某些部门(如开发人员)可能需要不受限制地访问 API,而对于其他部门,则需要更严格地控制访问权限。
API 密钥有两种主要类型,它们都在对 API 调用进行身份验证方面发挥作用。有时,甚至会同时使用。
使用这些密钥可访问非敏感数据,或无需用户身份验证的功能。它们可以在开发人员和使用 API 的其他利益相关者之间公开共享。
私钥用于访问敏感数据,也可以向密钥用户授予写入权限。私有 API 密钥可以与公钥一起使用,以增加额外的安全层。
尽管 API 密钥不应是对 API 调用进行身份验证的唯一方法,但成对使用公钥和私钥可以提供额外的安全层。在调用 API 时,私钥可用作需要访问 API 特定功能的特定客户的数字签名。然后,公钥可以验证签名并再次确认对 API 的调用是合法的。
API 密钥在组织内提供超越简单身份验证的有用功能。由于这些密钥有助于确定 API 的访问权限,因此,它们还可用于保持应用程序正常运行,并提供有关这些应用程序使用情况的有用数据。
API 密钥是访问管理的一个重要方面,它允许组织控制哪些用户可以访问其 API。通过 API 的匿名流量可能是恶意活动的指标。使用 API 密钥,组织将能够阻止未经授权的 API 访问(例如匿名 API 调用),从而可以限制潜在网络攻击的范围。以这种方式限制 API 服务还有助于防止 API 受到请求轰炸,最大限度地减少重要应用程序停机的可能性。
API 密钥可用于限制 API 的流量,这种措施称为速率限制。速率限制使组织能够控制客户端在特定时间段内向 API 发出的请求数量。流量达到定义的阈值后,API 访问将被拒绝。
仅允许指定参数内的应用程序流量,组织可以优化 API 资源和带宽的使用。这些设置可以在组织的 API 文档中确定。
由于 API 密钥是唯一标识符,因此组织可以使用 API 密钥来跟踪流量和对 API 的调用。通过使用 API 密钥,组织可以将对 API 的每次调用追溯到特定应用程序。此外,还可以确定进行调用的次数、调用类型、用户的 IP 地址范围,以及使用的是 iOS 还是 Android。
分析使用模式有助于组织更好地了解企业的哪些部门最频繁地访问特定端点。监控流量和过滤日志对于 API 安全也很有用。在发生网络攻击的情况下,根据特定 API 密钥检查 API 服务器上的活动可以让组织更深入地了解攻击,以及哪些密钥可能已被泄露。
API 密钥可以帮助保护 API、数据和网络,但前提是它们必须以安全的方式使用。许多组织采用这些方法来确保其 API 密钥的安全,并防止 API 成为网络攻击的载体。
API 密钥不够安全,不能作为对 API 调用进行身份验证的唯一方法。它们无法验证单个用户,并且很容易泄露。当 API 密钥与其他身份验证方法(如 OAuth、JSON Web 令牌 (JWT) 或身份验证令牌)一起使用时,可以为组织的 API 生态系统增加一层额外的安全屏障。
各组织使用不止一种身份验证方法的情况并不少见。例如,开发人员可在开发期间在内部使用 API 密钥来提供对 API 的无限制访问,但随后对外部客户端使用 OAuth,因为它提供会过期的令牌,并且可以设置为仅允许访问特定数据。
生成密钥时,通常为纯文本形式。就像密码一样,密钥的安全性取决于其存储方式和位置。安全专业人员建议将这些密钥作为哈希值存储在数据库中,以免被盗。
将 API 密钥嵌入源代码或存储库中也会使它们容易受到不法分子的攻击,在发布应用程序时,密钥也可能会暴露给公众。如果可能,请使用安全的加密数据存储库来保存生成的 API 密钥。
除非开发人员设置到期日期,或者密钥生成器撤销访问权限或重新生成密钥,否则,API 密钥不会过期。如果未经授权的用户获得 API 密钥,他们可以在组织内任何人都不知情的情况下访问敏感数据。毕竟,他们正在使用正确的密钥来获取他们所请求的数据。
每 90 到 180 天轮换并生成新的 API 密钥,有助于确保 API 的安全。删除不再使用的 API 密钥也是个好主意。为了提供额外的保护层,各组织可以通过强制执行访问权限来限制与客户端共享的 API 密钥的访问范围。这些权限只允许用户访问所需的端点,而不能访问其他内容。有些组织会自动生成新密钥,确保定期轮换。
AI 驱动的自动化可在 API、应用程序、事件、文件和 B2B/EDI 方面扩展敏捷性。
通过 IBM 集成解决方案,连接应用程序和系统以快速安全地访问关键数据,从而释放业务潜力。
利用 IBM 的云咨询服务解锁新功能并促进业务敏捷性。了解如何通过混合云战略和专家合作共同制定解决方案、加速数字化转型并优化绩效。