停止暴露密钥!像专业人士一样在Postman中保护你的API
API安全至关重要,它直接影响你业务的成功与安全。保护API的好坏可能决定产品的成败,花时间思考安全问题极为重要。
我见过开发人员在Postman中工作却没有妥善保护他们的凭证,经常在共享环境中暴露API密钥,或在控制台中记录敏感数据。例如,一些开发人员在公开工作区时无意中暴露了凭证,让任何人都能访问未妥善存储的敏感API密钥和令牌。
在这篇文章中,我想分享一些关于如何在Postman中保护你的数据和API的技巧。
在Postman中保护API的通用技巧
在Postman中使用API时,采取主动安全措施对于防止数据泄露和未经授权的访问至关重要。实施最佳实践可确保你的凭证、令牌和敏感数据保持受保护状态。
1) 密钥扫描器是你的朋友
Postman密钥扫描器是每位开发人员的骑士。它持续扫描你的公共工作区和文档,查找任何暴露的密钥。它会检查你的变量和环境、模式等中的暴露密钥,并通过电子邮件和应用内通知通知所有团队和工作区管理员。
管理员会收到一个链接,可在仪表板中查看所有暴露的密钥,并有一个选项可以通过单击按钮立即用占位符替换它们。这有助于更快地降低安全风险。
如果你未在电子邮件指定的时间范围内替换暴露的密钥,密钥扫描器将自动为你用占位符替换这些数据。例如,授权密钥可以被替换为{{vault:authorization-secret}}或<AUTHORIZATION_SECRET>。
专业提示1:当你想展示某些敏感数据的示例时,在使工作区公开之前,始终使用占位符数据。维护一个集合的私有分支,即使在你使基础集合公开后,你仍可以继续在其中工作。
在Postman中,你还可以使用密钥扫描器做更多事情。你可以将警报标记为“误报”、“不修复”等。
专业提示2:永远不要忽略密钥扫描器。虽然可能存在误报,但始终要检查以确保你没有暴露任何内容并保持安全。
2) 避免在测试脚本、头部、参数等中使用密钥
在处理测试脚本时,根据你的工作流程,一些开发人员通常更喜欢从预请求脚本发出HTTP调用。某些HTTP调用需要身份验证凭证,如果你将数据记录到控制台、将数据传递给模板进行可视化等,这些身份验证凭证很容易暴露。
如果你需要在pm脚本中使用敏感数据,请始终首先将它们存储在保险库、环境或集合变量中,然后以编程方式从存储中访问数据。
在某些情况下,Postman会主动检查脚本中的任何敏感数据,并在登录前将其截断以避免暴露。
在添加请求头、查询/路径参数等时,你也应非常小心。这些是我们观察到大量密钥暴露的地方。我们的变量助手使你可以轻松地将数据存储在保险库或集合/环境变量中的位置。只需高亮显示值,你将看到一个弹出窗口,帮助你更安全地存储数据。
以下是使工作区公开时需要注意的地方列表:
- 请求头
- 集合/环境/全局变量
- 查询和路径参数
- 授权助手(API密钥、基本认证、OAuth等)
- 预请求和后响应脚本
- 请求体
- URL栏
- Postman控制台
3) 使用Postman保险库将凭证保存在本地
一些用户担心将他们的凭证存储在Postman环境和变量中,因为这可能会根据存储方式与Postman云同步。虽然Postman云是安全可靠的,但我们始终鼓励每个人将他们的API密钥存储在Postman保险库中。
Postman保险库是一个本地加密存储,只有你可以访问。存储在Postman保险库中的数据不会与Postman云同步,并且只能使用保险库密钥访问。你的保险库密钥可以存储在系统的密码管理器或其他安全的地方。
你可以将保险库密钥限制为特定的API域,并如果你打算与团队共享凭证,可以将它们链接到外部密码管理器,如Hashicorp、Azure Vault、1Password等。保险库凭证可以在Postman脚本中以编程方式访问,类似于访问环境和集合变量的方式。
专业提示:在Postman中使用授权助手时,始终使用Postman保险库。
4) 使用引导式认证帮助你的API消费者保持安全
引导式认证帮助你更快、更高效地将消费者引导到你的公共API。当你在Postman中为你的公共API设置引导式认证时,你的API消费者一旦在URL栏中开始输入你的域名,就会获得关于如何成功进行首次API调用的分步指南。
根据你的引导式认证配置方式,他们可以轻松设置不同类型的身份验证(OAuth 2.0、客户端凭证、PKCE等)。
一旦你设置了引导式认证,你可以通过在引导式认证步骤后选择将他们的凭证存储在Postman保险库中来帮助你的API消费者保持安全。使用引导式认证添加的保险库密钥位于双花括号({{ }})内。前缀vault:附加到保险库密钥的名称,并且后缀会自动附加身份验证类型。
{{vault:postman-api-key:value}}
5) 当前值 vs 初始值
在Postman中使用变量时,了解初始值和当前值之间的区别非常重要。
初始值会同步到Postman云。如果你共享你的集合,你的变量将对你的团队和有权访问该工作区的任何人可见。
当前值仅存储在本地机器上,不会与他人共享。这使得它们非常适合存储敏感的API密钥、令牌或凭证。
专业提示:始终确保敏感数据存储为当前值,以防止意外暴露。使用初始值来展示变量值可能是什么样子的示例。
6) 授权助手旨在提供帮助
Postman提供授权助手,让你可以安全地处理身份验证,而无需在请求头中手动添加令牌或凭证。
不要手动复制访问令牌,而是使用OAuth 2.0助手自动获取和刷新令牌。
在使用API密钥时,在授权选项卡中配置它们,而不是直接将它们添加到请求URL中。
7) 停止忽略警告!
当Postman怀疑可能有问题时,它会在不同地方提供多个警告,做得非常好。此警告可以是UI弹出窗口、推送通知、电子邮件或UI上的状态指示器,具体取决于你尝试执行的操作。始终确保你注意这些警告,永远不要忽略它们。
仔细检查以确保你没有暴露任何敏感信息总是有益的。
请记住,你的数据只有在你自己使其公开时才会公开。
专业提示:创建新工作区时,始终从私有或团队工作区开始。完成更改后,检查你的工作,然后将其公开。在将工作区可见性更改为“公开”之前,确保你始终彻底检查。
8) 实施最小权限原则(POLP)
Postman中的工作区和团队集成了基于角色的访问控制(RBAC)。我们鼓励在Postman中协作的团队始终仅向需要的人授予访问权限和某些特权。在Postman团队中,只有具有超级管理员和社区经理角色的个人才被允许管理所有公共元素。因此,我们鼓励你仅将这些角色分配给必要的人员,并在工作区发布到公共时建立标准的审查流程。
最后思考
保护你的API至关重要,Postman提供了各种工具来帮助你保护你的密钥。通过利用Postman保险库、密钥扫描器、引导式认证和授权助手等功能,你可以显著降低暴露敏感数据的风险。
确保你实施这些最佳实践,并定期审核你的Postman工作区,以确保你的API安全保持强大。
有问题吗?觉得这些内容有帮助吗?在评论中告诉我!
编码愉快,保持安全!
干杯!
最初于2025年3月4日发表在Postman社区