如何从 SQL Server 数据库导出所有与安全相关的信息

Mar*_*sky 14 security sql-server export

你们可能知道,SQL Server 没有提供开箱即用的解决方案来导出为数据库中的每个元素声明的所有安全相关语句(在数据库级别和对象级别)

我说的是提供这些信息的能力

  • 所有用户
  • 所有用户定义的角色
  • 数据库级别的所有权限(例如 GRANT CREATE FUNCTION)
  • 对象级别的所有权限(例如 GRANT SELECT ON OBJECT::xxx)

您可能会认为 SQL Server 必须有类似的东西,但 SQL Server 导出向导或因右键单击对象而生成的各种脚本都不会捕获此信息。

我在网上看到许多不同的“可能的解决方案”使用人们慷慨发布的非策划脚本,但由于我必须 100% 确定所有安全信息都被捕获,因此我不能完全依赖这些脚本。

我可以选择使用这些作为自己编写一些东西的起点,但我讨厌必须重新发明轮子来满足您认为很多人可能有的要求。

是否有人提供的工具(作为 SQL Server 产品的一部分或第三方工具)可以可靠地为您提供此信息?

或者至少,是否有大多数人会同意“将完成这项工作”的社区支持脚本?

谢谢!

Ant*_*rds 9

很抱歉你从昨天起就没有回复;这至少是您的起点。

你可以试着拉出你需要的碎片。与往常一样,阅读讨论主题(很遗憾,我找不到我认识的知名人士认可的脚本,所以要彻底测试!架构、对象、服务器和列级别的权限经常丢失)。

我实际上并没有使用任何这些,但它们是一组起点,没有特定的顺序。

列出所有数据库中的所有权限

使用 Powershell 和 T-SQL 进行自动权限审计:第 1 部分

所有数据库的权限脚本

脚本数据库级别权限 v2.1

用于编写用户权限脚本的存储过程

安全查询:数据库级

安全查询:服务器级


spa*_*dba 6

Idera SQL Permissions Extractor似乎是您正在寻找的产品。

它可以编写服务器和对象权限的脚本,而且是免费的。还有一个商业版,称为SQL Secure,具有更多功能。

可以在此处找到两个版本之间的功能比较。