數據庫安全
文章目錄
自主安全性機制:存取控制(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' -----切換爲普通用戶