代码之家  ›  专栏  ›  技术社区  ›  Domchi

如何避免在版本控制中存储密码?

  •  18
  • Domchi  · 技术社区  · 16 年前

    目前,我将开发/测试/生产密码保存在三个不同的文件中,并在部署期间使用相应的文件。所有这些都致力于版本控制,但我对此不太满意,因为并非所有开发人员都需要知道这些密码(特别是外包的密码,它们只能在项目结束时访问,可能只有一个月)。

    在数据库中存储密码不是一个很好的选择:

    • 某些密码仅与部署相关;访问不同服务器、密钥库等的密码。;这些是应用程序启动后无法加载的内容,因为它根本不加载

    我还需要说,我不想要终极安全性:我只是想避免在每个开发人员的磁盘上都有密码,让它变得太容易。

    因此,我想了解您的经验/最佳做法。你是怎么做到的?

    6 回复  |  直到 16 年前
        1
  •  10
  •   cletus    16 年前

    我倾向于将特定于环境的配置属性放在一个属性文件中,该文件不在源代码管理中,也不属于构建过程的一部分。在设置新环境时,该设置的一部分是创建属性文件,其中包括数据库地址、凭据和名称、相关远程主机的名称等。

    在春天,你使用 PropertyPlaceholderConfigurer

    或者,您可以使用 wrapper

        2
  •  7
  •   russau    16 年前

        3
  •  3
  •   Dave Markle    16 年前

    这并非在所有情况下都有效,但这正是使用NT AUTHORITY\NETWORK SERVICE作为服务标识的好处所在。如果您使用此标识,则不需要为其维护密码——您只需使用计算机的AD凭据(格式为DOMAINNAME\MACHINENAME$)即可访问受保护的网络和数据库。

    当然,有一些关键的事情需要注意——其中最重要的一点是,没有两个共享安全边界的应用程序像这样托管在同一台服务器上。

        4
  •  0
  •   Neil McGuigan    12 年前

    将密码放入o/s用户环境变量中。

    只有该用户或root用户才能读取与文件相同的值,但将其签入源代码管理的可能性为零。

        5
  •  0
  •   Community Mohan Dere    8 年前
        6
  •  0
  •   codewandler    10 年前

    您可以以加密的形式存储它们,而不是不存储它们。因此,你不必在新开发人员启动时一直通过IM或电子邮件发送凭据文件。。。您只需要告诉他们一次特定于项目的主密码,这样他们就可以加密凭据。