Quantcast
Channel: CodeSection,代码区,SQL Server(mssql)数据库 技术分享 - CodeSec
Viewing all articles
Browse latest Browse all 3160

SQL语言――安全性 sql sql语句 SQLServer 安全性

$
0
0
SQL语言——安全性
安全性
/*
1. DBMS的安全机制
-- 自主安全性机制:存取控制
-- 强制安全性控制
-- 推断控制机制
-- 数据加密存储机制
*/
/*
2. 自主安全性机制
-- 权限控制
-- 访问规则
DBMS将权利和用户(账户)结合在一起,形成一个访问规则表可以实现对数据库的安全性控制
AccessRules ::=(S , O , t , P)
-- S : 请求主体(用户)
-- O : 访问对象
-- t : 访问权利
-- P : 谓词
S用户在满足P条件下,对O有t的权利
- Access Rules通常存放在数据字典或称系统目录中,构成了所有用户对DB访问权利
- 用户多时,可以按用户组建立访问权限
- 访问对象:属性/字段、记录/元组、关系、数据库
- 权利:包括创建、增、删、改、查等
- 谓词:拥有权利需满足的条件
*/
-- e.g.
-- 员工管理数据库的安全性控制
-- employee(pid,pname,page,psex,psalary,did,head)
-- 要求
-- 员工管理人员:能访问所有人员
-- 收发人员:只能访问员工的基本信息
-- 每个员工:可访问自己的记录,但不能修改
-- 部门领导:能够查询其所有领导部门人员的所有情况,只读
-- 高层领导:可访问所有内容,只读
S
O
t
P
员工管理人员
employee
读、删、改、查
收发人员
employee(pname,did)

高级领导
employee

员工
employee

pid = userId
部门领导
employee

head = userId
-- 3. 安全性的实现方式
-- 存储矩阵
-- 视图
CREATE empV1 AS SELECT * FROM employee where headId = :userId;
-- 4. 用户与权利
/*
关系级别(普通用户) ←—— 账户级别(程序员用户) ←—— 超级用户(DBA)
级别1 SELECT :读
级别2 MODIFY :更新
-- INSERT
-- UPDATE
-- DELETE
级别3 CREATE :创建
-- CREATE
-- ALTER
-- DROP
级别高的拥有级别低的权限
授权命令
GRANT {ALL PRIVILEGES | privilege {,prvilege...}}
ON [TABLE] tablename | viewname
TO {PUBLIC | user-id{,user-id...}}
[WITH GRANT OPTION];
user-id , 某个用户账户,由DBA创建的合法账户
public , 允许所有有效用户使用授予的权利
privilege 是下面权利
SELECT | INSERT | UPDATE | DELETE | ALL PRIVILEGES
WITH GRANT OPTION 选项是允许被授予者传播这些权利
*/
GRANT ALL PRIVILEGES ON employee TO emp2001;
GRANT SELECT ON empV2 TO emp5001;
/*
收回权利
REVOKE {ALL PRIVILEGES | priv{,priv...}}
ON tablename | viewname
FROM {PUBLIC | user {,user...}};
-- e.g.
REVOKE SELECT ON employee FROM userB;
*/

Viewing all articles
Browse latest Browse all 3160

Trending Articles