SQL数据库安全性.docx
《SQL数据库安全性.docx》由会员分享,可在线阅读,更多相关《SQL数据库安全性.docx(15页珍藏版)》请在冰豆网上搜索。
![SQL数据库安全性.docx](https://file1.bdocx.com/fileroot1/2022-11/28/e10cc42a-4466-4bca-9ca4-493be67fb567/e10cc42a-4466-4bca-9ca4-493be67fb5671.gif)
SQL数据库安全性
、实验目的
掌握Windows认证模式下数据库用户帐号的建立与取消方法;
二、实验环境
SQLServer企业版三、实验学时
2学时
四、实验原理:
1.Microsoft?
SQLServer?
可以在两种安全(身份验证)模式:
(1)Windows身份验证模式(Windows身份验证)
Windows身份验证模式使用户得以通过MicrosoftWindowsNT?
4.0或Windows?
2000
用户帐户进行连接。
(2)混合模式(Windows身份验证和SQLServer身份验证)
混合模式使用户得以使用Windows身份验证或SQLServer身份验证与SQLServer
实例连接。
在Windows身份验证模式或混合模式下,通过WindowsNT4.0或Windows2000
用户帐户连接的用户可以使用信任连接。
SQLSarver安全性决縈树
戶应用程序
SQLSerwara
2.SQLServer的安全机制
SQLServer
(1)服务器级别所包含的安全对象主要有登录名、固定服务器角色等。
其中登录名用于登录数据库服务器,而固定服务器角色用于给登录名赋予相应的服务器权限。
中的登录名主要有两种:
第一种是Windows登录名,第二种是SQLServer登录名。
Windows
登录名对应Windows验证模式,该验证模式所涉及的账户类型主要有Windows本地用户账户、Windows域用户账户、Windows组。
SQLServer登录名对应SQLServer验证模式,在该验证模式下,能够使用的账户类型主要是SQLServer账户。
(2)数据库级别所包含的安全对象主要有用户、角色、应用程序角色、证书、对称密
钥、非对称密钥、程序集、全文目录、DDL事件、架构等。
用户安全对象是用来访问数据库
则该
的。
如果某人只拥有登录名,而没有在相应的数据库中为其创建登录名所对应的用户,
用户只能登录数据库服务器,而不能访问相应的数据库。
(3)架构级别所包含的安全对象主要有表、视图、函数、存储过程、类型、同义词、
聚合函数等。
架构的作用简单地说是将数据库中的所有对象分成不同的集合,这些集合没有
这个默
交集,每一个集合就称为一个架构。
数据库中的每一个用户都会有自己的默认架构。
认架构可以在创建数据库用户时由创建者设定,若不设定则系统默认架构为dbo。
数据库用
户只能对属于自己架构中的数据库对象执行相应的数据操作。
至于操作的权限则由数据库角
色所决定。
一个数据库使用者,想要登录服务器上的SQLServer数据库,并对数据库中的
表执行数据更新操作,则该使用者必须经过如下图所示的安全验证。
3.数据库的存取控制:
授权和撤销权限
(1)GRANT
在安全系统中创建项目,使当前数据库中的用户得以处理当前数据库中的数据或执行特
定的Transact-SQL语句
语法:
1)语句权限:
GRANT{ALL|statement[,…n]}
TOsecurity_account[,…n]
2)对象权限:
GRANT
{ALL[PRIVILEGES]|permission[,…n]}
{
[(column[,…n])]ON{table|view}
|ON{table|view}[(column[,...n])]|ON{stored_procedure|extended_procedure}|ON{user_defined_function}
TOsecurity_account[,...n][WITHGRANTOPTION][AS{group|role}]
(2)REVOKE删除以前在当前数据库内的用户上授予或拒绝的权限。
语法语句权限:
REVOKE{ALL|statement[,...n]}
FROMsecurity_account[,...n]对象权限:
REVOKE[GRANTOPTIONFOR]{ALL[PRIVILEGES]|permission[,...n]}
[(column[,...n])]ON{table|view}
|ON{table|view}[(column[,...n])]
|ON{stored_procedure|extended_procedure}
|ON{user_defined_function}
TO|FROM}
security_account[,...n]
[CASCADE]
[AS{group|role}]
五、实验内容及步骤
以系统管理员身份登录到SQLServer服务器,在SQLServer2005界面中实现以下操作,
并独立写出6—8题的程序代码;
3.
录密码为secret,默认登录数据库为stu;
4.
将帐号zhang添加为数据库stu的用户,用户名为zhang;
在数据库stu中创建用户stu1、stu2和stu3,登录帐号分别为stu1、stu2和stu3;
给数据库用户stu1赋予对sc表进行插入、修改、删除操作权限;
的操作权限,并允许再授权给其他用户;
10.将登录帐号Cheng同时拥有服务器角色serveradmin和securityadmin的权限;
11.删除服务器角色sysadmin的成员stu2和stu3;
六、样例模板
一、用户的创建
服务器用户和数据库用户
u1、u2
Windows,打开“控制面板”(Win7)中的“用户账户”,创建
用户包括操作系统用户、
1.创建操作系统用户以管理员的身份登录到
操作系统用户u1、u2。
2.创建数据服务器用户
(1)GUI方式(SQLServer2008为例):
以DBA的身份登录到SQLServerManagement
Studio,在对象资源管理器中选择“安全性”,右击“登录名”,在弹出的快捷菜单中选择“新
建登录名”菜单选项,在“新建登录名”窗口中单击“搜索”按钮添加Windows用户u1,
选择“Windows身份验证模式”,单击“确定”按钮完成。
(2)命令方式:
usemaster
createlogin[PSYCHE\u1]fromwindows0a数据库A
a耒统站
ijReportServer
[jReportServerTempDB
LJstU-37
BN安全性
曰N登录名
SERVICE\MSSQLSERVERSERVICEXSQLSERVEKAGEF>SYCHE\ulF>SVCHE\u2PSYCHE\u3Psyche\Zangse
53
歯###M&_PoircyEventProce55rnc易PolicyTsqlEKecutimLcANTAUTHORJTV\NETWORK*ANTAUTHOR1P/\SYSTEM圍NT爭nt
A
AA岛
上'制5
上'扩馬属性
rEiEHEVda
连曲
服箝器:
户”
匚』:
•总二七|>;-
此用户用育的飆枸g:
BMs恂
IIjdb_*jcc*ssadiiii方
□
□
□
□
□
Jb_b-icL7upnperator
4b_dilv^t4j4r
dba*l«vrbtAF
db_ddli4ii:
nJb_i«iyiil*r*aJcr部■打nW祇"ifiW
数la岸fte成01):
甬邑两员
;□?
dbojcccsEAj^in
db_tickupoptri-tordb_d-iliwfstAt*
dbddl-fediiin
db_djenyiit*readcrter皿亠—y
dbo
(3)同样的方式将操作系统用户u2、u3加入到数据服务器。
3.创建数据库用户
以系统管理员身份登录到数据库服务器,分别以GUI方式和命令方式创建数据库用户
(1)GUI方式(SQLServer2008为例):
选中stu_37数据库,单击“安全性”,在其“用节点下右击,在弹出的快捷菜单中选择
输入要新建的数据库用户名和登录名,单击
(2)命令方式:
usestu37
“新建用户”菜单项,在“数据库用户”窗口中“确定”按钮。
go
createuserstu_37_login03
forlogin[PSYCHE\u3]
go
(3)查看stu_37_login03
的属性,此用户除了拥有默认架构外,没有分配相应权限。
上'制5
上'扩馬属性
rEiEHEVda
连曲
服箝器:
匚』:
•总二七|>;-
此用户用育的飆枸g:
BMs恂
IIjdb_*jcc*ssadiiii
方
□
□
□
□
□
Jb_b-icL7upnperator
4b_dilv^t4j4r
dba*l«vrbtAF
db_ddli4ii:
nJb_i«iyiil*r*aJcr部■打nW祇"ifiW
数la岸fte成01):
dbo
甬邑两员
;□?
dbojcccsEAj^in
db_tickupoptri-tordb_d-iliwfstAt*dbddl-fediiindb_djenyiit*readcrter皿亠—y
(4)切换到操作系统用户u1,以u1的身份登录到SQLServerManagementStudio,
这时可以使用命令打开数据库stu37。
如下图:
/tQLQueryl.iql-(lo„7(Psyche\u1(53))*!
use3C-37
go
usestu37go
sp_addrolemember
'dbowner'
'stu_37_login01'
zSQLQueryl-sql-Clo~7fPsyche\u1(55))*
use3tu57
go
sp_addroleiEeiEi:
er*db_owner*.'stLi_37_logi:
:
01'
能消息
命令已成功完成0
A,
①查谊已咸…(local)(10.0RTM)Psyche\Ll[53],stu_3700:
00:
000行
此时,可以访问数据库的数据库对象,如下图:
曰活■(SQLServer10.0.1600-Piyche\tJl)a曰ea轴库
回3篆畑娠韋
E二歡握库挟黑
HJJReportserver
(3ReportServerTerrpD6
0stu,37
i)口城库烁0
回魏£表
国
S
1+)
Q
0
□
□
dbo.Q
dbo.sdbo.scdbo.iclldIm.4^37
回二i视圏
0匸同义词
E二可躺牝
11]LJServiceBroker0=荐犒
二.-h-41—
SQLQueryl.sql-(lo...7fP&yche\u1(SS}}*
flclect-fromj
snsme
sseK
sage
sdept4
1
j10M330001
i刘炼
B
23
2
106033000?
'丁®
女
22
3
10M33000S
畀
24
4
1DM350004
21
5
IDMiiOOOS
胡海熱
22
信管
6
1DM330007
伺强
23
7
1DM3J0003
何荊捕
文
22
9
iDMiaooro
李晓飞
1hHnJI.
■
23
信管”
◎直仮已-1(local)'(10-0RTM)
PsycheXul(53)|stuj?
|OOjOOiOO|14Gij
□结果亠肖慝
切换到DBA,取消stu_37_loginO1的所有的角色,此时只能打开数据库,而不能访问数据库对象
三、数据库的权限管理
/^QLQueryl.tql-(lo^r(Psychc\u2(SS))*[use3CV37
go
4涓讯
消息*,级别11,状态H雪1行
服务器主怵-PSYCHZXu2^'无法在当前安全上下文下访问数抿库”*J3严。
I(IdCai)(10.0RTM)|Psyche\u2(55)|maiter|00:
00:
000行
此用RSWiSSffl):
Iffl有吊踝恂
iBBUBL.
Qjdl_Atc*=tidfvn
Idlj—'b'BcLnip口pgr^ltor
I—t'lld/ilu*沁dj4r
dl亠ddfd.blAtAfed«r■I'b.djUi^d.Lturilur
埶《库曲色战贯se)w):
rsyclw^ZaiiCsr
iD
1~'
dlj—HcLnip口purler
i~'
d.'b_d.-il-ufAi.d4r
□
Wr
□
■ll_ddl6df^iii
□
dl_d4血Fd.bturi-tdjor
□
■I'b^djUiT^d.bturilur
m
Hl.
3.
SQLQueryl^sql-Clo„7(Psyche\ultSJ))*
iiiaesm3,
go
gr^ntselect,delateon孚toFty_3字】QffinOi
为结果I
命警已咸功完成*
切换到用户u1,为用户u2分配访问权限
Eu岸税蔭
田IJReportSerwer
0ijReportServerTtmpDB
03stij_37
E□库矢盂圏
BLa表
mLj祝s
B口同Ji词
回□可謔世
ENServiceBroker
BEJ啓
gR宝全性
u3用户〔Adba[应guest盛INFORM冉no忆HUEastu_37_lo9irt(}lL氐stu_37_logiti02L巻stu_37_lDgi'rtO3
ffla角色
W一J果构
4.切换到用户u2,可以看到学生表s对用户u2可见
曰0-(SQLServer1O'0.15Q0-Psyche\u2)a
laQ泵咖据库
IB匸i琳库快照
QReportServer
ijR亡portServerTempDB
Qstu_37
ffi口数居库芫矣图
Qm表
a
B3dbo.s
B口列a凝国口釣耒aca脏发器
ISEa索弓
3i:
J统计信息
cfiMEl
5.执行访问的权限
/^LQueryrsql-(Io..J(Psyche\u2(SS))*}
<
E]结果Jj消息I
ega
3
管管管V管管管管管V管信信信値信信信信信値信
sno
sname
W5flS3iH}01
1刘炼
WM33WW2
TS
10旳3泗1
陈勇
1Q&03300W
余ffl
曲&03测5
胡海
讨强
W50SSDDDE
何楠楠
李晓飞
1OW33W11
蔡盼盼
10&0330013
谕四超
1O&O33MH
陈昌钦
2
6
7
3
10
11
男女男女女男女女宏舅男
a查询已成功执行。
[local][10.0RTM)P5yche\u2[55]5tu_3700:
00:
00149行
6.执行未授权的权限
updatessetsage=30wheresname='丁蕾'
go/^LQueryl.iql-tlo...7(Psychc\u2(SS)}*]
update3set鹘鏗=30where宓屈鵰='丁蕾'
go
Sj消息
消息仝可级别14,状烹瓦-第=行
拒垂了对对衾’『擞提阵'Stu37^,架构3『啲咤4权限。