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

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

我最终试图找到一种方法来允许在 SQL Server 中安全使用 BCP 并选择其他命令行功能。

我所在的组织目前已禁用 xp_cmdshell,但我觉得如果我可以提出一个安全的安全模型供其使用,他们会考虑启用它。

到目前为止,我的想法是创建一个包装器存储过程,代表用户执行命令行操作。该操作将由用户作为字符串传入,然后可以

  1. 检查以确保它不包含任何明显不可靠的内容 - 我在这里找到了一个可以帮助解决这个问题的函数(http://msdn.microsoft.com/en-us/library/aa175398(v=sql.80).aspx
  2. 只允许调用特定的程序或操作 - 在我的例子中第一个是 BCP

我的 DBA 技能有限,但从安全角度来说,以下是我希望实现的

  • 所有普通用户账户不允许执行 xp_cmdshell
  • 我们将创建一个用户(存储过程将以该用户的身份执行),该用户具有调用 xp_cmdshell 的权限,没有其他权限,换句话说,不是管理员
  • 用户现有的权限将用于从表中读取数据,但在使用包装器存储过程时将与此额外帐户的权限相结合。

如果你能告诉我我的做法是否正确,以及我需要考虑的其他事情,因为这是我想向 DBA 介绍的内容

谢谢

山姆

答案1

让用户访问 BCP 等命令行工具的一种更安全且可能更简单的方法是使用类似系统前沿

命令将在具有适当访问权限的帐户下针对您的 SQL 服务器运行,而运行该命令的用户无需具有任何服务器访问权限或 SQL 登录。也无需担心使用 xp_cmdshell 带来的不快。此外,所有信息(例如运行该命令的人以及输出的内容)都会记录到审计表中。

全面披露:生产该产品的公司是我拥有的。

杰伊

相关内容