ASP.NET:保护 Github 中的配置文件
ASP.NET: Securing Config Files in Github
在 asp.net 中,我们可以在可以包含秘密值的应用程序设置中包含文件属性:
Web.config
<appSettings file="HiddenSettings.config">
</appSettings>
HiddenSettings.config
<?xml version="1.0"?>
<appSettings>
<add key="DbConnectionString" value="VALUE_IN_TEMPLATE_FILE" />
</appSettings>
中的git,我们可以简单的保留git中的HiddenSettings.config-ignore,这样敏感信息就不会被签入了。
这种方法的问题是每次开发人员获取代码的第一个副本时,he/she 都需要手动填充秘密数据。
自动执行此操作的最佳做法是什么(即在 local/target 部署环境中无需手动操作来填写机密信息)?
最近我自己也在思考这个问题。到目前为止,我能想到的最好方法是 link 到一个单独的配置文件,然后将该文件放到一个单独的私有存储库中。然后将该存储库作为子模块添加到实际项目中。例如:
git submodule add git@github.com:someUser/private-config.git
配置指向子模块的相对路径,类似:
<appSettings file="../../../../private-config/The.Real.Deal.config">
<add key="someKey" value="SAMPLE VALUE" />
</appSettings>
因此,当用户检出项目(初始化子模块)时,private-repo 中的配置将可用。否则,他们可以下载没有实际值的项目,并且只能访问示例值。
与其他方法相比,这对我来说看起来不错,但我也总是乐于接受建议。
在 asp.net 中,我们可以在可以包含秘密值的应用程序设置中包含文件属性:
Web.config
<appSettings file="HiddenSettings.config">
</appSettings>
HiddenSettings.config
<?xml version="1.0"?>
<appSettings>
<add key="DbConnectionString" value="VALUE_IN_TEMPLATE_FILE" />
</appSettings>
中的git,我们可以简单的保留git中的HiddenSettings.config-ignore,这样敏感信息就不会被签入了。
这种方法的问题是每次开发人员获取代码的第一个副本时,he/she 都需要手动填充秘密数据。
自动执行此操作的最佳做法是什么(即在 local/target 部署环境中无需手动操作来填写机密信息)?
最近我自己也在思考这个问题。到目前为止,我能想到的最好方法是 link 到一个单独的配置文件,然后将该文件放到一个单独的私有存储库中。然后将该存储库作为子模块添加到实际项目中。例如:
git submodule add git@github.com:someUser/private-config.git
配置指向子模块的相对路径,类似:
<appSettings file="../../../../private-config/The.Real.Deal.config">
<add key="someKey" value="SAMPLE VALUE" />
</appSettings>
因此,当用户检出项目(初始化子模块)时,private-repo 中的配置将可用。否则,他们可以下载没有实际值的项目,并且只能访问示例值。
与其他方法相比,这对我来说看起来不错,但我也总是乐于接受建议。