在 SSIS 脚本任务中使用 C# 时的安全问题

问题描述

我在 SSIS 脚本任务中使用 C# 读取 sql 服务器数据库,然后通过 HTTP 请求将 JSON 发送到 WEB API。所以C#应该打开数据库。我在 C# 中使用以下连接字符串

sqlConnection cn = new sqlConnection("server=xxxx;Initial Catalog=xxxx;User ID=abc;Password=abc");

用户名密码在 C# 中硬编码。当我把整个SSIS项目交给他上线时,数据库用户名密码可能会被admin更改。我想知道保存此类敏感信息的最佳做法是什么。要求是没有人(管理员除外)应该知道生产中的用户名密码。

我知道在 SSIS 中,我们可以使用项目参数来保存一些值。但是如果我将密码保存为项目参数,可以看到 SSISDB 的人可以看到参数值。那么在C#代码中让admin进入Script Task更改用户名密码是否更好?

解决方法

首先,您可以使用混淆来保护您的代码和敏感信息。

第二,永远不要在最终产品中存储您的数据库密码/用户名!!! 您可以轻松创建一个可以访问数据库并从您的应用程序调用 API 的 API,而无需在产品中存储密码。

简单示例:https://medium.com/voobans-tech-stories/how-to-quickly-create-a-simple-rest-api-for-sql-server-database-7ddb595f751a

,

我的建议是查看 SSIS 中的 Package Configurations

SQL Server Integration Services 提供了可用于在运行时更新属性值的包配置。

此外,如上面的注释中所述,根据您的部署模型,您可以查看 Parameters

配置可用于包部署模型。

参数用于代替项目部署模型的配置。

这为在运行时更改值提供了灵活性。

enter image description here