防止在代码中暴露凭据
学习目标
完成本单元后,您将能够:
- 确定为何对您的组织而言机密暴露可能是个问题。
- 介绍如何防止机密意外暴露。
凭据暴露
最常见的数据安全漏洞之一是存储在您开发的代码中的敏感数据。因此,您需要学习如何保护此类数据(包括凭据、加密密钥等),如果敏感数据落入坏人之手,可能会让攻击者有机可乘,使组织的敏感数据陷入危险之中。
如果您是开发人员,您负责可访问技术堆栈(如云、应用程序和其他工具)的代码和脚本。所有这些实例通常都需要凭据,所以保护凭据防止暴露至关重要。
很多从事周期性开发的开发小组往往设定紧促的目标日期,并且经常面临快速工作的压力。开发人员可能会用 GitHub 或其他开源代码存储库作为相互合作的方式并完成项目。
代码存储库会产生凭据暴露的风险,因为有时候开发人员很忙,会将代码凭据硬编码到代码中作为快捷方式。随后,一旦代码公之于众,组织的凭据便暴露在公共域中。提交并推送代码后,就无法轻松删除代码了。即使版本控制系统允许您删除提交的易被利用的代码,但在删除之前,其他开发人员或服务可能已经提取了这些代码的副本。
这意味着任何知道如何使用版本控制或复制了代码的人都可以提取这些凭据,甚至是过去的凭据,从而获得访问权限。如果不应用安全代码惯例和实践,开发人员可能会意外将凭据泄露给未经授权的个人,使其可以访问核心系统。
这是开发人员急于向客户交付新功能时最容易且常犯的错误。这意味着您必须更加警惕,确保永远不要将凭据编入代码。
已泄露凭据
GitHub、Bitbucket 和 SourceForge 等软件跟踪服务多年来一直致力于减少凭据泄露问题。如果用户将访问令牌推送到公共存储库,其中一些服务甚至会警告用户,并撤销令牌,这样这些令牌就无法执行任何未经授权的操作。尽管如此,存储库错误地包含应用程序编程界面 (API) 令牌和密钥的情况仍然很常见。
您的组织可能知道这个问题。您的安全团队应定期检查用户 ID、API 密钥、访问令牌、数据库文件和其他在公共存储库或云实例的代码中意外暴露的密钥。
如何防止凭据暴露
正如将安全开发生命周期集成到您的开发过程中是最佳实践一样,将凭据管理安全机制纳入编码流程的每一步也是最佳实践。记住这两个要点以确保您的代码安全,免遭凭据暴露。
- 仅将机密存储在组织批准的机密管理服务中。
- 切勿将机密包含在代码中。
在 Implement Secrets Management at Your Organization(在您的组织中实施机密管理)学习路径的以下模块(包括 Public Key Infrastructure and Encryption(公钥基础设施和加密)和 Key Management(密钥管理))中,我们介绍最佳实践,帮助您管理密钥,从而保护机密,并且介绍了如何在传输和静态时保护这些机密。
总结
在此模块中,您了解了创建和保护强密码的方法以及密码管理器的优势。您还了解了如何在执行特权访问管理时实施最小特权原则,以及随着时间的推移监控用户和帐户的重要性。
除了您在组织机密模块中了解到的信息外,您现在应该更好地理解了如何保护组织的机密,包括访问凭据。在下一个模块 Public Key Infrastructure and Encryption(公钥基础设施和加密)中,我们介绍在传输和静态时保护数据的方法。您可以通过访问 Trailhead 中的 Cybersecurity Learning Hub(网络安全学习中心)了解更多网络安全最佳实践并听取真正的安全从业者的意见。