如何configuration存储过程包装和安全设置以提供对命令行操作的安全访问?

我最终试图find一种方法来允许在SQL Server中安全使用BCP和select其他命令行function。

我目前所在的组织已经禁用了xp_cmdshell,尽pipe我觉得如果我可以提供一个安全的安全模型来使用它们,他们会考虑将其打开。

我到目前为止的想法是创build一个包装存储过程,代表用户执行命令行操作。 该操作将被用户以string的forms传入,

  1. 检查,以确保它不包含任何明显的狡猾的东西 – 我发现了一个函数应该帮助这个( http://msdn.microsoft.com/en-us/library/aa175398(v=sql.80).aspx )
  2. 只允许调用特定的程序或操作 – 在我的情况下,首先是BCP

我的数据库pipe理员技能有限,但这是我希望从安全上下文

  • 所有普通用户帐户都不允许执行xp_cmdshell
  • 我们将创build一个用户(他们将EXECUTE AS)与调用xp_cmdshell的权限,而不是别的,不是pipe理员
  • 用户现有权限将被用于从表中读取数据,但是与使用包装器存储过程时这个额外帐户的权限相结合。

如果你能告诉我,我是否在正确的路线上,还有其他的事情,我需要考虑,因为这是我想呈现给DBA的东西

谢谢

山姆

让用户访问像BCP这样的命令行工具的一种更安全,也更简单的方法是使用像System Frontier这样的工具。

这些命令将在一个具有正确访问权限的帐户下对你的SQL服务器运行,而运行它的用户不必在服务器或SQLlogin上有任何访问权限。 无需处理有关使用xp_cmdshell的皱眉。 另外,像谁运行它,输出是什么都会被logging到审计表。

充分披露:我拥有自己的公司。

松鸦