这篇文章主要讨论了如何防止敏感数据进入日志,主要内容如下:
- 问题阐述:将敏感数据记录在日志中是个既烦人又困难的问题,影响范围从孤立的内部凭证到可能被攻击者利用造成严重危害的数据都有,即使有很多数据安全实践,日志仍可能绕过这些措施,且该问题在各大小公司都存在。
- 原因分析:常见原因包括直接记录敏感数据、将包含秘密的“厨房水槽”对象记录、配置更改导致新秘密进入日志、秘密嵌入到通用格式中、遥测相关数据进入日志、用户输入导致密码等敏感信息出现在错误位置等。
解决方法(“铅弹”):
- 数据架构:集中数据流向,减少数据流动,控制进入日志的数据结构。
- 数据转换:对数据进行转换,如最小化、编辑、令牌化、哈希、加密、掩码等,将数据转换为更安全的形式。
- 领域原语:用安全的领域原语代替普通字符串来表示秘密,在编译时和运行时提供安全保证,可防止直接记录秘密等问题。
- 只读对象:创建只读对象,第一次获取秘密后将其锁定,防止后续意外使用,与静态分析配合效果好。
- 日志格式化器:通过中间件或管道在应用层处理日志,扫描和删除敏感数据,如登录链接等。
- 单元测试:利用现有测试套件,在测试环境中提高敏感度,检测不安全的代码。
- 敏感数据扫描器:发现和删除日志中的敏感数据,可用于深度防御,但需考虑其效果、成本等。
- 日志预处理程序:在应用发出日志和最终存储之间处理日志,删除敏感数据或存储样本用于检测。
- 污点检查:通过静态分析检测数据流向,标记敏感数据的流动路径,对厨房水槽和嵌入秘密等问题有效。
- 人员因素:教育团队关于安全日志设计,让他们报告和解决问题,提供帮助他们成功的工具。
- 策略总结:包含奠定基础、理解数据流、在瓶颈处保护、应用深度防御、规划响应和恢复等步骤,通过一个假设系统示例展示了如何应用这些策略。
- 结论:即使采取了多种措施,仍可能出现新的敏感数据进入日志的情况,安全工作永无止境,但已有理解、工具和策略来应对。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。