《《數(shù)據(jù)庫安全性》課件》由會員分享,可在線閱讀,更多相關《《數(shù)據(jù)庫安全性》課件(20頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、第八章: 數(shù)據(jù)庫安全性,數(shù)據(jù)庫安全性控制 Sybase數(shù)據(jù)庫數(shù)據(jù)安全性控制介紹,數(shù)據(jù)庫安全性控制,數(shù)據(jù)庫的安全性是指保護數(shù)據(jù)庫以防止不合法使用所造成的數(shù)據(jù)泄漏,更改和破壞 系統(tǒng)安全保護措施是否有效是數(shù)據(jù)庫系統(tǒng)的主要性能指標之一 計算機系統(tǒng)的安全模型 存取控制: 按預先定以好的用戶權限控制用戶對數(shù)據(jù)庫的存取, 保證用戶只能存取到有權存取的數(shù)據(jù),用戶,DBMS,OS,DB,,,,,,,用戶標識和鑒別,存取控制,操作系統(tǒng)安全保護,數(shù)據(jù)密碼存儲,,數(shù)據(jù)庫安全性控制,用戶權限: 用戶對數(shù)據(jù)庫中的不同數(shù)據(jù)對象允許執(zhí)行的操作權限 關系系統(tǒng)中的存取權限: 不同的DBMS具體實現(xiàn)方法是存在一些差別的,,數(shù)據(jù)本
2、身:表、屬性列 外模式, 模式, 內模式:,不同類型的數(shù)據(jù)對象有不同的操作權力,,數(shù)據(jù)庫安全性控制,存取控制機制包括: 定義用戶權限, 該定義被存放到數(shù)據(jù)字典中 合法權限檢查, 根據(jù)數(shù)據(jù)字典檢查用戶權限,,Sybase數(shù)據(jù)安全性控制介紹,數(shù)據(jù)庫安全子系統(tǒng): 用戶權限定義和合法權檢查機制組成DBMS安全子系統(tǒng) Oracle數(shù)據(jù)庫的安全性措施(自學) 數(shù)據(jù)庫應用系統(tǒng)的結構,,,,DB1,,DB2,,DBn,,...,客戶端1,,客戶端2,,客戶端n,,...,,安全層次:上機權 DB Server DB 表、屬性列,Sybase數(shù)據(jù)安全性控制介紹,DB server安全層次 任何一個合法的操作系
3、統(tǒng)帳戶, 要想訪問數(shù)據(jù)庫中的數(shù)據(jù), 必須經(jīng)過DB server的系統(tǒng)管理員(SA)給予必要的授權 DB server帳戶 sa帳戶: 通常要求名為sybase的OS 帳戶來安裝DB server 產品, 安裝完成后, 自動生成一個名為sa的DB server帳戶, sa是唯一的具有SA特權的超級用戶 創(chuàng)建DB server的其他帳戶: sa可利用系統(tǒng)過程sp_addlogin把任何操作系統(tǒng)帳戶接納為 DB server 帳戶,,Sybase數(shù)據(jù)安全性控制介紹,sp_addlogin ,, 改變口令: (也可由SA改變) sp_password , , 例如: sp_addlogin scott
4、, tigger sp_password tigger jagnar, scott 數(shù)據(jù)庫用戶: 每個DB server的合法帳戶, 要想訪問某個DB, 還需進一步被接納為該DB的合法用戶 定義DB用戶: DB的dbo或系統(tǒng)管理員為當前DB定義新的用戶,,Sybase數(shù)據(jù)安全性控制介紹,sp_adduser ,, sp_dropuser 例如: use empdb go sp_adduser scott scottM go 訪問數(shù)據(jù)庫對象: 一個數(shù)據(jù)庫用戶, 要想訪問其中的數(shù)據(jù)庫對象, 還必須由該對象的屬主授予相應的特權,,Server帳戶scott將以scottM 成為數(shù)據(jù)庫empdb的用戶
5、,Sybase數(shù)據(jù)安全性控制介紹,組: 如果幾個用戶都具有相同的特權, 那么可以把它們組成一個組, 起一個名字, 然后給這個組授權或回收權限 建立組: 由dbo完成 sp_addgroup 加入組或改變組: sp_changegroup , public組: 每個數(shù)據(jù)庫自動包含一個不可被刪除的名為public的組 每個用戶是public的組員, 還可以且只能再從屬于另外一個組,,Sybase數(shù)據(jù)安全性控制介紹,不要授給public過多的權限 系統(tǒng)過程sp_helpgroup: 可以報告在一個DB中組的信息 SQL server中的三中角色: SA, SSO和OPER SA(系統(tǒng)管理員角色):
6、管理系統(tǒng)資源, 向DB用戶授權, 授予和回收SA角色, 調諧系統(tǒng)性能等 SSO(系統(tǒng)安全員): 創(chuàng)建帳戶, 管理帳戶和口令, 授予和回收SSO和OPER角色, 管理審計系統(tǒng) OPER(操作員角色): 數(shù)據(jù)庫的備份和裝入 實際生產系統(tǒng)中: 或讓一個帳戶身兼三職, 或處于安全和效率的考慮讓不同的帳戶分擔不同的角色,,Sybase數(shù)據(jù)安全性控制介紹,sa同時具有三中角色的職責 授予和回收角色 sp_role “grant”, “sa_role”, wang 通常把DB Server各帳戶分別授予SA, SSO和OPER帳戶, 并鎖定sa帳戶 sp_locklogin login_name, “l(fā)oc
7、k/unlock”,,可以是grant 或revoke,可以是SSO, SA或OPER,Sybase數(shù)據(jù)安全性控制介紹,DB server 帳戶授權層次 SA: 可以給所有用戶授權 dbo: 只可給本數(shù)據(jù)庫用戶授權 DB對象屬主: 只可對表或視圖授權 其他用戶和public組: 只能接受授權 dbo: DB server帳戶用create database 命令建立數(shù)據(jù)庫后, 就成為該數(shù)據(jù)庫的dbo dbo的權力(限于該DB) 建表、其他的數(shù)據(jù)庫對象,SA,,dbo,,DB對象屬主,,其他用戶, public組,Sybase數(shù)據(jù)安全性控制介紹,增加DB用戶, 為他們分配權力 對DB進行備份和恢
8、復 為了便于授權管理, 建議讓dbo成為該DB中一切對象的屬主 dbo可以用setuser命令, 臨時扮演該DB中任何一個用戶 SA在訪問該DB時自動成為該DB的dbo 數(shù)據(jù)庫對象屬主: 指用create命令建立一個數(shù)據(jù)庫對象的數(shù)據(jù)庫用戶, 此后它對該對象具有一切操作權限,,SQL Server中沒有該命令,Sybase--授權控制命令,普通用戶: 不擁有DB和自己的數(shù)據(jù)庫對象的用戶 由SA或dbo或對象屬主明顯授權 或加入到某組中 權力 語句權力: 建立數(shù)據(jù)庫對象的語句, 由SA或dbo授予 create database 僅由SA授予,且僅可以在 master中使用,,,進
9、行限定 操作,,Sybase--授權控制命令,create default create procedure create rule create table create view 注意: create index, create trigger僅屬于表的主人, 不可授予他人 授權語句: grant, revoke grant all| to public| revoke all| from public|,,,dbo可授予建立數(shù)據(jù)庫對象的權利,Sybase--授權控制命令,例子: 由SA執(zhí)行下列語句 use pubs go grant all to john grant create ta
10、ble to mary go 數(shù)據(jù)庫對象的訪問權力: 由對象屬主進行對象權利的授予,Sybase--授權控制命令,表 select insert update delete refrences 視圖 select insert update delete 列 select update 存儲過程 execute 授權語句: grant, revoke grant all| on ||() to public| revoke all| on ||() from public|,,Sybase--授權控制命令,例子: grant all on SC to public revo
11、ke update on SC(Grade) from public 成為數(shù)據(jù)庫的屬主dbo的方法: 授予 某一DB server賬戶具有創(chuàng)建數(shù)據(jù)庫的能力: 以SA注冊后, 在master數(shù)據(jù)庫中 grant create database to loginname SA創(chuàng)建數(shù)據(jù)庫DB1后, 改變屬主 use DB1 sp_changeowner loginname Oracle 數(shù)據(jù)安全性控制(自學),,使用存儲過程的優(yōu)勢,存儲過程:在服務器上的Server環(huán)境下運行,可利用Server優(yōu)化器在運行時獲得最佳性能。 例如: CREATE PROCEDURE proc4(p1 char(15)
12、,p2 char(20), p3 int) AS INSERT INTO workers values(p1,p2,p3) RETURN EXEC Proc4 Bob lint,Sales,3333 CREATE PROCEDURE proc_students_dept(dept varchar(20)) AS SELECT * FROM students WHERE department= dept RETURN EXEC proc_students_dept dept=CS,使用存儲過程的優(yōu)勢,存儲過程:在服務器上的Server環(huán)境下運行,可利用Server優(yōu)化器在運行時獲得最佳性能。 好處: -性能上,服務器功能強大,在物理上在同一系統(tǒng)中,無網(wǎng)絡傳輸; -客戶/服務器開發(fā)上,客戶與服務器方開發(fā)任務分離,客戶方應用程序可重復使用服務器端組件; -安全性上,用存儲過程來增刪改操作,編程時可控制上述操作; -數(shù)據(jù)完整性上,用存儲過程實現(xiàn)合法性檢查等; -提高數(shù)據(jù)與應用的獨立性,改變數(shù)據(jù)庫邏輯結構時,可通過修改存儲過程來避免修改應用。,