针对安全性的增强功能(数据库引擎)
SQL Server 数据库引擎中的安全增强功能包括安装期间的设置、新的 SEARCH PROPERTY LIST 权限、新的用户定义服务器角色以及管理服务器和数据库角色的新方法。
安装期间的设置
为了强化角色分离,不自动在 sysadmin 固定服务器角色中设置 BUILTIN\administrators 和 Local System (NT AUTHORITY\SYSTEM)。 本地管理员在单用户模式下仍可访问数据库引擎。
在 Windows 7 或 Windows Server 2008 R2 上安装时,SQL Server 现在支持托管服务帐户和虚拟帐户。 有关详细信息,请参阅配置 Windows 服务帐户和权限。
在 Per-service SID 下运行服务的保护现在扩展到所有操作系统。 有关详细信息,请参阅配置 Windows 服务帐户和权限。
新权限
数据库引擎中提供了 19 种新权限。 若要查看所有权限,请执行以下语句。
SELECT * FROM sys.fn_builtin_permissions('');
新权限如下所示:
新增了 GRANT、DENY 和 REVOKE 权限,可对搜索属性列表执行 CONTROL/VIEW DEFINTION/TAKE OWNERSHIP/REFERENCES/ALTER。
新增了 GRANT、DENY 和 REVOKE 权限,可对服务器角色执行 ALTER ANY SERVER ROLE、CREATE SERVER ROLE 和 CONTROL/VIEW DEFINTION/TAKE OWNERSHIP/ALTER。
新增了 GRANT、DENY 和 REVOKE 权限,可对可用性组执行 ALTER ANY AVAILABILITY GROUP、CREATE AVAILABILITY GROUP 和 CONTROL/VIEW DEFINTION/TAKE OWNERSHIP/ALTER。
新增了对 CREATE SEQUENCE 权限的 GRANT、DENY 和 REVOKE 权限。
新增了对 ALTER ANY EVENT SESSION 权限的 GRANT、DENY 和 REVOKE 权限。
新的角色管理
现在提供用户定义的服务器角色。 若要管理用户定义的服务器角色,请使用 CREATE SERVER ROLE、ALTER SERVER ROLE 和 DROP SERVER ROLE。 若要在所有服务器角色中添加和删除成员,请使用 ALTER SERVER ROLE … WITH ADD MEMBER。 不推荐使用 sp_addsrvrolemember 和 sp_dropsrvrolemember。
通过使用 ADD MEMBER 语法,可以修改 ALTER ROLE 以从角色中添加或删除成员。 不推荐使用 sp_addrolemember 和 sp_droprolemember。
添加了 IS_ROLEMEMBER 以检查数据库角色的成员身份。
组的默认架构
现在,您可以定义 Windows 组的默认架构。 在对象由 Windows 用户创建且未指定默认架构时,SQL Server 不再自动创建架构。 有关默认架构的详细信息,请参阅 CREATE USER。
SQL Server Audit 增强功能
对服务器级审核的支持进行了扩展,以便包括所有版本的 SQL Server。 数据库级审核限制为 Enterprise、Developer 和 Evaluation 版本。
SQL Server Audit 现在能够更好地应付故障情况以便写入审核日志。 例如,如果目标目录位于远程共享上并且网络出现故障,则 SQL Server Audit 现在能够在重新建立网络连接后立即恢复。 此外,还引入了一个新选项以使某个操作失败,否则,该操作将导致生成一个审核事件以便写入失败的审核目标。 有关详细信息,请参阅 CREATE SERVER AUDIT 中针对 ON_FAILURE 事件的 FAIL_OPERATION 选项。
以前,审核日志可能具有数目不确定的日志文件,或者在预定义的数目后重新开始。 现在引入了一个新选项,以便限定审核文件的数目而无需重新开始;这样,客户可以控制收集的审核信息量而不会丢失审核记录。 有关详细信息,请参阅 CREATE SERVER AUDIT 中的 MAX_FILES 选项。
如果可能,审核日志会提供更多的 Transact-SQL 堆栈帧信息。 在许多情况下,审核者现在可以确定是通过存储过程发出查询,还是由应用程序直接发出查询。
SQL Server 审核规范现在支持用户定义的审核组。 可以通过使用新的 sp_audit_write (Transact-SQL) 过程将经过审核的事件写入审核日志。 用户定义的审核事件允许应用程序将自定义信息写入审核日志,例如在使用公共登录名连接到 SQL Server 的情况下已连接的应用程序用户的名称。
向 sys.server_file_audits、sys.server_audits 和 sys.fn_get_audit_file 添加了新列,以便跟踪用户定义的审核事件。
SQL Server Audit 现在支持在将审核事件写入审核日志前对这些审核事件进行筛选的能力。 有关详细信息,请参阅 CREATE SERVER AUDIT 和 ALTER SERVER AUDIT 中的 WHERE 子句。
新的审核组支持监视包含数据库用户。
新的审核选项已添加到 Management Studio 的审核对话框中。
允许通过包含的数据库访问数据库引擎
包含数据库的用户无需登录即可访问包含数据库。 SQL Server 系统管理员应了解包含数据库如何更改 SQL Server 安全模型。 有关详细信息,请参阅针对包含数据库的安全性最佳方法。
哈希算法
HASHBYTES 函数现在支持 SHA2_256 和 SHA2_512 算法。
再次建议弃用 RC4
RC4 算法仅用于支持向后兼容性。 仅当数据库兼容级别为 90 或 100 时,才能使用 RC4 或 RC4_128 对新材料进行加密。 (建议不要使用。)而是使用一种较新的算法,如 AES 算法之一。 在 SQL Server 2012 中,可以通过任何兼容级别对使用 RC4 或 RC4_128 加密的材料进行解密。
证书密钥长度
创建证书时,从外部源导入的私钥的最大长度从 3,456 位扩展到 4,096 位。
服务主密钥和数据库主密钥加密从 3DES 更改为 AES
SQL Server 2012 使用 AES-256 加密算法来保护服务主密钥 (SMK) 和数据库主密钥 (DMK)。 AES 是一种比早期版本中使用的 3DES 更新的加密算法。 在将数据库引擎实例升级到 SQL Server 2012 后,应重新生成 SMK 和 DMK,以便将主密钥升级到 AES。 有关重新生成 SMK 的详细信息,请参阅 ALTER SERVICE MASTER KEY (Transact-SQL) 和 ALTER MASTER KEY (Transact-SQL)。
可以从二进制文件创建证书
CREATE CERTIFICATE (Transact-SQL) 包含 FROM BINARY 选项,可以指定 ASN 编码的证书的二进制描述。 可以使用新的 CERTENCODED (Transact-SQL) 和 CERTPRIVATEKEY (Transact-SQL) 函数提取现有证书的二进制描述。