7数据库安全基本原则.docx
- 文档编号:9490158
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:47
- 大小:1.46MB
7数据库安全基本原则.docx
《7数据库安全基本原则.docx》由会员分享,可在线阅读,更多相关《7数据库安全基本原则.docx(47页珍藏版)》请在冰豆网上搜索。
7数据库安全基本原则
数据库安全基本原则
教学目的
学习数据库安全基本原则
重点、难点
设计对SQLSERVER的安全访问
管理对SQLSERVER实例的访问
管理对SQLSERVER数据库的访问
管理对数据库架构的访问
管理对数据库表和列的访问
管理对可编程对象的访问
教学方法
讲授法、练习法
教学课时
4节理论课+8节课堂实验
1.1保护数据库系统的网络安全设计(略)
1.1.1授权远程访问(略)
详见第9章
1.1.2保护外部访问(略)
详见第9章
1.2管理对SQLServer实例的访问
1.2.1选择身份验证模式
1.讲解两种身份验证模式的含义和比较(p4)
2.演示配置混合身份验证模式
(1)更改服务器身份验证模式(p3)
)利用图形界面创建登录名登录2(.
1.2.2连接到SQLServer实例
1.讲解授权Windows用户及组的访问,介绍默认的Windows登录名(p5)
2.演示使用Windows身份验证连接到SQLServer(第9章SQLServer
)的安全管理2005185·3.演示授权SQLSERVER登录名的访问,使用SQL语言创建登录名“mary”并登录
(1)从“开始”菜单中,依次选择“所有程序”——“MicrosoftSQLServer
2005”——“SQLServerManagementStudioExpress”。
单击“新建查询”按钮打开一个“新建查询”窗口并在“可用数据库”下来菜单中选择“AdventureWorks”将数据库上下文更改为AdventureWorks。
输入下面语句:
CREATELOGINMary
WITHPASSWORD='p@ssw0rd',
DEFAULT_DATABASE=AdventureWorks;
执行,结果如图1.1所示。
Mary”图1.1创建登录账户“指导:
此时Mary没有访问AdventureWorks数据库的权限
(2)运行以下代码通过sql_logins目录视图来获取有关SQLServer登录名的信息:
SELECT*
FROMsys.sql_logins;
所示。
1.2执行,结果如图
获取登录名的信息图1.2
(3)在“SQLServerManagementStudioExpress”窗口单击“连接对象资源管理器”,打开“连接到服务器”,选择身份验证方式为“SQLSever身份验证”,登录名为“Mary”,密码:
p@ssw0rd。
如图1.3所示。
1.3“连接到服务器”窗口图所示。
“连接到服务器”提示框,如图,弹出4()单击“连接”1.4
“连接到服务器”提示框图1.4
指导:
此时虽然登录名“Mary”默认连接数据库“AdventureWorks”,但仍然无法打开数据库。
即Mary账户对于AdventureWorks数据库来说只相当于一个guest账户,而guest账户没有开启。
(5)执行下面语句,授予guest账户连接权限,如图1.5所示。
USEAdventureWorks;
GO
GRANTCONNECTTOguest;
guest账户连接权限图1.5授予
”窗口单击“连接对象资源管理SQLServerManagementStudioExpress(6)在“,登身份验证”Sever器”,打开“连接到服务器”,选择身份验证方式为“SQL
所示。
1.6。
如图p@ssw0rd,密码:
”Mary录名为“
1.6图“连接到服务器”窗口
”窗口,如SQLServerManagementStudioExpress)单击“连接”,打开了“(7所示。
图1.7
”账户登录成功1.7图“Mary指导:
发现看不到数据库下面的用户表。
原因”数据库,AdventureWorks展开“
在于目前Mary用户只用连接权限,没有查询权限。
(8)切换到“Administrator”登录界面,执行下面语句,授予guest账户连接权限,如图1.8所示。
USEAdventureWorks;
GO
REVOKECONNECTTOguest;
guest账户连接权限图1.8撤销”窗口单击“连接对象资源管理)在“SQLServerManagementStudioExpress(9,登身份验证”,选择身份验证方式为“SQLSever器”,打开“连接到服务器”所1.9。
单击“连接”,仍然无法连接,如图录名为“Mary”,密码:
p@ssw0rd示。
“连接到服务器”提示框1.9图
p8)4.讲解密码策略的实施(
)p9.讲解管理实例权限(5
6.实验管理实例权限
(1)在“Administrator”登录界面,执行下面语句,为服务器角色添加一个登录名:
EXECUTEsp_addsrvrolemember'Mary','sysadmin';
结果如图1.10所示。
1.10为服务器角色添加一个登录名图
,如图Mary”)在对象资源管理器中,展开安全性——登录名,找到“(21.11所示。
,在对象资源管理器中找到“Mary”图1.11
,Mary”上,单击鼠标右键,在弹出的菜单中单击“属性”登录名“(3)在
,在窗口右侧的-Mary”窗口的选择页中选择“服务器角色”在打开的“登录属性。
。
如图1.12所示。
单击“确定”服务器角色中选择了“sysadmin”
sysadminMary1.12图将“”添加到服务器角色“”中。
(4)在“SQLServerManagementStudioExpress”窗口单击“连接对象资源管理器”,打开“连接到服务器”,选择身份验证方式为“SQLSever身份验证”,登录名为“Mary”,密码:
p@ssw0rd。
单击“连接”,连接成功,在对象资源管理器中展开“AdventureWorks”数据库,发现可以看到数据库下面的用户表。
如图1.13所示。
AdventureWorks查看“”数据库图1.13
指导:
拥有对数据库的完全控制权限。
此时Mary
)执行下面语句,获取服务器角色成员信息5(
('sysadmin');
IS_SRVROLEMEMBERSELECT
所示。
1.14如图
获取服务器角色成员信息图1.14指导:
通过查询系统函数IS_SRVROLEMEMBER,可以查出当前用户是否属于一个服务器角色。
如果实际登录名属于sysadmin服务器角色,返回1,否则返回0:
(3)切换到“Administrator”登录界面,执行下面语句,将登录名从服务器角色中删除
EXECUTEsp_dropsrvrolemember'Mary','sysadmin'
如图1.15所示。
将登录名从服务器角色中删除1.15图,在右侧的属性窗口中,在选择页中选择“用户映射”)在登录名Mary4(“数据库”数据库,在的“映射到此登录名的用户”中选中“AdventureWorks所示。
单击“确定”按钮。
1.16”角色成员身份”中选中“Public,如图
图1.15登录名Mary映射到“AdventureWorks”数据库
(5)重新使用登录名Mary登录中,连接成功后,在对象资源管理器中展开“AdventureWorks”数据库,发现看不到数据库下面的用户表。
如图1.16所示。
,图1.16查看登录名Mary的权限
(6)执行下面语句,查询“AdventureWorks”数据库下的HumanResources.Employee表。
如图1.17所示。
useAdventureWorks
go
select*
fromHumanResources.Employee
表”数据库下的HumanResources.Employee图1.17查询“AdventureWorks
”数据库下的”登录界面,在“AdventureWorks(7)切换到“Administrator表上单击鼠标右键,在弹出的快捷菜单中选择属性。
HumanResources.Employee所示。
如图1.18
表的属性选择图1.18HumanResources.Employee
”窗口中单击“添加”按钮,弹-Employee,在“表属性)单击“属性”8(.
出“选择用户或角色”窗口,如图1.19所示。
“选择用户或角色”窗口图1.19
1.20所示。
,在“查找对象”窗口中选中“Mary”。
如图9()单击“浏览”
“查找对象”窗口图1.20”窗口的用户或角色中可看,在“表属性-Employee10()单击两次“确定”1.21中的授予权限。
如图”的显示权限栏中选中,在“Mary到“”MarySelect所示
权限Mary在“”的显示权限中选中Select图1.21的下库”数据AdventureWorks次语执)行下面句,再查询“11(所示。
HumanResources.Employee表,可以执行查询。
如图1.22useAdventureWorks
go
select*
fromHumanResources.Employee
SelectMary1.22图在“”的显示权限中选中权限
1.2.3拒绝用户访问
(1)输入下面语句,拒绝用户“Mary”访问:
ALTERLOGINMaryDISABLE;
结果如图1.23所示。
”访问拒绝用户“Mary图1.231.24所示。
2)使用“Mary”连接服务器,提示账户被禁用,如图(
Mary拒绝用户“”登录图1.24
”访问:
3)输入下面语句,允许用户“Mary(
ALTERLOGINtestENABLE;
所示。
1.25结果如图
”访问允许用户“Mary图1.25
1.26所示。
4)使用“Mary”连接服务器,连接成功,如图(
”登录允许用户“Mary1.26图”Mary“删除登录名输入下面语句,登录界面,”Administrator“切换到)5(.
DROPLOGINMary
如图1.27所示。
Mary”登录图1.27允许用户“1.2.4使用SQLServer身份验证连接到SQLServer
了解使用SQLServer身份验证连接到SQLServer(p12)
1.3管理对SQLServer数据库的访问
在授权访问SQLServer实例后,需要对特定的数据库进行授权访问。
可以
通过创建数据库用户并且将数据库登录名和数据库用户映射来授权对数据库的访问。
每个登录名都在它要访问的数据库中映射了一个数据库用户。
1.4对数据库访问进行授权
1.4.1创建数据库用户
实验创建登录名并与数据库用户进行映射,理解映射的含义(p14)。
(1)实验创建登录名
CREATELOGINPeterWITHPASSWORD='111';
)实验登录名并与数据库用户2(.
USEAdventureWorks;
GO
CREATEUSERPeterFORLOGINPeter;
指导:
使用登录名Peter连接到服务器,此时用户Peter只能连接到数据库AdventureWorks,还不能访问其中的表。
1.4.2管理数据库用户
1.实验检查当前的登录名是否可以登录到某个数据库
SELECTHAS_DBACCESS('AdventureWorks');
指导:
如果用户可以访问该数据库,则HAS_DBACCESS返回1。
如果用户不能访问该数据库,则返回0。
如果该数据库名无效,则返回NULL。
2.实验撤销用户的CONNECT权限
USEAdventureWorks;
GO
REVOKECONNECTTOPeter;
3.实验删除一个数据库用户
USEAdventureWorks;
GO
DROPUSERPeter;
1.4.3管理孤立用户
1.讲解什么是孤立用户(p15)
2.实验获取孤立用户的信息
1.4.4启用Guest用户
1.实验启用Guest用户
USEAdventureWorks;
GO
GRANTCONNECTTOGuest;
指导:
通过建一个没有连接到AdventureWorks数据库的登录账户,比较启用GuestGRANTselectTOt2;
账户前后的区别。
或者用语句对其他数据库用户授权,如:
1.5授予数据库权限
一旦创建了数据库用户,随之而来的是管理这些用户权限。
可以通过将用户加入一个数据库角色或者为其赋予更细的权限来管理用户。
1.5.1创建数据库角色
1.讲解默认的数据库角色(p16)
2.演示:
创建一个数据库角色,并在这个新角色中添加数据库用户
(1)在“Administrator”登录界面,输入下面语句创建登录名“testrole”并映射到数据库用户testrole:
CREATELOGINtestroleWITHPASSWORD='11';
USEAdventureWorks;
GO
CREATEUSERtestroleFORLOGINtestrole;
执行,如图1.28所示。
创建登录名并映射到数据库用户图1.28”“发现无法查看AdventureWork展开数据库目录,”“2()使用testrole登录,1.29数据库下的用户表,如图所示。
验证登录名的访问权限图1.29
”登录界面的查询窗口输入下列语句将数据库用户在“Administrator(3)
db_owner”:
testrole“”添加到默认的数据库角色“
USEAdventureWorks;
EXECUTEsp_addrolemember'db_owner','testrole';
”数据”登录界面,展开数据库目录,可以看到“testroleAdventureWork“刷新
1.30库下的用户表,如图所示。
验证登录名的访问权限图1.30
指导:
此时用户“testrole”作为数据库的所有者,拥有对数据库的完全控制权限。
(4)在“Administrator”登录界面的查询窗口输入下列语句将数据库用户“testrole”从默认的数据库角色“db_owner”中删除:
USEAdventureWorks;
EXECUTEsp_droprolemember'db_owner','testrole';
所示。
1.31执行,如图
”db_owner从数据库角色“”中删除“testrole图1.31
”登录界面的查询窗口输入下列语句创建一个数据在“Administrator(5):
库角色“testselect”USEAdventureWorks;
GO
CREATEROLEtestselect;
所示。
1.32执行,如图
testselect”1.32图创建数据库角色“指导:
此时创建的“testselect”对数据库没有任何权限。
(6)打开“AdventureWorks”数据库属性窗口,添加数据库角色“testselect”,的查询权限。
如图1.33所示。
”查询权限添加“图1.33testselect指导:
也可通过下列语句添加“testselect”查询权限:
useAdventureWorks
GO
GRANTSELECTTOtestselect
GO
(7)在“Administrator”登录界面的查询窗口输入下列语句将数据库用户“testrole”添加到数据库角色“testselect”:
EXECUTEsp_addrolemember'testselect','testrole';
执行,刷新“testrole”登录界面,展开数据库目录,可以看到“AdventureWork”数据库下的用户表,如图1.34所示。
testselect”查询权限图1.34验证“
1.5.2管理数据库角色
(1)通过系统函数IS_MEMBER来判断当前数据库用户是否属于某个数据库角色:
USEAdventureWorks;
GO
SELECTIS_MEMBER('db_owner');
执行,如图1.35所示。
图1.35判断用户是否属于某个数据库角色指导:
db_owner”的成员。
如果结果中的值是“0”,表示当前的登录用户不是“
,并删除数据””数据库角色中删除数据库用户“
(2)从“testroletestselect:
”库角色“testselectAdventureWorks;USE
GO
'testrole';'testselect',EXECUTEsp_droprolemember
testselect;
DROPROLE
所示。
1.36执行,如图
图1.36删除数据库角色“testselect”:
指导:
SQLServer2005不允许删除含有成员的角色。
在删除一个数据库角色之前,必须移除这个角色下的所有用户。
1.5.3授予小粒度的数据库权限
1.讲解什么是小粒度的数据库权限(p18)
2.实验为数据库用户授予小粒度权限
(1)建立登录名“backup1”,映射到“AdventureWorks”数据库,但只拥所示。
1.37”连接服务器,如图backup1权限,使用“Public有.
”连接服务器使用“图1.37backup1”数据库单击鼠标右键,AdventureWorks2)展开对象资源管理器,在“(”-AdventureWork,打开“备份数据库“备份”“任务”在弹出的快捷菜单中选择——所示。
窗口,如图1.38
图1.38“备份数据库-AdventureWork”窗口
(3)单击“确定”按钮,弹出错误提示框,如图1.39所示。
错误提示框图1.39
Administrator”登录界面,输入下面语句,授予登录名4()切换到“AdventureWork”权限:
“backup1”备份数据库“USEAdventureWorks;
GO
GRANTBACKUPDATABASETObackup1;
1.40所示。
执行后,如图
”备份权限1.40授予“backup1图
在器,管对开象资源理展面录”“换5()切到backup1登界,”数据库单击鼠标右键,在弹出的快捷菜单中选择“任务”—AdventureWorks“”窗口,单击“确定”按钮执行,,打开“备份数据库-AdventureWork—“备份”所示。
1.41备份成功,如图
1.41备份成功图指导:
而不是单为了减少维护权限结构的工作量,应该只为数据库角色授予权限,
独的数据库用户。
1.6管理应用程序角色
创建应用程序角色1.6.1
了解创建应用程序角色
1.6.2使用应用程序角色了解使用应用程序角色
删除应用程序角色1.6.3
了解删除应用程序角色
1.7管理对架构的访问
1.讲解架构的概念
2.演示创建、删除和查询架构
(1)建立登录名“sch”,映射到“AdventureWorks”数据库,但只拥有Public权限。
创建一个架构“sch”,,Accounting.Invoices,所有者为并在架构下建表AccountingUSEAdventureWorks;
GO
CREATESCHEMAAccounting
AUTHORIZATIONsch;
GO
CREATETABLEAccounting.Invoices(
InvoiceIDint,
InvoiceDatesmalldatetime,
ClientIDint);
GO
执行,结果如图1.42所示。
1.42创建一个架构图:
)使用“sch”登录,并向表2(中插入一条记录Accounting.InvoicesINSERTINTOAccounting.Invoices
ALUES(101,getdate(),102);V
所示。
执行,结果如图1.43
向表图1.43中插入一条记录Accounting.Invoices
(3)授予登录名“test”查询表Accounting.Invoices的权限,
GRANTSELECTONAccounting.Invoices
TOtest;
执行,结果如图1.44所示。
”查询权限“test图1.44授予
,执行查询语句查询表test(4)以登录名“”登录,操Accounting.Invoices1.45如图所示。
作成功,
查询操作成功图1.45
1.46)输入插入语句执行,拒绝插入。
如图所示。
(5
拒绝插入语句图1.46”输入下AdventureWorks,将新建查询上下文切换到“)以管理员登录6(.
面的查询语句:
USEAdventureWorks
GO
SELECTs.nameAS'Schema',
o.nameAS'Object'
FROMsys.schemass
INNERJOINsys.objectso
ONs.schema_id=o.schema_id
WHEREs.name='Accounting';
GO
执行,结果如图1.47所示。
”1.47查询架构“Accounting图
7)输入删除架构和表的语句(:
DROPSCHEMAAccounting;
DROPTABLEAccounting.Invoices;
1.48执行,结果如图所示。
1.48删除架构和表图指导:
删除架构前必须删除架构下的对象。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 安全 基本原则