首页计算机计算机软件数据库原理与应用(SQLServer版) 09 第9章 数据库的安全性.pptx

09 第9章 数据库的安全性.pptx

页数:103页文件大小:489.3 KB来源: 数据库原理与应用(SQLServer版)ppt课件

本课件从数据库共享带来的安全问题出发,讲解计算机系统的安全机制与 SQL Server 的身份验证模式,演示登录帐号、用户帐号、服务器角色与数据库角色的管理,以及权限的授予、撤销与拒绝操作。

第9章数据库的安全性封面,涵盖登录帐号、用户帐号、角色与权限管理
问题的提出,涵盖数据库的一大特点是数据可以共享、数据共享必然带来数据库的安全性问与数据库系统中的数据共享不能是无条等要点
计算机安全性机制,说明数据安全性是指保护数据库以防止非
查看本课件的文字版(共 103 页,供检索与复制)

第1页:第9章数据库的安全性

第9章数据库的安全性

第2页:问题的提出

问题的提出

数据库的一大特点
数据可以共享
数据库系统中的数据共享不能
无条件的共享例:军事秘密、国家机密、新产品实验数据、市场需求分析、市场营销策略、销售计划、客户档案、医疗档案、银行储蓄数据数据库安全性

第3页:计算机安全性机制

计算机安全性机制

  • 数据安全性是指保护数据库以防止非法使用造成的数据泄露、更改或破坏。安全性问题不是数据库系统所独有的,所有计算机系统都有这个问题。只是在数据库系统中大量数据集中存放,且为许多最终用户直接共享,因而其安全性问题尤为突出。

第4页:计算机系统安全模型

计算机系统安全模型

计算机系统中,安全措施是一级一级层层设置计算机系统的安全模型

本页以图示呈现,正文文字较少,建议对照原课件图片查看。

第5页:安全模型中、用户标识与鉴定解决

安全模型中、用户标识与鉴定解决

  • 在安全模型中,用户标识与鉴定是系统提供的最外层安全保护措施。只有在DBMS成功注册了的人员才是该数据库的用户,才可以访问数据库。
  • 用户标识与鉴定解决了检查用户是否合法的问题,但是合法用户的存取权限不尽相同。数据安全性的核心问题是DBMS的存取控制机制,确保进入系统的用户只能进行合法的操作。

第6页:数据库中的用户按其操作权限可分为三类

数据库中的用户按其操作权限可分为三类

数据库系统管理员
在数据库中具有全部的权限,当用户以系统管理员身份登录进行操作时,系统不对其权限进行检查。
数据库对象拥有者
创建数据库对象的用户即为数据库对象的拥有者。数据库对象拥有者对其所拥有的对象具有一切权限。
普通用户
只具有授予用户的对数据库中数据的增加、删除、更改和查询的权限。

第7页:SQL Server 2005的安全策略

SQL Server 2005的安全策略

  • SQL Server 2005提供的安全策略可以划分为以下4个等级:
    • 客户机操作系统的安全性
    • SQL Server的登录安全性
    • 数据库的安全性
    • 数据库对象的安全性

第8页:SQL Server认证模式

SQL Server认证模式

  • 如果用户要访问SQL Server时,需要经过两个认证过程:一是身份验证,只验证用户是否有连接到SQL Server数据库服务器的资格;二是权限验证,检验用户是否有对指定数据库的访问权,并且当用户操作数据库中的数据或对象时验证用户是否有相应的操作权限。

第9页:两种验证模式

两种验证模式

  • 在验证阶段,系统对登录用户进行验证。
  • SQL Server和Windows是结合在一起的,因此,产生了两种验证模式:Windows身份验证模式和混合验证模式。

第10页:Windows身份验证模式

Windows身份验证模式

  • 在Windows身份验证模式下,用户必须首先登录到Windows中,然后再登录到SQLServer。而且用户登录到SQL Server时,只需选择Windows身份验证模式,而无需再提供登录帐号和密码,系统会从用户登录到Windows时提供的用户名和密码中查找当前用户的登录信息,以判断该用户是否是SQL Server的合法用户。

第11页:注意:登录验证模式

注意:登录验证模式

注意:①如果用户在登录SQL Server时未给出用户登录名,则SQL Server将使用Windows验证模式。②如果SQL Server被设置为Windows验证模式,则用户在登录时即使输入一个具体的登录名时,SQL Server也将忽略该登录名。

第12页:混合验证模式

混合验证模式

  • 混合验证模式表示SQL Server接受Windows授权用户和SQL Server授权用户。在该认证模式下,用户在连接SQL Server时必须提供登录名和密码,然后系统确定用户帐号在Winwods操作系统下是否可信,对于可信连接用户,系统直接采用Windows身份验证机制,否则采用SQL Server验证机制。
  • SQL Server验证机制是系统自己执行验证处理,它通过与系统表syslogins中信息比较,检查输入的登录帐号是否已存在且密码是否正确。如果匹配,则表明登录成功,否则身份验证失败,用户将收到错误信息。

第13页:注意:Windows操作系统

注意:Windows操作系统

  • Windows操作系统的用户既可以使用Windows认证,也可以使用SQL Server验证。
  • 若不是Windows操作系统的用户只能使用SQLServer验证。

第14页:验证模式的设置

验证模式的设置

步骤1
打开“SQL Server ManagementStudio”集成环境,在“对象资源管理器”窗口中用鼠标右击服务器,在弹出的快捷菜单中选择【属性】选项,打开【服务器属性】对话框;
步骤2
在【服务器属性】对话框中,选择【安全性】选项。

第15页:

第16页:登录帐号和用户帐号的管理

登录帐号和用户帐号的管理

  • 登录服务器的登录帐号,也称登录名;
  • 操作数据库的用户帐号。
  • 登录帐号是指能登录到SQL Server服务器的帐号,属于服务器的层面,本身并不能让用户访问服务器中的数据库。
  • 如果登录服务器的用户要访问数据库时必须拥有用户帐号。

第17页:安装SQL Ser、其中sa是超级管理员

安装SQL Ser、其中sa是超级管理员

  • 在安装SQL Server后,系统默认创建两个登录帐号,即sa帐号和服务器帐号。
  • 其中sa是超级管理员帐号,允许SQL Server的系统管理员登录。
  • 尽管如此,在实际的使用过程中还需要用户根据应用需要对登录帐户进行必要的管理。

第18页:创建登录帐号

创建登录帐号

  • (1)利用“对象资源管理器”创建登录帐号
  • (2)利用T-SQL语句创建登录帐号

第19页:利用“对象资源管理器”创建登录帐号

利用“对象资源管理器”创建登录帐号

步骤1
启动“Microsoft SQL ServerManagement Studio”集成环境,在“对象资源管理器”中,逐级展开“服务器”
步骤2
右击【登录名】选项,在弹出的快捷菜单中选择【新建登录名】选项,打开【登录名—新建】对话框。

第20页:

第21页:步骤3、步骤4

步骤3、步骤4

步骤3
在【登录名】右侧的文本框中输入要创建的登录帐号(如stu_admin),若选择“Windows身份验证”,可以通过单击右侧的【搜索】按钮来查找并添加Windows操作系统中的用户名称;若选择“SQLServer身份验证”,则需在【密码】和【确认密码】文本框中输入登录时采用的密码。
步骤4
在【默认数据库】下拉列表中选择该登录帐号对应的默认使用的数据库,例如选择“TeachingData”;在【默认语言】下拉列表中选择登录后使用的默认语言,一般采用默认值。然后,单击【确定】按钮即可新建一个登录帐号。

第22页:利用:T-SQL语句创建登录帐

利用:T-SQL语句创建登录帐

(2)利用T-SQL语句创建登录帐号CREATE LOGINlogin_name{ WITH< PASSWORD = 'password',[ < SID =sid| DEFAULT_DATABASE =database| DEFAULT_LANGUAGE =language> [, …]]>| FROM< WINDOWS[WITH<DEFAULT_DATABASE=database |DEFAULT_LANGUAGE=language>[, …] >}

第23页:参数说明

参数说明

login_name
指定创建的登录帐号。如果从Windows域帐户映射login_name,则login_name必须用方括号[ ]括起来。
password
仅适用于SQL Server登录帐号,指定正在创建的登录帐号的密码。
sid
仅适用于SQL Server登录帐号。指定新SQLServer登录帐号的GUID。如果未选择此选项,则SQL Server将自动指派GUID。
database
指定将指派给登录帐号的默认数据库,若此项缺省,默认数据库将设置为master。
language
指定将指派给登录帐号的默认语言。若此选项缺省,则默认语言将设置为服务器的当前默认语言。
WINDOWS
指定将登录帐号映射到Windows登录名。

第24页:例1:SQL Server服务器

例1:SQL Server服务器

  • 在SQL Server服务器上,创建stu_admin登录帐号,密码为123的,默认数据库为teachingData。CREATE LOGIN stu_adminWITH PASSWORD = '123' , DEFAULT_DATABASE= TeachingData

第25页:例2:从Windows域帐户创建登录

例2:从Windows域帐户创建登录

例2,从Windows域帐户创建[NT AUTHORITY\LOCALSERVICE]登录名。CREATE LOGIN [NT AUTHORITY\LOCALSERVICE] FROM WINDOWS;

第26页:注意:避免使用旧存储过程

注意:避免使用旧存储过程

  • 虽然SQL Server 2005也提供了系统存储过程sp_grantlogin和sp_addlogin创建登录帐号,但由于后续的SQL Server版本将取消此项功能。因此,应避免在新的开发工作中使用该功能。

第27页:创建数据库的用户帐号

创建数据库的用户帐号

  • (1)利用“对象资源管理器”创建用户帐号
  • (2)利用T-SQL语句创建数据库的用户帐号

第28页:利用“对象资源管理器”创建用户帐号

利用“对象资源管理器”创建用户帐号

  • 现以在“TeachingData”数据库中,创建一个stu-_admin登录帐号下的“U1”用户,具体操作步骤为:
  • 步骤1:启动“Microsoft SQL ServerManagement Studio”管理器,在“对象资源管理器”窗口逐级展开“服务器”
  • 【数据库】
  • “TeachingData”
  • 【安全性】
  • 【用户】。
  • 步骤2:在【用户】项右击鼠标,在弹出的快捷菜单中选择【新建用户】选项,打开【数据库用户】对话框,

第29页:

第30页:步骤3、步骤4、步骤5

步骤3、步骤4、步骤5

步骤3
在【用户名】右侧文本框中输入新建的用户名U1;在【登录名】文本框中直接输入已存在的登录帐号stu_admin,或单击【登录名】文本框右侧的【…】按钮,选择登录帐号stu-_admin。
步骤4
在【此用户拥有的框架】列表框中选择拥有的框架;在【数据库角色成员身份】列表框中选择新建用户应该属于的数据库成员角色。
步骤5
单击【确定】按钮即可完成用户帐号的创建。

第31页:利用T-SQL语句创建数据库的用户帐号

利用T-SQL语句创建数据库的用户帐号

(2)利用T-SQL语句创建数据库的用户帐号 向当前数据库添加新的用户帐号,也可使用CREATE USER语句来实现。其语法格式为:CREATE USERuser_name[ { { FOR | FROM }{ LOGINlogin_name}| WITHOUT LOGIN ]

第32页:CREATE USER参数说明

CREATE USER参数说明

user_name
指定在此数据库中用于识别该用户的名称。
login_name
指定要创建数据库用户帐号的SQL Server登录帐号。login_name必须是服务器中有效的登录帐号。
WITHOUT LOGIN
指定不应将用户映射到现有登录帐号。

第33页:例3:创建用户帐号U1

例3:创建用户帐号U1

例3, 在TeachingData数据库中为登录帐号stu_admin创建用户帐号,并取名为U1。USE TeachingDataCREATE USER U1 FOR LOGIN stu_admin

第34页:注意:CREATE USER的限制

注意:CREATE USER的限制

  • (1)如果省略FOR LOGIN,则新的数据库用户将被映射到同名的SQL Server登录名。
  • (2)不能使用CREATE USER创建guest用户,因为每个数据库中均已存在guest用户。可以通过授予guest用户CONNECT权限来启用该用户。

第35页:管理登录帐号和用

管理登录帐号和用

3、管理登录帐号和用户帐号利用“对象资源管理器”管理利用T-SQL语句管理

第36页:利用“对象资源管理器”管理登录帐户

利用“对象资源管理器”管理登录帐户

查看
启动“Microsoft SQL ServerManagement Studio”管理器,在“对象资源管理器”窗口逐级展开“服务器”
修改属性
在对象资源管理器中右击需要修改帐号属性的登录名。
删除
右击登录名,选择【删除】命令。

第37页:利用“对象资源管理器”查看和删除用户帐号

利用“对象资源管理器”查看和删除用户帐号

  • 查看:启动“Microsoft SQL ServerManagement Studio”管理器,在“对象资源管理器”窗口逐级展开“服务器”
  • 【数据库】
  • 【用户数据库】(如TeachingData)
  • 【安全性】
  • 【用户】。即可看到当前数据库的所有用户帐号。
  • 步骤2:右击欲删除的用户名,在弹出的快捷菜单中选择【删除】选项,在打开的【删除对象】对话框中单击【确定】按钮即可。

第38页:用sp_helplogins查看登录

用sp_helplogins查看登录

  • 使用sp_helplogins系统存储过程可以查看指定的登录帐号信息和相关用户帐号的信息。其语法格式为:sp_helplogins['login_name']
  • 参数说明:
    • login_name:指定要查看的登录名。login_name的数据类型为sysname,默认值为NULL。如果指定该参数,则login_name必须存在。如果未指定login,则返回当前数据库的所有登录帐号的信息。

第39页:说明:该语句的结果集中将返回

说明:该语句的结果集中将返回

  • 在该语句的结果集中将返回两个报告,第一个报告包含指定的登录帐号信息,第二个报告包含与登录帐号相关联的用户帐号信息。

第40页:利用:T-SQL语句修改服务器

利用:T-SQL语句修改服务器

利用T-SQL语句修改服务器的登录帐号格式:ALTER LOGINlogin_name{ENABLE | DISABLE | WITH<PASSWORD = 'password' [ OLD_PASSWORD ='oldpassword' ]| DEFAULT_DATABASE =database| DEFAULT_LANGUAGE =language| NAME =login_name> [ ,... ]}

第41页:参数说明

参数说明

login_name
指定正在更改的SQL Server登录帐号。
password
指定正在更改的登录帐号的密码,仅适用于SQL Server登录帐号。
oldpassword
要指派新密码的登录帐号的当前密码,仅适用于SQL Server登录帐号。
database
指定将指派给登录帐号的默认数据库。
language
指定将指派给登录帐号的默认语言。
login_name
正在重命名的登录帐号的新名称。SQL Server登录的新名称不能包含反斜杠字符(\)。

第42页:例4:禁用stu_admin登录帐

例4:禁用stu_admin登录帐

  • 禁用stu_admin登录帐号。
  • ALTER LOGIN stu_admin DISABLE

第43页:例5:对stu_admin登录帐号

例5:对stu_admin登录帐号

  • 对stu_admin登录帐号重新启用后,将帐号的登录密码更改为111。ALTER LOGIN stu_admin ENABLEALTER LOGIN stu_admin WITHPASSWORD = '111'

第44页:例6:将stu_admin登录帐号称

例6:将stu_admin登录帐号称

例6,将stu_admin登录帐号称更改为user1。ALTER LOGIN stu_admin WITH NAME = user1

第45页:利用T-SQL语句删除服务器的登录帐号

利用T-SQL语句删除服务器的登录帐号

  • 语法格式:DROP LOGINlogin_name
  • 其中,login_name是指定要删除的登录帐号。

第46页:例7:将user1登录帐号删除

例7:将user1登录帐号删除

  • 将user1登录帐号删除。DROP LOGIN user1
  • 注意:
    • 不能删除正在使用的登录名,也不能删除拥有任何安全对象、服务器级别对象或SQL代理作业的登录名。

第47页:利用T-SQL语句查看数据库的用户帐号

利用T-SQL语句查看数据库的用户帐号

  • 使用sp_helpuser系统存储过程可以查看有关当前数据库中的用户帐号信息。其语法格式为:sp_helpuser[security_account]
  • 参数说明:security_account:当前数据库中数据库用户帐号或数据库角色的名称。
    • security_account必须存在于当前数据库中。
    • security_account的数据类型为sysname,默认值为NULL。如果未指定security_account,则sp_helpuser返回当前数据库主体的信息。

第48页:利用T-SQL语句修改数据库的用户帐号

利用T-SQL语句修改数据库的用户帐号

语法格式
ALTER USERuser_nameWITH < NAME =new_user_name| DEFAULT_SCHEMA =schema_name> [ ,...n ]
参数说明
user_name:指定在此数据库中用于识别该用户的名称。new_user_name:指定此用户的新名称,且不存在于在当前数据库。schema_name:指定服务器在解析此用户的对象名称时将搜索的第一个架构。

第49页:例8:更改用户U1名称

例8:更改用户U1名称

  • 将数据库用户U1的名称更改为user_stu。ALTER USER U1 WITH NAME = user_stu

第50页:利用T-SQL语句删除数据库的用户帐号

利用T-SQL语句删除数据库的用户帐号

  • 语法格式:DROP USERuser_name

第51页:权限管理

权限管理

  • 当用户成为指定数据库中的合法用户之后,除了具有一些系统表的查询权之外,对数据库中的数据和对象并不具有任何操作权限,因此,接下来就需要为数据库中的用户帐号授予数据库数据及对象的操作权限。

第52页:SQL Server权限分类

SQL Server权限分类

  • 对象权限
  • 语句权限

第53页:对象权限

对象权限

  • 对象权限是针对表、视图和存储过程而言的,是指用户对数据库对象中的数据能够执行哪些操作。
  • 例如当用户U1要成功修改StuInfo表中的数据,前提是用户U1已获得StuInfo表的UPDATE权限。

第54页:对象权限

对象权限

表描述权限可以查询表、视图中的数据SELECT可以向表中插入行INSERT可以在表中修改表中的数据UPDATE可以从表中删除行DELETE可以执行存储过程EXECUTE可以修改表的属性ALTER可以通过外键引用其他表REFERENCES可以取得表的所有权TAKE OWNERSHIP

第55页:表与视图的权限适用范围

表与视图的权限适用范围

  • 其中SELECT、INSERT、UPDATE和DELETE权限可以应用到整个表或视图中;
  • SELECT和UPDATE权限还可以有选择地应用到表或视图中的指定列上。

第56页:语句权限

语句权限

语句权限是指用户
否具有权限来执行某一语句,这些语句通常是一些具有管理性的操作,例如创建表。
这类语句的特点
在语句执行前操作的对象并不存在于数据库中,所以将其归为语句权限。

第57页:语句权限

语句权限

表描述权限创建数据库CREATE DATEBASE创建表CREATE TABLE创建视图CREATE VIEW创建存储过程CREATE PROCEDURE创建规则CREATE RULE创建默认CREATE DEFAULT备份数据库BACKUP DATABASE备份事务日志BACKUP LOG

第58页:权限管理操作

权限管理操作

  • 授予
  • 收回
  • 拒绝访问

第59页:权限管理的操作方法

权限管理的操作方法

  • 利用“对象资源管理器”
  • 使用T-SQL命令语句

第60页:利用:步骤1

利用:步骤1

步骤1
启动“Microsoft SQL Server ManagementStudio”管理器,在“对象资源管理器”窗口逐级展开“服务器”
步骤2
右击要设置权限的用户帐号,在弹出的快捷菜单中选择【属性】选项,打开【数据库用户】对话框。
步骤3
在上述对话框的【选择页】中单击【安全对象】。
步骤4
单击【添加】按钮,打开【添加对象】对话框。在对话框中选取“特定对象”单选按钮。

第61页:步骤5:单击【确定】按钮

步骤5:单击【确定】按钮

,打开【选择对象】对话框。单击【对象类型】按钮选择操作的对象类型“表”,单击【浏览】按钮选择操作对象的名称“StuInfo”。

第62页:步骤6

步骤6

  • 步骤6:单击【确定】按钮后,返回到【数据库用户-安全对象】对话框,在该对话框的“授予”列中选取SELECT、UPDATE或REFERENCE权限,

第63页:

第64页:注意:设置列权限

注意:设置列权限

  • 如果只允许用户查询StuInfo表的SID和Sname两列,可以单击上图所示对话框底部的【列权限】按钮,可以进一步设置用户对其中的哪些列具有操作权限。

第65页:使用T-SQL命令语句进行权限管理

使用T-SQL命令语句进行权限管理

  • GRANT语句
  • REVOKE语句
  • DENY语句

第66页:GRANT语句

GRANT语句

(1)GRANT语句GRANT{ ALL [ PRIVILEGES ] | permission [ ,...n ] }{[ ( column [ ,...n ] ) ] ON { table_name |view_name } }| ON { table_name | view_name } [ ( column [ ,...n ] ) ]TO security_account [ ,...n ][ WITH GRANT OPTION ]

第67页:参数说明

参数说明

ALL
表示具有所有的语句权限或所有的对象权限;
permission
是指相应对象的有效权限的组合;
column
指定表、视图中要授予对其权限的列名称,且只能授予对列的SELECT、REFERENCES及UPDATE权限。列名需要使用括号( )括起来。

第68页:例9:将StuInfo表的查询权限

例9:将StuInfo表的查询权限

例9 将StuInfo表的查询权限授予用户U1。GRANT SELECT ON StuInfoTO U1 执行此操作后,stu_admin登录SQL Server后,可以对StuInfo表进行SELECT的操作,但它不能将此权限授予其他用户。

第69页:例10:授予全体用户查询权

例10:授予全体用户查询权

例10 将表ScoreInfo的查询权授予全体用户。GRANT SELECT ON ScoreInfoTO PUBLIC 执行此操作后,每个用户登录SQL Server后都可以对ScoreInfo表进行SELECT操作。

第70页:例11:将表StuInfo的插入权

例11:将表StuInfo的插入权

例11, 将表StuInfo的插入权和修改sname的权限授予用户U2。GRANT SELECT , UPDATE(Sname) ON StuInfoTO U2

第71页:例12:将表TchInfo的查询权授

例12:将表TchInfo的查询权授

例12 将表TchInfo的查询权授予用户U3,并允许它将此权限再授予其他用户。GRANT SELECT ON TchInfoTO U3WITH GRANT OPTION 执行此操作后,U3用户登录SQL Server后不仅可以对TchInfo表可以进行SELECT操作,同时还可以使用GRANT语句给其他用户授权。

第72页:REVOKE语句

REVOKE语句

(2)REVOKE语句REVOKE [ GRANT OPTION FOR ]{ [ ALL [ PRIVILEGES ] ] |permission[ ( column [ ,...n ] ) ] [ ,...n ]}{ TO | FROM }security_account [ ,...n ][ CASCADE] 参数说明: GRANT OPTION FOR:指示将撤消授予指定权限的能力。 CASCADE:指示当前正在撤消的权限也将从其他被该主体授权的主体中撤消。

第73页:例13:撤销用户的修改权

例13:撤销用户的修改权

例13 撤销用户U2在StuInfo表上sname的修改权。REVOKE UPDATE(Sname) ON StuInfoFROM U2

第74页:例14:级联撤销查询权

例14:级联撤销查询权

例14, 撤销用户U3对TchInfo表的查询权限。REVOKE SELECT ON TchInfoFROM U3CASCADE 由于前面操作中U3在获得了对TchInfo表的SELECT权限后,又将该操作权授予了U4,U4又授予了U5。 在执行上例的REVOKE语句后,将U3用户对TchInfo表的SELECT权限收回的同时,采用级联收回的方式自动收回U4和U5对TchInfo表的SELECT权限。如果省略CASCADE,系统将拒绝执行该命令。

第75页:注意:级联回收权限

注意:级联回收权限

  • 如果用户U4和U5还从其他用户那里获得了对TchInfo表的SELECT权限,执行上例的REVOKE语句后,系统只收回直接或间接从U3处获得的权限,并没有收回从其他用户处获得的权限,因此他们仍具有此权限。

第76页:DENY语句

DENY语句

  • 使用DENY语句可以拒绝对授予用户或角色的权限,防止用户通过其组或角色成员身份继承权限。其语法格式为:DENY { [ ALL [ PRIVILEGES ] ] |permission[ ( column [ ,...n ] ) ] [ ,...n ]}TOsecurity_account [ ,...n ][ CASCADE]

第77页:例15:拒绝用户查询权

例15:拒绝用户查询权

例15, 拒绝用户U1拥有ScoreInfo表的查询权限。DENY SELECT ON ScoreInfoTO U1 执行此操作后,U1用户登录SQL Server不能对ScoreInfo表进行SELECT操作,即使该用户被明确授予或继承得到对ScoreInfo表进行SELECT权限,仍然不允许执行相应的操作。

第78页:角色管理

角色管理

  • 在数据库中,为了简化对用户操作权限的管理,可以将具有相同权限的一组用户组织在一起,形成数据库中的角色(Role)。
  • 对一个角色授予、撤销和拒绝的权限也适用于该角色的任何成员。使用角色来管理数据库权限可以简化授权过程。

第79页:角色

角色

  • 角色
    • 系统预定义的固定角色
    • 用户自定义角色。

第80页:系统预定义角色

系统预定义角色

  • 固定服务器角色
  • 固定数据库角色

第81页:固定服务器角色

固定服务器角色

  • 服务器角色是负责管理和维护SQL Server的组,一般只是设置需要管理服务器的登录帐号属于服务器角色。

第82页:固定服务器角色

固定服务器角色

及权限描述权限固定服务器角色该角色可以在服务器中执行任何操作。WindowsBUILTIN\Adnimistrators组的所有成员都是sysadmin角色的成员。sysadmin管理服务器登录帐户和创建数据库的权限。securityadmin能够配置服务器的设置选项,关闭服务器serveradmin能执行某些系统存储过程,以及管理链接服务器setupadmin管理SQL Server实例中运行的进程processadmin管理磁盘文件diskadmin创建、修改和删除数据库dbcreator执行大容量数据的插入操作bulkadmin

第83页:利用对象资源管理

利用对象资源管理

步骤1
启动“Microsoft SQL Server ManagementStudio”管理器,在“对象资源管理器”窗口逐级展开“服务器”
步骤2
右击添加登录帐号的服务器角色,如sysadmin,在弹出的快捷菜单中选择【属性】选项,打开【服务器角色属性】对话框。
步骤3
单击【添加…】按钮,出现【添加成员】对话框。在该对话框中选择相应的登录帐号,如图9-10所示。单击【确定】按钮即可选定的登录添加到服务器角色中。

第84页:指定服务器角色

指定服务器角色

  • 格式sp_addsrvrolemember {login_name},role_name
  • 参数说明:
    • login_name:指定添加到服务器角色中的登录帐号。
    • role_name:指定服务器角色的名称。
    • SQL Server还提供了系统存储过程sp_dropsrvrolemember为服务器角色删除登录帐户,其语法格式为:
    • sp_dropsrvrolemember {'login_name'},'role_name'

第85页:例16:为登录帐号U1添加到固定服务

例16:为登录帐号U1添加到固定服务

  • 为登录帐号U1添加到固定服务器角色sysadmin中。sp_addsrvrolemember u1, sysadmin

第86页:固定数据库角色

固定数据库角色

  • 固定数据库角色是数据库级别上的一些预定义的角色。
  • 在创建每个数据库时,都会自动添加这些角色到新创建的数据库中,每个角色对应着相应的权限。
  • 固定的数据库角色为管理数据库一级的权限提供了方便,它的成员是来自每个数据库的用户。用户不能被添加、更改和删除固定数据库角色,但是可以将用户帐号添加到固定的数据库角色中。

第87页:固定数据库角色

固定数据库角色

(1)固定数据库角色与权限权限固定的数据库角色添加或删除Windows用户、组和SQL Server登录的访问权限db_accessadmin可以进行数据库的备份和恢复操作db_backupoperator可以查询所有用户表中的所有数据db_datareader可以添加、删除和更改所有用户表中的数据db_datawriter在数据库中运行所有数据定义语句(DDL),可以建立、删除和修改数据库对象db_ddladmin禁止查询数据库的所有用户表中的任何数据db_denydatareader禁止添加、删除和更改所有用户表中的数据db_denydatawriter在数据库中拥有全部权限db_owner可以管理数据库角色和角色成员,并管理权限db_securityadmin默认不具有任何权限,但用户可以对此角色授权public

第88页:public角色

public角色

  • public角色是一个特殊的数据库角色,每个数据库的用户都自动是public数据库角色的成员。
  • 用户无法在public角色中添加和删除成员,但是用户可以对这个角色进行授权,而其他的固定数据库角色的权限是固定的,用户不可改变。
  • 如果想让数据库的所有用户都具有某个权限,则可以将该权限授予public。同时,如果没有给用户专门授予某个对象的权限,他们就只能使用授public角色的权限。

第89页:为固定数据库角色添加用户帐号

为固定数据库角色添加用户帐号

  • 对象资源管理器
  • T-SQL命令

第90页:利用对象资源管理

利用对象资源管理

  • 步骤1:启动“Microsoft SQL Server ManagementStudio”管理器,在“对象资源管理器”窗口逐级展开“服务器”
  • 【数据库】
  • 用户数据库TeachingData
  • 【安全性】
  • 【角色】
  • 【数据库角色】,这时可以看到10个默认的数据库角色。
  • 步骤2:右击添加用户帐号的数据库角色db_owner,在弹出的快捷菜单中选择【属性】选项,打开【数据库角色属性】对话框,显示db_owner角色拥有的框架和成员。
  • 步骤3:单击【添加…】按钮,出现【选择数据库用户或角色】对话框,在此选择用户U1并单击【确定】按钮返回。
  • 步骤4:在完成用户帐号的添加后,单击【确定】按钮即可将所选用户帐号添加到db_owner数据库角色中。

第91页:sp_addrolemember用法

sp_addrolemember用法

  • 语法格式为:sp_addrolemember'role','security_account'
  • 参数说明:
    • role:当前数据库中的数据库角色的名称。role数据类型为sysname,无默认值。
    • security_account:是添加到该角色的安全用户帐户。security_account可以是数据库用户、数据库角色、Windows登录或Windows组。

第92页:用户自定义角色

用户自定义角色

  • 当为一组数据库用户在SQL Server中设置相同的一组权限时,但这些权限的集合不等同于固定数据库角色所具有的权限时,可以通过用户自定义角色来满足这一要求,轻松地管理数据库中的权限。

第93页:创建用户自定义角色

创建用户自定义角色

  • 使用对象资源管理器创建
  • 使用T-SQL语句创建

第94页:使用对象资源管理器创建用户自定义角色

使用对象资源管理器创建用户自定义角色

步骤1
启动“SQL Server Management Studio”管理器,在对象资源管理器中,逐级展开【服务器】
步骤2
右击“角色”项,在弹出的快捷菜单中选择【新建角色】命令.
步骤3
单击对话框的【常规】标签,在【角色名称】对应的文本框中输入创建的数据库角色的名称R1;在“此角色拥有的架构”列表框中也可以选择当前新创建的角色要添加到哪个固定数据库角色。
步骤4
单击对话框底部的【添加】按钮,直接为此角色添加成员用户帐号U1,返回【数据库角色】对话框后,单击【确定】按钮即可;也可以不添加成员,直接单击【确定】按钮完成角色的创建,此时创建的角色时无成员的,可以在以后的应用中添加。

第95页:

第96页:使用T-SQL语句创建用户自定义角色

使用T-SQL语句创建用户自定义角色

  • 语法格式:sp_addrole'role',['owner']
  • 参数说明:
    • role:要创建的数据库角色的名称。
    • owner:数据库角色的拥有者,默认值为dbo。

第97页:例17:创建数据库角色

例17:创建数据库角色

例17, 在TeachingData数据库中创建新的数据库角色Teacher。sp_addrole Teacher

第98页:为用户定义的角色授权

为用户定义的角色授权

步骤1
在对象资源管理器中,右击要授权的用户自定义角色的名称,在弹出的快捷菜单中选择【属性】选项;
步骤2
在出现的对话框中选择【安全对象】标签,在此界面下即可实现对角色的授权。

第99页:为用户自定义角色添加/删除成员

为用户自定义角色添加/删除成员

  • 步骤1:启动“SQL Server Management Studio”管理器,在对象资源管理器中,逐级展开【服务器】
  • 【数据库】
  • 【TeachingData】
  • 【安全性】
  • 【角色】
  • 【数据角色】;
  • 步骤2:右击要添加成员的用户自定义角色名,在弹出的快捷菜单中选择【属性】选项,在打开对话框中,单击【常规】标签界面底部的【添加】按钮,打开【选择数据库用户或角色】对话框;
  • 步骤3:在对话框中单击【浏览】按钮,打开【查找对象】对话框,
  • 步骤4:在对话框中,单击用户名左侧的复选框来确定添加和删除的用户。最后单击【确定】按钮完成操作。

第100页:使用系统存储过程来添

使用系统存储过程来添

  • 使用系统存储过程来添加删除成员与为固定数据库角色添加删除成员相同

第101页:小结:一

小结:一

  • 一、安全机制
    • 安全模型(用户、存取控制、操作系统安全保护、加密存储)
    • 操作权限(系统管理员、对象拥有者、普通用户)
  • 二、SQL Server认证模式
    • Windows身份验证模式
    • 混合验证模式。

第102页:登录帐号、权限与角色管理小结

登录帐号、权限与角色管理小结

三、登录帐号的管理 创建、修改、删除 四、权限管理 对象权限 语句权限 权限管理命令(GRANT、REVOKE、DENY) 五、角色管理 固定服务器角色(sp_addsrvrolemember,sp_dropsrvrolemember) 固定数据库角色 用户自定义角色(sp_addrole, sp_droprole)

第103页:习题:上机实验八

习题:上机实验八

  • 上机实验八
顶部目录