处理想要使用 XP_CMDSHELL 到 BCP OUT 的开发人员的最佳实践

Rac*_*SQL 3 sql-server-2008 sql-server

这不是技术问题。我想知道在开发人员希望对所有事情都拥有 SA 的地方使用的最佳实践。

最近的事件是:

开发人员希望使用 BCP OUT 将数据快速导出到 txt 文件。

我应该怎么想?我应该说“为什么你需要这么快?”

我确信有很多替代方法可以将数据导出到 .TXT 文件。它们可能会更慢,但它可以完成工作。

我们在这里不使用 Windows 登录,只使用登录,所以我无法创建代理帐户(我正在阅读有关此的内容)。

注意:他们使用 Delphi 编写应用程序代码。

Eri*_*ing 7

这里有两件事在起作用

  1. 数据安全
  2. 服务器健康

对于 1,管理层必须同意任何开发人员带着他们导出到文本文件的任何数据走出门。这可能是敏感的 PII,可能是受保护的 IP,或者只是竞争对手想要的客户列表。

对于 2,任何拥有 sysadmin 权限的开发人员都可以更改设置、关闭服务器、进行备份、运行 DBCC 命令以及其他一大堆东西。如果管理层要让他们这样做,那么当系统管理员的开发人员搞砸了一些事情时,管理层和开发人员必须轮班待命以解决问题。

此外,xp_cmdshell 不只是写出文件,它还可以与文件系统、可执行文件以及几乎任何您梦寐以求的东西进行交互。您可以使用它将网络驱动器映射到 DropBox 文件夹,然后……嗯,您明白了。

BCP不一定需要 xp_cmdshell才能工作。也许是时候谈谈背后的过程了。

权限

bcp out 操作需要对源表具有 SELECT 权限。

bcp in 操作至少需要对目标表的 SELECT/INSERT 权限。此外,如果满足以下任一条件,则需要 ALTER TABLE 权限:

希望这可以帮助!