gpt4 book ai didi

c# - 使用 web.config 转换保护连接字符串的建议方法

转载 作者:行者123 更新时间:2023-12-02 05:28:30 25 4
gpt4 key购买 nike

我们的内部安全要求我们的开发人员不知道我们生产数据库的用户名和密码。

我们正在努力转向使用 web.config 转换,以减少部署期间因手动编辑 web.config 文件而发生的人为错误的数量。理想情况下,我们希望 web.configs 完全自动化,无需人工干预。

据我了解,这需要开发人员(他们是我们组织中唯一知道如何创建和修改 web.config 转换的人员)了解生产环境的连接字符串信息。

有没有一种方法可以让开发人员不知道生产连接字符串,而让他们单独负责维护 web.config 转换?

最佳答案

这是我想出的解决方案,我正在向我的团队提议。

问题:我们希望实现一个新标准,要求使用 web.config 转换来消除环境之间部署期间发生的人为配置错误。这要求负责创建 web.config 转换文件的人员了解每个环境的所有配置值,包括连接到其他环境的连接字符串的用户名和密码。基础架构团队有一项政策,除了他们之外,没有人可以知 Prop 有写访问权限的数据库用户的用户名和密码。因此,我们有冲突。

建议的解决方案:web.config 中的任何配置部分都可以指向包含该部分配置的外部文件,而不是在 web.config 文件本身中明确定义它。
例如,不要将连接字符串部分定义为:

<connectionStrings>
<add name="conn_ExceptionManagement" connectionString="Data source=mydb;database=App_Error_Logging;uid=user;pwd=password" providerName="System.Data.SqlClient" />
</connectionStrings>

我们可以这样定义它:

<connectionStrings configSource="myApp.ConnectionStrings.config"/>

然后创建一个名为“myApp.ConnectionStrings.config”的文件,内容如下:

<?xml version="1.0"?>
<connectionStrings>
<add name="conn_ExceptionManagement" connectionString="Data source=mydb;database=App_Error_Logging;uid=user;pwd=password" providerName="System.Data.SqlClient" />
</connectionStrings>

所以……我们可以在 Web 服务器的根目录中创建一个名为“CONFIG”的文件夹,并在其中为每个应用程序放置一个名为“myAppName.ConnectionStrings.config”的文件。在该文件中,我们将用于该应用程序的所有连接字符串放入该环境中。然后,在我们的 web.config 转换中,我们没有显式更新连接字符串,而是更改连接字符串配置部分以指向 Web 服务器上的该文件。这样,基础架构团队是唯一真正看到这些环境的连接字符串的人,我们消除了他们在部署期间修改 web.config 中的连接字符串的需要。此外,他们很少需要更新引用的文件(仅在更改密码或添加/删除连接字符串时),这也减少了部署期间发生的人为配置错误。

关于c# - 使用 web.config 转换保护连接字符串的建议方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12735259/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com