我從前最怕旁人火眼金睛,如今,倒是盼着有人能夠洞幽燭遠。如此,就能贈我一點歡喜。
一、實驗目的
通過實驗加深對數據庫安全性的理解,熟悉視圖機制在自主存取控制上的應用。
二、實驗內容 1
1. 問題描述
2. 數據庫設計
創建視圖:
Create view
<視圖名>[(<列名>[,<列名>]…)]
As <子查詢>
[with check option]
組成視圖的屬性名全部聖洛或全部指定
授權(grant)
Grant <權限> [,<權限>…]
[on <對象類型> <對象名>]
To <用戶>[,<用戶>…]
[with grant option]
回收(revoke)
Revoke <權限> [,<權限>…]
[on <對象類型> <對象名>]
From <用戶>[,<用戶>…]
角色創建
Create role <角色名>
給角色授權:
Grant <權限> [,<權限>…]
[on <對象類型> <對象名>]
To <角色>[,<角色>…]
角色權限收回:
Revoke <權限> [,<權限>…]
[on <對象類型> <對象名>]
From <角色>[,<角色>…]
3. 程序實現與測試
(注意寫程序的規範:標識符用法、一句一行、縮格排放、合理的註釋等。)
(1)代碼及步驟如下:
1)創建李勇用戶
--首先使用sp_addlogin添加登錄
--exec sp_addlogin '用戶名','密碼',默認數據庫
exec sp_addlogin '李勇','123456','school','English'
--然後向該用戶授予訪問某數據庫的權限
go
use school
exec sp_grantdbaccess'李勇';
2)在CHOICES表上創建CS_View視圖
go
create view CS_View
as
select *
from CHOICES
where cid='10010';
3)在視圖CS_View上給用戶李勇授予select的權限
use School
go
grant select
on CS_View
to 李勇;
4)將視圖CS_View上score列的權限授予用戶李勇
use School
go
grant update(score)
on CS_View
to 李勇;
5)以用戶李勇登錄,然後新建查詢對CS_View進行查詢
use School
go
select *
from CS_View;
、、、
(2)代碼如下:
use School
go
update CS_View
set score=90
where no=500024940
select *
from CS_View;
三、實驗內容 2
1. 問題描述
2. 數據庫設計
如實驗內容1
3. 程序實現與測試
(1)代碼及步驟如下:
1)創建用戶王二
exec sp_addlogin '王二','654321'
use School
go
exec sp_grantdbaccess'王二';
2)創建視圖,並將元組放入
use School
go
create view grade2000
as
select *
from STUDENTS
where grade='2000'
(2)代碼如下
use School
go
grant select
on grade2000
to 王二;