linux – 如何在自动部署期间处理密码?

前端之家收集整理的这篇文章主要介绍了linux – 如何在自动部署期间处理密码?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
作为负责任的管理员,我们知道常见的弱点

> CWE-260:配置文件http://cwe.mitre.org/data/definitions/260.html中的密码
> CWE-522:证书不足http://cwe.mitre.org/data/definitions/522.html
> CWE-257:以可恢复格式存储密码http://cwe.mitre.org/data/definitions/557.html

但是我们如何在实践中处理这个问题呢?

当然,通过SSH和sudo等工具进行无密码身份验证等技术,可以在重要的地方摆脱存储的登录凭据,这在Linux服务器的自动部署过程中确实很有用.

但是一旦您离开操作系统并安装应用程序,您就会面临安全存储密码的问题.

例如,如果安装数据库服务器,则很可能需要将明文密码保存到Web应用程序的配置文件中.

然后,您应该保护配置文件,以便只有管理员才能查看凭据,您应该限制数据库用户的访问权限,以限制可能的安全影响.

但是如何处理例如主要的管理数据库帐户?至少你的dbas应该知道它(所以你需要明文的某个地方)而作为操作系统管理员,你不应该知道凭证.或者部署由devops完成,他们不应该知道生产服务器上的任何凭据.

可能的解决方

经过一段时间的思考,我提出了三种可能的解决方案,但他们有自己的弱点:

>在部署期间生成随机凭据,并以一次写入方式将其存储在数据库中.例如,dbas有另一个用户可能只读取数据库凭据.但是如何处理例如配置文件中的明文密码. web应用? root用户可以读取它们.密码数据库的root用户也可能读取所有密码凭据.
>在部署期间接受明文密码和默认凭据,并添加更改任何和所有密码的postscript.甚至可能是交互式的,授权人员必须在脚本运行期间输入凭据.
>使用受信任的第三方的密钥非对称地加密密码.当请求密码时,必须在之后更改密码.

你怎么看?你看到这里有什么最好的做法吗?

解决方法

>您应该拥有一个包含所有凭据的安全加密数据库
>在部署期间,凭借防火墙,服务器应该完全无法从外部访问
>让脚本生成随机传递并通过电子邮件发送给您,这很好
>在您允许访问公众之前,在配置服务器之后更改密码也没关系
>通过电子邮件发送自己的密码是可以的,只要它使用您的内部邮件服务器并且不通过SMTP通过公共路由(SMTPS是另一个故事)

您可以将电子邮件替换为任何协议.你可以在某个地方输入密码,使用onetimesecret api创建一次性消息,使用https将其上传到私人要点,或者你能想到的任何其他内容.

我认为这涵盖了它.

猜你在找的Linux相关文章