软件开发中的密码与密钥管理( 二 )


使用 RBAC(基于角色的访问控制) 
每个项目和组织都有敏感数据和资源,必须只能由受信任的用户和应用程序访问 。系统中的任何新用户都必须分配默认权限(即最小访问控制) 。提升的权限必须仅对项目或组织中的少数成员可用 。
管理员(或超级管理员)必须有权根据需要添加或撤销其他成员的权限 。权限升级也必须根据需要进行,并且只能在有限的时间内进行 。在授予/撤销权限时必须添加适当的注释,以便所有相关的项目涉众都具有完整的可见性 。
 
使用安全保险库 
简单来说,保险库是一种主要用于保护任何敏感信息(例如,密码、API 密钥、证书等)的工具 。以人类可读的形式在本地存储机密信息是管理机密信息最糟糕的方法之一 。
这就是安全保险库非常有用的地方,因为它们为任何秘密提供了统一的接口,并提供了详细的审计日志 。通过指定访问权限(授权),安全保险库还可用于检测基于角色的访问控制 (RBAC) 。Hashicorp Vault Helm chart和Vault for Docker是两个流行的保险库管理器,可用于运行保险库服务、访问和存储机密等 。
由于大多数应用程序都利用了云的潜力,因此在数据传输或静止时关注数据安全性非常重要 。这就是 EaaS(加密即服务)可用于在静态存储数据之前将应用程序的加密需求卸载到保管库的地方 。
 
定期轮换密钥 
几周或几个月后重置密钥是一种很好的安全做法 。一种做法是手动重新生成密钥,因为使用这些秘密的应用程序可能会在日志文件或集中式日志记录系统中留下痕迹 。攻击者可以获得对日志的后门访问并使用它来泄露秘密 。
此外,同事可能会无意中向组织外部泄露机密 。为避免此类情况,建议在相应的机密管理工具中启用机密轮换 。例如,AWS Secrets Manager 中的 Secrets Manager 轮换使用 AWS Lambda 函数来更新密钥和数据库 。
最重要的是,团队应该有适当的实践来检测对系统的未授权访问 。这将有助于在对业务造成重大损害之前采取适当的措施 。
 
为什么要在 DevSecOps 管道中实施机密管理? 
只有在 CI/CD 管道中对代码进行自动化测试,才能实现加速发布周期和更快的开发人员反馈 。在 CI 管道中运行的测试可能需要访问关键的受保护资源,如数据库、HTTP 服务器等 。
甚至在 Docker 容器内运行单元测试也是一种常见做法,但开发人员和 QA 需要确保秘密不存储在 Dockerfile 中 。秘密管理工具可以与流行的 CI/CD 工具(例如 Jenkins)结合使用,从而在集中位置管理密钥和其他秘密 。秘密也通过加密和令牌化存储 。

【软件开发中的密码与密钥管理】


推荐阅读