API网关如何发展:更轻、更智能、云原生
安全访问:在AWS API网关中实现API密钥的指南
API 网关密钥是保护 API 安全的关键。在本指南中,您将学习如何生成和应用这些密钥,确保您的 AWS API 网关有效地进行身份验证并处理授权的客户端请求。我们将深入介绍设置过程、管理技巧和安全最佳实践,以帮助您保持强大的访问控制。准备好加强您的服务的入口点。
这篇文章的目的是帮助您深入了解 API 密钥生成的细微差别以及它们在保护数字基础设施方面发挥的关键作用。我们将探讨 API 密钥管理从创建到停用的复杂性,以及在此过程中采取细致方法的重要性。在本指南结束时,您不仅将具备实施 API 密钥的知识,而且还能精确监控其生命周期。准备深入研究 API 安全世界,并使用必要的工具来保护您的 API 免受未经授权的访问和潜在威胁。
要点
- API 网关充当集中式看门人来管理和保护 API 流量,而 API 密钥则充当控制对这些 API 的访问的唯一标识符,从而防止未经授权的使用。
- 在 AWS API Gateway 中设置 API 是一个多步骤过程,涉及创建 API、定义其资源和方法,以及通过充当客户端调用 API 的快照的阶段进行部署。
- API 密钥身份验证对于保护 API 至关重要,应与“需要 API 密钥”选项一起使用,并与控制和监控访问的特定使用计划相关联。定期轮换 API 密钥并限制某些用户的访问可以增强安全性。
了解 API 网关和 API 密钥
API 网关充当您企业的虚拟看门人,处理传入的 API 调用,包括路由、身份验证和处理。这一关键工具可确保安全高效的 API 流量管理,证明了其对组织的重要性。
相反,API 密钥的作用相当于您的 API 方的 VIP 通行证。这些唯一标识符分配给与 API 交互的客户项目,保证授权个人的适当访问,从而避免误用或过度使用。 API 密钥增加了一层安全性,验证用户是否拥有解锁所连接服务的密钥。
什么是 AWS API 网关?
AWS API Gateway 就像 API 的瑞士军刀。它是一项允许用户创建、发布、维护和监控任何规模的 API 的服务。它支持各种类型的 API,包括 HTTP、WebSocket、REST、SOAP 和 GraphQL,使其具有多功能性和适应性。
AWS API Gateway 定位为客户端应用程序和后端服务之间的服务器,负责监督路由、身份验证和流量管理等任务。其可扩展性、高级安全功能以及向外部客户端公开后端服务的能力使其成为解决方案的高价值。
API 密钥的作用
API 密钥充当 API 的看门人,而 API 令牌则提供额外的安全层。它们对于使用 API 的每个客户端的唯一标识符角色对于保护访问而言是不可或缺的。将它们想象成私人俱乐部的钥匙,控制和监控进出人员,并确保俱乐部的规则得到遵守。
预防胜于治疗,这正是 API 密钥的目的。它们可以防止未经授权的访问,确保您的 API 安全并确保其按预期使用。
在 AWS API Gateway 中创建您的 API
在 AWS API Gateway 中建立 API 类似于建筑施工。该过程包括以下步骤:
- 选择位置,在本例中为 API Gateway 控制台。
- 选择“Create API”,相当于打基础。
- 选择您想要构建的建筑物类型,在本例中为“HTTP API”选项。
- 单击“构建”继续。
下一步是在设置过程中在“名称”字段中命名您的 API,就像命名建筑物一样。检查完 API 配置后,您可以通过单击“检查并创建”,然后单击“创建”来创建 API。就像这样,您的 API 就已构建完毕并可供使用。
定义您的 API 资源和方法
定义 API 资源和方法类似于设计建筑物的内部布局。在 API Gateway 中,资源以具有根资源 (/) 的树形结构进行组织,并且可以包含子资源,从而建立相对于 API 基本 URL 的层次结构。为了简化多个资源的创建,可以使用{proxy+}代理资源,代表其下的任意子资源路径。
定义 API 涉及使用 HTTP 方法创建路由,其中方法 ANY 可用于在运行时接受任何 HTTP 方法。这些路线就像建筑物中的走廊,将交通引导到正确的地方。为了实现所需的 API 方法,API 方法请求需要配置参数,例如路径变量、标头和查询字符串参数,以及用于验证和初始化目的的请求模型的定义。
每个 API 与每栋建筑一样,必须至少有一个功能路由和集成,指定一个后端服务来处理请求,例如 Lambda 函数或 HTTP 端点。
部署您的 API
部署 API 是您的建筑的盛大开幕。它需要 AWS API Gateway 中的一个阶段,该阶段充当 API 的快照以供客户端调用。在 API 创建过程中,会创建一个默认阶段,该阶段会自动配置为部署更改,就像建筑物的软开放以测试操作一样。
要手动部署 API,您需要选择一个阶段,检查其设置,然后部署 API 以使其可通过阶段的调用 URL 进行访问,就像盛大的开幕式一样。阶段可以调整各种设置,包括启用缓存、日志记录和自定义 API 请求的限制设置,以确保构建顺利运行。
实施API密钥认证
API密钥认证就像建筑物入口处的安全检查。它是 AWS API Gateway 支持的用于控制和管理 API 访问的多种机制之一。 API 密钥一旦创建,其值就无法更改,从而确保每个密钥在其整个生命周期中保持不变,就像永久访问通行证一样。
尽管如此,请记住,两个访问通行证尽管具有不同的名称,但如果它们共享相同的值,则被视为相同。此原则适用于 API 密钥,其中名称不同但值相同的密钥被 API Gateway 视为相同。 API 密钥可以从标头获取,通常使用 X-API-Key 标头,或者由 AWS API Gateway 中的 Lambda 授权者进行验证,就像保安人员在入口处检查通行证一样。
启用“需要 API 密钥”选项
激活“需要 API 密钥”选项就像在建筑物入口处建立安全检查站一样。要为方法强制使用 API 密钥,您只需导航到 API Gateway 控制台,选择您的 REST API,然后在资源下选择所需的方法。这就像为特定入口设置安全检查站一样。
在方法请求设置中,您可以:
- 编辑方法请求
- 选择“需要 API 密钥”以强制该方法使用 API 密钥,例如设置一个标有“需要访问通行证”的标志
- 如果未启用“需要 API 密钥”选项,则任何关联的 API 密钥都不会用于该方法
- 将方法配置为需要 API 密钥后,请确保选择“需要 API 密钥”选项并保存设置以使要求生效,就像打开安全系统一样。
配置源自标头的 API 密钥
设置源自标头的 API 密钥与建立需要在入口处提供访问通行证的系统的过程类似。要使用标头来源的 API 密钥,必须在 API 网关设置中将 API 密钥源设置为“HEADER”。当使用标头来源的密钥时,客户端需要将 API 密钥作为“X-API-Key”包含在 HTTP 请求标头中,例如向保安人员显示其访问通行证。
可以使用 AWS CLI 命令 update-rest-api 和 –patch-operations 指定 op=replace,path=/apiKeySource,value=HEADER 将 API 密钥源设置为“HEADER”。同样,要通过 API Gateway 的 REST API 设置 API 密钥源,您可以向 /restapis/{restapi_id}/ 发出 PATCH 请求,其中包含 patchOperations JSON 负载,其中包含适当的操作、路径和值键,例如设置新的安全性协议。
管理 API 密钥和使用计划
监督 API 密钥和使用计划类似于控制建筑物的访问通行证和运营时间。 API 密钥在 REST API 方法中用于控制访问,并且可以与使用计划一起使用来实现跟踪和限制。它们可以直接在 AWS API Gateway 中生成,也可以从外部源(例如 CSV 文件)导入,就像现场颁发或以数字方式发送访问通行证一样。
将使用计划视为建筑物的运营时间。 API 密钥必须与使用计划相关联,以规范传递给用户或客户端的功能,例如指定访问通行证持有者何时可以进入建筑物。
创建新的使用计划
创建新的使用计划就像为您的建筑物设置新的运营时间一样。使用计划与 API 密钥相结合,使服务提供商能够定义访问级别并监控其 API 的使用情况。使用计划指定每秒的请求率、突发容量以及设定时间段(天、周或月)的总体配额,例如指定每天、每周或每月允许的访问者数量。
可以在使用计划中的 API 和方法级别设置不同的限制和配额,例如为不同入口设置不同的访客限制。 AWS 对每秒请求数实施默认配额,并采用令牌桶算法来确定突发容量,确保建筑物不会过度拥挤。然而,这些限制并不是硬性规定的,偶尔会超出限制,就像有时在特殊活动期间允许更多游客一样。
将 API 密钥与使用计划关联
将 API 密钥与使用计划关联起来就像将访问通行证与营业时间关联起来一样。 API密钥可以与多个使用计划关联;但是,每个 API 密钥只能与每个 API 阶段的一个使用计划相关联,就像在特定入口的特定时间内有效的访问通行证一样。
要将现有 API 密钥与使用计划链接,您可以访问 AWS API Gateway 中的“关联 API 密钥”选项卡,并利用“添加现有密钥”选项来选择和关联所需密钥,例如向数据库添加访问通行证。对于需要新 API 密钥的情况,该过程包括通过使用计划中的“创建并添加新密钥”选项创建新 API 密钥,并同时完成关联,例如颁发新的访问通行证并将其添加到数据库同时。
API 密钥与使用计划关联后,更改可能需要几分钟才能传播,之后 API 密钥可用于根据计划的限制进行 API 调用,就像访问通行证需要一段时间才能获取一样活性。
测试您的安全 API
测试安全 API 可以与在建筑物中进行安全演习进行比较。为此,请使用 Postman 或 cURL 等工具,因为它们可以在请求标头中包含 API 密钥,类似于验证访问通行证的功能。您可以通过向其调用 URL 发送请求(包括必要的 API 密钥)来测试 API,就像运行模拟练习一样。
要使用 Curl 测试 API,您可以按照以下步骤操作:
- 使用提供的调用 URL。
- 在请求标头中传递 API 密钥。
- 检查门禁扫描仪是否正常工作。
- 无论是使用浏览器还是 Curl,通过输入调用 URL 来测试 API 的方法都是相似的。
- 您还可以在不同入口处检查通行证,以确保其正常工作。
使用 API 密钥进行 API 调用
使用 API 密钥进行 API 调用就像使用访问通行证进入建筑物一样。配置用于标头来源的 API 密钥值后,客户端可以通过在请求的 X-API-Key 标头中提供 API 密钥来调用 API 方法,就像在入口处显示访问通行证一样。这种简单而有效的方法确保只有那些拥有正确凭证(类似于正确的访问通行证)的人才能进入 API 并与 API 交互,从而维护系统的完整性和安全性。
使用Postman等测试工具时,API密钥通过输入添加到请求标头中,例如将访问通行证号码输入到扫描仪中。此过程简单且用户友好,可以快速轻松地进行身份验证。该密钥必须包含在每个请求中,作为一致的检查点,在与 API 资源进行任何交互之前验证请求者的身份和访问权限。它是工作流程的无缝部分,虽然简单,但在 API 的整体安全性和功能中发挥着关键作用。
处理错误和访问冲突
在测试期间处理错误和访问违规就像在演习期间处理安全漏洞一样。对缺少所需 API 密钥的 AWS API Gateway 终端节点的请求会导致 403 禁止错误,就像未显示访问通行证时发出警报一样。
由于 API 密钥违规而导致 AWS API Gateway 响应正文中的错误消息阐明了错误原因,就像保安解释警报响起的原因一样。这有助于及时识别并纠正问题。
API 密钥管理最佳实践
API 密钥的有效管理反映了建筑物安全系统的维护。可以使用 AWS CloudWatch 和 AWS CloudTrail 安全监控 API 密钥,以帮助确保安全访问 API,例如使用闭路电视摄像头和访问日志来维护建筑安全。
AWS Security Hub 可用于监控 API 网关和 API 密钥的使用是否符合安全最佳实践,例如安全审核以确保遵循所有安全协议。建立定期轮换 API 密钥的策略非常重要,建议每 30 天、60 天或 90 天轮换一次,以满足各种合规性法规,就像定期更改安全代码一样。
应删除未使用或不需要的 API 密钥,以最大限度地降低恶意行为者利用的风险,例如禁用丢失或被盗的访问通行证。与第三方合作伙伴的合作对于确保他们创建或管理的任何 API 密钥得到适当的保护至关重要,例如与安全公司合作以确保有效的安全管理。
定期轮换 API 密钥
API 密钥的定期轮换相当于建筑物安全代码的定期更改。它降低了盗窃或泄露的风险,确保只有授权用户或应用程序才能访问您的数据,例如更改访问代码以防止未经授权的访问。
API 密钥轮换涉及:
- 将现有的 API 密钥替换为具有相同目的的新密钥,例如更改访问代码但保持相同的访问级别。
- 选择正确的 API 密钥轮换频率至关重要,并且应考虑风险环境。
- 应清楚地传达给用户和应用程序维护人员,例如根据安全风险级别决定更改访问代码的频率。
限制特定用户或客户端的访问
限制特定用户或客户端的访问类似于仅允许建筑物中选定的一组人员进入。 API 密钥本身并不能提供可靠的方法来限制对 AWS 内特定用户或客户端的访问。如果用户拥有使用计划中某个 API 的有效 API 密钥,则他们可以访问该计划中包含的所有 API,这会影响精细控制,就像允许进入建筑物所有区域的全通行证一样。
因此,建议使用 IAM 角色、Lambda 授权者或 Amazon Cognito 用户池(而不仅仅是 API 密钥)来控制哪些用户或客户端可以访问您的 API,例如使用生物识别访问控制或个人识别码 (PIN) 来更好地控制哪些用户或客户端可以访问您的 API访问控制。
总结
总之,使用 AWS API Gateway 和 API 密钥保护您的 API 就像为您的建筑拥有强大的安全系统一样。从了解 API 网关和 API 密钥的作用,到创建 API、定义资源和方法、部署 API 以及实施 API 密钥身份验证,我们像安全专家一样引导整个过程。我们还深入研究了管理 API 密钥和使用计划、测试安全 API 以及 API 密钥管理的最佳实践。有了这些知识,您现在可以自信地保护您的 API 并确保其高效、安全的运行。
原文链接:https://www.moesif.com/blog/technical/api-development/API-Keys-in-AWS-Gateway/