作为负责任的pipe理员,我们知道这些常见的弱点
但是,我们如何在实践中处理这个问题呢?
当然,通过SSH等密码authentication技术和sudo等工具,可以摆脱重要位置存储的login凭证,这在Linux服务器的自动部署过程中确实有帮助。
但是,一旦离开操作系统并安装应用程序,就很有可能遇到安全存储密码的问题。
例如,如果安装数据库服务器,则很可能需要将明文密码保存到Web应用程序的configuration文件中。
然后,您应该保护configuration文件,以便只有pipe理员才能查看凭据,并且应该限制数据库用户的访问权限,以限制可能的安全影响。
但是,如何处理主要的pipe理数据库帐户? 至less你的dbas应该知道它(所以你需要明文的地方),作为操作系统pipe理员,你不应该知道凭据。 或者部署由devops完成,他们不应该知道生产服务器上的任何凭据。
可能的解决scheme
经过长时间的思考,我提出了三种可能的解决scheme,但都有自己的弱点:
在部署期间生成随机凭据,并以一次写入的方式将其存储在数据库中。 而dbas有另一个用户可能只读取数据库凭证。 但是,如何处理例如webapps的configuration文件中的明文密码? 根用户可以阅读它们。 此外,密码数据库的根用户可能会读取所有密码凭据。
在部署过程中接受明文密码和默认凭证,并添加一个可更改任何和所有密码的附言。 甚至在授权人员必须在脚本的运行时input凭证的情况下也可以进行交互。
用可信赖的第三方的密钥不对称地encryption密码。 当密码被请求时, 必须在之后改变。
你怎么看? 你看到这里有什么最佳实践吗?
您可以将电子邮件replace为任何协议。 您可以在某处input密码,使用onetimesecret api创build一次性消息,使用https将其上传到私人的要点,或者您可以想到的任何其他信息。
我认为这是涵盖它。