数据库三层安全模型
文章目录
自主安全性机制:存取控制(access control通过权限在用户之间传递,使用户自主管理数据库安全性。
强制安全机制:对数据和用户强制分类,使得不同类别用户能够访问不同类别的数据。
非法用户----------权限机制
非法数据----------完整性约束
各种故障----------故障恢复能力
多用户并发访问----------并发控制机制
DBA
DBMS提供一个DBA账户,该账户为超级用户(系统用户),DBA利用该账户的特权可以进行用户账户的创建,以及权限授予、撤销,安全级别控制调整(linux 中的 root)
一、三层安全模型:
1 登录账号:
添加windows登录账户
exec sp_grantlogin'域名\用户名'
添加SQL登录账户
exec sp_addlogin 'your name' ,'your password'
2 数据库用户:(linux 中的分组group)
use databasename ----使用哪个数据库
exec sp_grantdbaccess '登录账号' ,'数据库用户'
3 授权后访问指定数据库指定内容:
------------------------授权
GRANT [权限 insert update delete select]
on 对象类型(table view database) 对象名(student)
to 用户
with grant option -----具有传播该权限的功能
---例子1:授予用户yue 查看student表的权力,且可将此权力传播
grant select --all privliege 授予全部权力
on table student
to yue
with grant option
---例子2:授予数据库用户userDB1 查询sche架构下对象的权限
grant select
on schema::sche --注意架构名的写法
to userDB1
---例子3:将存储过程Proc1的执行权限授予用户U2
grant execute
on procedure proc1
to u2
-----------------------撤销权力
revoke [权限 insert update delete select]
on 对象类型(table view database) 对象名(student)
from 用户
---例子 撤销所有用户对student表的查看权力
revoke select
on table student
from public
二、角色:将用户集中到一个单元,然后对该单元授权
固定服务器角色:
sysadmin 可以在SQL中执行任何活动
processadmin 管理SQL server的进程
dbcreator 创建、更改和除去数据库
bulkadmin 可以执行BULK INSERR 语句
数据库固定角色:
用户自定义角色:
例子:某校新增加10个班主任,授予他们添加、修改和删除student表的权限。
1创建角色并对角色授权
---创建班主任角色
EXEC sp_addrole 'moniter_role'
---对角色授权
grant select on student to moniter_role
2 创建各班主任登录名
方法一:
create login login1 with password='123546'
方法二:
EXEC sp_addlogin 'login2','123456'
3 创建各登录对应的数据库用户
方法一:
create user login1_DB for login login1
方法二:
EXEC sp_grantdbaccess 'login2' ,'login2_db'
4 总结:系统存储过程总结 sp_
sp_addlogin 登录名 ,登录密码 ----创建登录名
sp_adddbaccess 登录名,数据库用户名 -----创建数据库用户
sp_addrole 角色名称 -----创建角色
安全性控制的一般方法:
视图机制、审计、数据加密
三、架构(用户–架构–数据库对象模式)
架构是形成单个命名空间的数据库实体的集合,可以将架构理解为存放数据库对象的一个容器
就是一个数据库里的对象名称太多了,就把他们放到不同的货架上(架构)
一个表的完整限定名称为服务器名.数据库名.架构名.对象名
创建登录名:create login login1 with password="123456" default_database="数据库名称"
创建数据库用户:create user login1_db for login login1
创建数据库用户时未指定架构名,系统默认架构为dbo
setuser ---切换到管理员权限 有点像 linux 的 suroot
alter user login1_db with default_schema = sche ---设置login1_db的默认架构为sche
setuser 'login1_db' -----切换为普通用户