跳至内容
数据库安全性

数据库安全性

这篇讲 SQL Server 的安全机制:三级安全级别、登录管理、权限管理(DCL)以及角色管理。

安全级别

SQL Server 的安全性机制分为三个级别:

  1. 操作系统级:能否访问运行 SQL Server 的主机。
  2. SQL Server 级:能否登录到 SQL Server 实例(登录账号)。
  3. 数据库级:登录后能访问哪些数据库及对象(数据库用户与权限)。

登录管理

SQL Server 支持两种身份验证方式。

Windows 身份验证

使用 Windows 账号登录:

EXEC sp_grantlogin [计算机名\Windows账号]    -- 添加
EXEC sp_revokelogin [计算机名\Windows账号]   -- 删除
EXEC sp_denylogin [计算机名\Windows账号]     -- 拒绝

SQL Server 身份验证

使用 SQL Server 自己的账号密码登录:

EXEC sp_addlogin '账号', '密码', '默认数据库', '语言'   -- 添加
EXEC sp_droplogin '账号'                                -- 删除

新版本推荐使用 CREATE LOGIN 语句创建登录名,sp_addlogin 等系统过程为旧式写法。

权限管理

用户登录到 SQL Server 后,其账户被授予的权限决定了能对哪些数据库对象执行哪种操作。权限分两类:

权限对象决定的内容示例
对象权限能对表、视图、存储过程执行哪些操作UPDATE、INSERT、DELETE、EXECUTE
语句权限哪些用户可执行具有管理性的操作CREATE、BACKUP

权限设置的两种部署途径:

  • 面向单一用户:SSMS → 数据库 → 安全性 → 用户 → 右键 → 属性 → 权限。
  • 面向数据库角色:SSMS → 数据库 → 安全性 → 角色 → 选一个角色 → 右键 → 属性 → 权限。

权限管理通过 DCL(数据控制语言)实现:

命令作用
GRANT授予用户对对象执行操作的权限
REVOKE取消用户对对象执行操作的权限
DENY禁止用户对对象执行操作

可控制的操作包括:UPDATE、INSERT、DELETE、EXECUTE、CREATE、BACKUP 等。

角色管理

角色管理的主要目的是:将具有相同权限的用户设置为同一角色,减少权限设置的工作量,其功能比"组"更强大。给角色授权后,加入该角色的用户即自动拥有相应权限。

最后更新于