数据库安全

数据库安全

自主安全性机制:存取控制(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'   -----切换为普通用户

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章