数据库安全性
这篇讲 SQL Server 的安全机制:三级安全级别、登录管理、权限管理(DCL)以及角色管理。
安全级别
SQL Server 的安全性机制分为三个级别:
- 操作系统级:能否访问运行 SQL Server 的主机。
- SQL Server 级:能否登录到 SQL Server 实例(登录账号)。
- 数据库级:登录后能访问哪些数据库及对象(数据库用户与权限)。
登录管理
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 等。
角色管理
角色管理的主要目的是:将具有相同权限的用户设置为同一角色,减少权限设置的工作量,其功能比"组"更强大。给角色授权后,加入该角色的用户即自动拥有相应权限。
最后更新于