由于以下两个原因,秘密不应存在于源代码和版本控制中:
环境变量是一种常见的解决方案。但是,如果构建脚本也是版本化的,那么我们只是将秘密的位置从源代码更改为相应的hudson/jenkins/capistrano脚本。
将密码排除在源代码之外的最佳实践是什么?
发布于 2015-10-22 07:20:02
我可以想出几个可能有帮助的选择。
1)将配置文件保存在活动服务器上,并让构建过程将其复制到新的部署文件夹中。只要您限制对活动框的访问,您就可以避开所有有访问权限的人。
2)对密码进行加密,并将解密密钥保存在服务器上。任何无法访问该框的人都无法解密该文件。
3)使用RSA,给服务器一个私钥,并将公钥存储在应用数据库中。公钥加密密码文件,应用程序获取服务器私钥并将其用于解密。这样,任何人都可以拥有配置文件,访问DB的任何人都可以创建配置文件。只有访问服务器上的证书存储的人才能访问解密密钥。如果愿意,可以添加签名。
您可以在某个有限制访问权限的地方保存密钥/密码的副本,以防需要恢复它们。
发布于 2015-10-21 21:40:12
如果需要隐藏它们,只需将它们移动到单独的文件(配置文件或其他文件)中,即可添加到.gitignore或等效文件中。您可以提供第二个非隐藏的示例文件,该文件将显示用户如何输入自己的密码或密钥。
https://security.stackexchange.com/questions/103365
复制相似问题