核对清单:限制对数据的访问

此核对清单可帮助您检查您是如何限制对组织中数据的访问的。使用此核对清单可以定期审核用户是如何访问在 SQL Server 数据库引擎 中存储的信息的。

对 SQL Server 实例的访问

以下项与整个数据库引擎实例相关。

...

说明

布尔字段图标
您是否通过 Windows 组对大多数登录名授予访问权限?

提示 通过使用 Windows 组配置对数据库引擎的访问可使访问更易于管理和维护。有关登录名的详细信息,请参阅主体(数据库引擎)

布尔字段图标
您是否从数据库引擎删除了不必要或已废弃的登录名?

提示 这可能要求定期的手动检查。主要通过 Windows 组实现访问可以简化此任务。

布尔字段图标
您是否实施了最小权限原则?

提示 只应针对主体必须访问才能完成其工作的那些数据库对象向主体(登录名、用户和角色)授予权限。不要允许日常用户使用管理员帐户(例如 sa)进行连接。不要允许您的网页、自定义应用程序或 SSIS 包使用管理员帐户进行连接。

布尔字段图标
为了在不授予附加权限的情况下查看系统元数据,您是否在对象、架构、数据库或服务器级别有选择地授予 VIEW DEFINITION 权限?

提示 有关详细信息,请参阅 GRANT (Transact-SQL)

布尔字段图标
您是否用链接服务器替代远程服务器?

提示 有关详细信息,请参阅配置远程服务器链接服务器

布尔字段图标
如果需要针对链接服务器的传递身份验证,您是否约束了委托?

提示 有关详细信息,请参阅sp_addlinkedsrvlogin (Transact-SQL)

布尔字段图标
您是否禁用了对服务器进行的即席查询(除非需要)?

提示 有关详细信息,请参阅即席分布式查询选项

管理用户标识

以下项与针对各数据库的设置相关。

...

说明

布尔字段图标
是否在每个数据库中为匿名用户禁用了 guest 用户帐户(除非必需)?

提示 使用 SQL Server Management Studio 或 Transact-SQL 禁用帐户。

布尔字段图标
是否用户只能访问必需的数据库?

提示 这可能要求定期的手动检查。主要通过 SQL Server 角色实现访问可以简化此任务。有关详细信息,请参阅服务器级别角色

布尔字段图标
是否大多数用户都已通过 SQL Server 角色授予访问权限?

提示 通过使用服务器和数据库角色配置访问可使访问更易于维护。有关角色的详细信息,请参阅数据库级别的角色

布尔字段图标
SQL Server 代理是否使用凭据来执行要求特定权限的作业步骤,而非调整 SQL Server 代理服务帐户的权限?

提示 有关详细信息,请参阅凭据(数据库引擎)

布尔字段图标
如果某一 SQL Server 代理用户需要执行要求不同 Windows 凭据的作业,您是否向其分配了其权限也就刚好完成该任务的代理帐户?

提示 有关详细信息,请参阅如何创建代理 (SQL Server Management Studio)

布尔字段图标
您是否将对数据库对象的访问封装在模块(例如存储过程、功能、触发器或程序集)内?

提示: 通过限制对预定义模块的访问,恶意用户会更难运行任意代码。有关详细信息,请参阅了解存储过程

布尔字段图标
在模块中,您是否显式设置了执行上下文,而非使用默认上下文?

提示 有关详细信息,请参阅在模块中使用 EXECUTE AS

布尔字段图标
是否对模块进行了签名以免被篡改?

提示 有关详细信息,请参阅模块签名(数据库引擎)

布尔字段图标
您是否使用 USER WITHOUT LOGIN 而不是应用程序角色?

提示 有关详细信息,请参阅 SQL Server 2005 Security Best Practices - Operational and Administrative Tasks(SQL Server 2005 安全最佳做法 - 操作和管理任务)。

布尔字段图标
您是否使用 EXECUTE AS 而不是 SETUSER?

提示 有关详细信息,请参阅 EXECUTE AS 与 SETUSER

布尔字段图标
您是否使用 EXECUTE AS 替换应用程序角色?

提示 应尽可能使用 EXECUTE AS … WITH NO REVERT。在嵌套标识更改时使用 EXECUTE AS … WITH COOKIE 选项。有关详细信息,请参阅 EXECUTE AS (Transact-SQL)

对象访问

以下项与访问数据库对象相关。

...

说明

布尔字段图标
是否向 public 服务器和数据库角色授予了很少几个(如果有)权限?

提示 所有登录名和用户都是 public 角色的成员,不能被删除。这些角色应该具有非常有限的权限。

布尔字段图标
是否将相似的数据库对象组合到同一个架构中?

提示 基于业务要求创建架构。请使用这些自定义架构来代替 dbo 架构。有关详细信息,请参阅架构(数据库引擎)

布尔字段图标
您是否通过在架构级别设置所有权和权限来管理数据库对象安全性?

提示 有关详细信息,请参阅 GRANT 架构权限 (Transact-SQL)

布尔字段图标
您对于架构是否具有不同的所有者,而不具有 dbo 所拥有的所有架构?

提示 在所有架构都具有相同的所有者时,所有权链接可能会忽略必要的权限检查。有关详细信息,请参阅所有权链

布尔字段图标
如果某个过程需要附加的权限,您是否使用过程代码的代码签名?

提示 有关详细信息,请参阅模块签名(数据库引擎)

布尔字段图标
TRUSTWORTHY 数据库选项是否设置为 OFF?

提示 当设置为 ON 时,使用了模拟上下文的数据库模块(例如,用户定义函数或存储过程)可以访问数据库以外的资源。使用 ALTER DATABASE 语句可以更改 TRUSTWORTHY 设置。有关详细信息,请参阅 TRUSTWORTHY 数据库属性

布尔字段图标
模块是否采取措施来避免 SQL 注入?

提示: 有关详细信息,请参阅 SQL 注入

布尔字段图标
如果允许对数据库的即席访问(而非将访问封装在模块内),应用程序是否采取措施来避免 SQL 注入?

提示 有关更多信息,请参见下列链接。

审核访问

...

说明

布尔字段图标
审核是否是特定于方案的?

提示 在审核需要和生成附加数据所产生的系统开销之间进行平衡。SQL Server 审核可以在单个数据库中并且针对特定对象为 DML 启用审核。有关详细信息,请参阅了解 SQL Server 审核

布尔字段图标
是否配置了登录审核以便保留失败登录的记录?

提示 通过使用 Management Studio 中的服务器属性(“安全性”页)配置登录审核。

布尔字段图标
如果您存储高度敏感的数据,是否对成功的登录和失败的登录都进行审核?

提示 有关详细信息,请参阅Audit Login 事件类Audit Login Failed 事件类

布尔字段图标
您是否通过使用 SQL Server 审核或跟踪事件审核 DDL、DML 和特定的服务器事件?

提示 有关详细信息,请参阅了解 SQL Server 审核了解事件通知DDL 事件用于事件通知的跟踪事件

布尔字段图标
您是否使用 WMI 以便在发生紧急事件时收到警报?

提示 有关详细信息,请参阅WMI Provider for Server Events 的概念

布尔字段图标
您是否仅在需要时启用 C2 审核或符合通用准则?

提示 根据您的业务需要进行配置。仅在对您的业务适合时启用 C2 审核或符合通用准则。请参阅通用准则认证