单元1.9 数据库的安全性管理 课件(共182张PPT)-《数据库应用技术-SQL Server》同步教学(人民邮电版)

资源下载
  1. 二一教育资源

单元1.9 数据库的安全性管理 课件(共182张PPT)-《数据库应用技术-SQL Server》同步教学(人民邮电版)

资源简介

(共182张PPT)
教学单元1.9
第11章 数据库的安全性管理
案例1-11 教务管理数据库的安全性管理
数据库的安全性管理学习导航数据库的安全性管理 知识框架单元1.9数据库的安全性管理能力目标能够根据数据库的安全性需求设置登录身份验证模式能够根据数据库的安全性需求创建登录名能够根据数据库的安全性需求创建数据库用户能够根据数据库的安全性需求进行架构管理能够根据数据库的安全性需求进行权限管理能够根据数据库的安全性需求进行角色管理能够处理好维护数据库安全和为用户服务之间的关系能够阅读并理解数据库安全有关的英文单元1.9数据库的安全性管理知识目标数据库的安全性管理概述身份验证与模式配置方法登录名管理的方法数据库用户管理的方法架构管理的方法权限管理的方法角色管理的方法数据库安全有关的英文素质目标培养数据库管理员的责任心和管理潜力培养与用户的良好协调与沟通的能力单元1.9数据库的安全性管理案例1-11教务管理数据库的安全性管理根据教务管理系统的安全性需求,进行服务器登录名、数据库用户、架构、权限以及角色的管理。设置身份验证模式使用SSMS或T-SQL创建Windows登录名使用SSMS或T-SQL创建SQL Server登录名使用SSMS或T-SQL创建数据库用户使用SSMS或T-SQL创建并管理架构、权限和角色工作任务数据库的安全性管理概述一身份验证与模式配置二登录名管理三数据库用户管理四架构管理五权限管理六角色管理七8单元1.9数据库的安全性管理与建设方案保持一致安全特性延续策略改进增强DCL数据库运行控制安全机制操作系统级(Windows)网络传输级服务器级(SQL Server)数据库级数据库对象级SQL Server 2012一、数据库的安全性管理概述一、数据库的安全性管理概述Windows级的安全性建立在操作系统安全系统控制的基础上。用户使用客户机通过网络实现SQL Server服务器的访问时,首先要获得计算机操作系统的使用权。操作系统管理员或者网络管理员负责管理。1.Windows级的安全机制一、数据库的安全性管理概述网络传输级的安全性主要建立在防御黑客恶意入侵以及数据加密技术的基础上。不允许SQL Server通过Internet直接访问提供防火墙或者入侵检测系统(IDS)SQL Server 2012对关键数据进行了加密,使用AES-256加密算法来保护服务主密钥(SMK)和数据库主密钥(DMK),这是一种比早期版本中使用的3DES更新的加密算法。2.网络传输级的安全机制一、数据库的安全性管理概述SQL Server服务器级的安全性建立在控制服务器登录名和密码的基础上。采用集成Windows登录和标准SQL Server登录两种方式。用户在登录SQL Server服务器时,要提供正确的登录名和密码才能获得SQL Server的访问权限。数据库管理员负责管理与设计合理的登录方式。3.服务器级的安全机制一、数据库的安全性管理概述SQL Server数据库级的安全性建立在控制合法数据库用户的基础上。要获得访问服务器上各数据库的权利,必须创建映射到登录名的数据库用户。4.数据库级的安全机制一、数据库的安全性管理概述SQL Server数据库对象级的安全性建立在授权与检查用户对数据库对象访问的权限的基础上。用户操作数据库对象时,必须检查该用户是否具有操作该对象的权限,SQL Server将自动把该数据库对象的拥有权赋予创建该对象的拥有者。对象的拥有者可以实现该对象的安全控制。5.数据库对象级的安全机制一、数据库的安全性管理概述第一步:当用户连接服务器时,验证用户是否具有关联的登录名。第二步:当用户访问数据库时,验证用户是否映射了相应的数据库用户。第三步:当用户访问数据库的对象时,验证用户是否具相应的权限。三个验证过程单元1.9数据库的安全性管理数据库的安全性管理概述一身份验证与模式配置二登录名管理三数据库用户管理四架构管理五权限管理六角色管理七8二、身份验证与模式配置Windows用户来自于Windows的用户或组。SQL Server用户SQL Server内部创建的SQL Server登录名。两种类型的用户二、身份验证与模式配置Windows身份验证模式启用Windows身份验证并禁用SQL Server身份验证。混合身份验证模式同时启用Windows身份验证和SQL Server身份验证。两种验证模式二、身份验证与模式配置Windows身份验证运行的是操作系统的安全机制以Windows用户身份连接到服务器时,由操作系统验证用户的账户名和密码,SQL Server仅关联其相应的登录名。用户一旦通过操作系统的验证,SQL Server就不再需要其他的身份验证了。使用此模式与服务器建立的连接称为信任连接。系统默认Windows身份验证模式它利用Kerberos安全协议,通过强密码的复杂性验证提供密码策略强制,提供账户锁定支持,并且支持密码过期,比混合模式更为安全。1.Windows身份验证二、身份验证与模式配置SQL Server身份验证运行的是数据库服务器安全机制。以SQL Server用户身份连接到服务器时,必须提供SQL Server内部创建的登录名和密码,SQL Server将其与存储在系统表中的登录名和密码进行比较来进行身份验证。SQL Server登录名和密码的连接称为非信任连接。提供SQL Server身份验证只是为了向后兼容。如果必须使用SQL Server登录名以适应早期应用程序,则必须为所有SQL Server用户设置强密码。2.SQL Server身份验证二、身份验证与模式配置启动SSMS并连接到数据库引擎服务器在【对象资源管理器】窗口中,右击数据库引擎服务器节点,在快捷菜单中选择“属性”命令3.配置身份验证模式二、身份验证与模式配置选择【服务器属性】窗口—【安全性】页在“服务器身份验证”选项区域中选择需要的验证模式设置登录审核3.设置身份验证模式单元1.9数据库的安全性管理数据库的安全性管理概述一身份验证与模式配置二登录名管理三数据库用户管理四架构管理五权限管理六角色管理七8三、 登录名管理登录名是SQL Server级的安全性主体,被创建在数据库引擎服务器中。用户使用登录名连接到SQL Server服务器时,由安全系统进行身份验证。。任何一个Windows用户或者SQL Server用户要连接到数据库引擎,都必须关联一个合法的登录名。什么是登录名?三、登录名管理内置登录名1创建Windows登录名23创建SQL Server登录名修改和删除登录名4(一)内置登录名内置Windows和SQL Server登录名(一)内置登录名例如:Windows用户“Hui”是本地计算机“ZH”的Windows级主体,隶属于“Administrators”组1.SQL Server管理员的登录名名(一)内置登录名SQL Server 2012安装过程中指定的SQL Server管理员例如:计算机“ZH”上的Windows用户“Hui”被指定为SQL Server管理员SQL Server 2012的安装过程中,数据库引擎配置页,指定当前用户为SQL Server管理员。1.SQL Server管理员的登录名名(一)内置登录名SQL Server 2012安装过程中指定的SQL Server管理员SQL Server自动为其创建登录名固定服务器角色“sysadmin”的成员可以在服务器中执行任何活动1.SQL Server管理员的登录名名(一)内置登录名SQL Server 2012安装过程中指定的SQL Server管理员SQL Server自动为其创建登录名固定服务器角色“sysadmin”的成员(见11.7角色管理)可以在服务器中执行任何活动1.SQL Server管理员的登录名名(一)内置登录名SQL Server 2012安装过程中指定的SQL Server管理员SQL Server自动为其创建登录名固定服务器角色“sysadmin”的成员可以在服务器中执行任何活动展开“安全性”→“登录名”节点,右击“ZH\Hui”节点,从快捷菜单中选择“属性”命令,在【登录属性-ZH\Hui】窗口—【服务器角色】页中,也可以看到该登录名被设置为固定服务器角色“sysadmin”。1.SQL Server管理员的登录名名(一)内置登录名(一)内置登录名sa(super administrator)是内置的SQL Server系统管理员SQL Server身份验证进行连接始终作为数据库引擎中的登录名存在对SQL Server有完全的管理权限安装时默认为禁用可在【登录属性-sa】的【状态】页 中选择登录为“启用”2.SQL Server sa登录名名(一)内置登录名【登录属性-sa】窗口—【状态】页【状态】页 中选择登录为“已启用”2.sa账户的登录名(一)内置登录名【常规】页中为登录名“sa”设置强密码并可靠记忆2.sa账户的登录名(一)内置登录名为了能让SQL Server服务在Windows系统中正常的启动和运行,需要配置相应的服务账户并获取需要访问操作系统文件的权限。SQL Server安装之后系统自动创建相应服务账户的登录名,并添加为相应固定服务器角色的成员。不可删除3.服务账户的登录名名(一)内置登录名名称由“##”括起来的登录名是基于证书的SQL Server登录名,仅供内部系统使用,不应删除。例如:##MS_PolicyEventProcessingLogin####MS_PolicyTsqlExecutionLogin##4.基于证书的SQL Server登录名名三、登录名管理内置登录名1创建Windows登录名23创建SQL Server登录名修改和删除登录名4(二)创建Windows登录名Windows登录名运行的是Windows级的安全机制。如果用户使用Windows身份连接服务器,将由操作系统验证该Windows(本地或域)用户的账户名和密码,而在数据库引擎服务器上仅需要为该用户关联一个登录名案例:在本地计算机“ZH”中创建了一些Windows用户和Windows组,读者可以在Windows操作系统的【计算机管理】窗口中创建。安全性主体——Windows登录名名(二)创建Windows登录名在【计算机管理】窗口中建立新用户(二)创建Windows登录名在【计算机管理】窗口中建立组(二)创建Windows登录名在【新建组】对话框中建立组并添加成员(二)创建Windows登录名ZH本地计算机Windows用户用户密码ZH本地计算机Windows组Windows登录名默认数据库数据库用户Zhangmin●●●●●●ZH\ZhangminEDUC*ZhangminShijun●●●●●●ZH\ShijunEDUC*ShijunZhlian●●●●●●TeachersZH\TeachersEDUCZH\TeachersZpeng●●●●●●Zweishi●●●●●●Hui(本地管理员)●●●●●●AdministratorsZH\Hui(指定的SQL Server管理员)masterdbo(内置)(二)创建Windows登录名【例11-1】使用SSMS创建与Windows用户“Zhangmin”关联的登录名“ZH\Zhangmin” 。以指定SQL Server管理员用户登录计算机,启动SSMS并连接到数据库引擎服务器在【对象资源管理器】窗口中展开“安全性”节点,右击“登录名”节点从快捷菜单中选择“新建登录名”命令1.使用SSMS创建Windows登录名(二)创建Windows登录名【登录名-新建】窗口-【常规】页,选择“Windows身份验证”【登录名】文本框,输入计算机名称和Windows用户的名称“ZH\Zhangmin”等选择默认数据库为“EDUC”保持默认语言为“<默认值>”单击“确定”按钮1.使用SSMS创建Windows登录名(二)创建Windows登录名在【对象资源管理器】窗口中展开“安全性”→“登录名”节点,可以看到新建的登录名“ZH\Zhangmin”1.使用SSMS创建Windows登录名(二)创建Windows登录名切换用户,再次以Windows用户“Zhangmin”的身份启动计算机,使用SSMS连接SQL Server数据库引擎服务器,仍然会弹出【连接到服务器】失败的错误提示对话框。因为该登录名“ZH\Zhangmin”尚不是默认数据库“EDUC”的合法用户1.使用SSMS创建Windows登录名(二)创建Windows登录名Windows组“Teachers”成员1.使用SSMS创建Windows(组)登录名(二)创建Windows登录名【例11-2】创建与Windows组“Teachers”关联的登录名以指定SQL Server管理员用户登录计算机,启动SSMS并连接到数据库引擎服务器在【对象资源管理器】窗口中展开“安全性”节点,右击“登录名”节点从快捷菜单中选择“新建登录名”命令1.使用SSMS创建Windows(组)登录名(二)创建Windows登录名【登录名-新建】窗口—【常规】页选择“Windows身份验证”单击“登录名”文本框右侧的“搜索”按钮搜索Windows组注意:可直接输入,也可借助搜索1.使用SSMS创建Windows (组)登录名(二)创建Windows登录名在打开的【选择用户或组】对话框中单击“对象类型”按钮1.使用SSMS创建Windows (组)登录名(二)创建Windows登录名在【对象类型】对话框中勾选“组”复选框1.使用SSMS创建Windows (组)登录名(二)创建Windows登录名返回【选择用户或组】对话框,单击“高级”按钮1.使用SSMS创建Windows (组)登录名(二)创建Windows登录名再单击“立即查找”按钮,在列表中选择“Teachers”组,单击“确定”按钮。1.使用SSMS创建Windows (组)登录名(二)创建Windows登录名返回【选择用户或组】对话框,单击“确定”按钮。1.使用SSMS创建Windows (组)登录名(二)创建Windows登录名返回【登录名-新建】窗口,可以看到登录名为所搜索到的“ZH\Teachers”,当然也可以直接输入登录名“ZH\Teachers”,选择默认数据库EDUC保持默认语言为<默认值>1.使用SSMS创建Windows (组)登录名(二)创建Windows登录名【登录名-新建】窗口—【用户映射】页选择数据库EDUC,系统自动创建与登录名同名的数据库用户“ZH\Teachers”单击“确定”按钮注意:可以在此创建与登录名同名的数据库用户1.使用SSMS创建Windows (组)登录名(二)创建Windows登录名在【对象资源管理器】窗口中展开“安全性”→“登录名”节点,可以看到新建的登录名“ZH\Teachers”1.使用SSMS创建Windows(组)登录名(二)创建Windows登录名“数据库”→EDUC→“安全性”→“用户”可见新建数据库用户注意:此数据库用户尚无任何权限1.使用SSMS创建Windows (组)登录名(二)创建Windows登录名切换用户,分别以Windows组“Teachers”的成员“Zhlian”“Zpeng”和“Zweishi”的身份启动计算机,使用SSMS连接SQL Server数据库引擎服务器,即可实现使用Windows身份验证连接到SQL Server实例。1.使用SSMS创建Windows (组)登录名(二)创建Windows登录名连接成功之后,在【对象资源管理器】窗口中展开“数据库”→“EDUC”→“表”节点,发现只能看到“系统表”和“File Tables”而不能看到用户表。1.使用SSMS创建Windows (组)登录名(二)创建Windows登录名右击“表”节点,从快捷菜单中选择“新建表”命令,也会弹出错误提示对话框,提示该用户没有CREATE TABLE(新建表)的权限,1.使用SSMS创建Windows (组)登录名(二)创建Windows登录名语法CREATE LOGIN域名\登录名FROM WINDOWSWITHDEFAULT_DATABASE=默认数据库名,DEFAULT_LANGUAGE=[简体中文]|……2.使用T-SQL创建Windows登录名(二)创建Windows登录名【例11-3】创建与Windows用户“Shijun”关联的登录名“ZH\Shijun”,默认数据库为“EDUC”,默认数据库语言为“简体中文”。代码:CREATE LOGIN [ZH\Shijun]--方括号界定不规则标识符“\”FROM WINDOWSWITH DEFAULT_DATABASE=EDUC, --默认数据库DEFAULT_LANGUAGE=[简体中文] --默认语言2.使用T-SQL创建Windows登录名(二)创建Windows登录名执行以上语句即可创建登录名“ZH\Shijun”2.使用T-SQL创建Windows登录名三、登录名管理内置登录名1创建Windows登录名23创建SQL Server登录名修改和删除登录名4(三)创建SQL Server登录名SQL Server登录名密码默认数据库数据库用户Cuili(管理人员)●●●●●●EDUCCuili(Reader、Writer)Zhaochg(学生)●●●●●●EDUC*ZhaochgChengp(学生)●●●●●●EDUCWuqj(学生)●●●●●●*Wuqjsa(内置SQL Server管理员)●●●●●●masterdbo(内置,无限制访问数据库)(三)创建SQL Server登录名【例11-4】为方便某系管理人员查看和管理本系学生的学习情况创建一个使用SQL Server身份验证的登录名“Cuili”,密码为“●●●●●●”默认数据库为“EDUC”。为登录名“CuiLi”映射数据库用户“Cuili”,并赋予对数据库的读写权限,以使其能够对数据库“EDUC”进行读写访问。1.使用SSMS创建SQL Server登录名(三)创建SQL Server登录名操作步骤:以指定SQL Server管理员用户的身份启动计算机,使用SSMS连接到数据库引擎服务器在【对象资源管理器】窗口中展开“安全性”节点,右击“登录名”节点在弹出的快捷菜单中选择“新建登录名”命令1.使用SSMS创建SQL Server登录名(三)创建SQL Server登录名【登录名-新建】窗口—[常规]页(三)创建SQL Server登录名【登录名-新建】窗口——[服务器角色]页(三)创建SQL Server登录名【登录名-新建】窗口—[用户映射]页(三)创建SQL Server登录名查看映射了数据库用户“Cuili”的登录名“Cuili”对数据库对象的读写权限:单击【对象资源管理器】窗口的“连接”按钮,选择“数据库引擎”,在【连接到服务器】对话框中选择SQL Server身份验证,输入登录名“Cuili”和密码,单击“连接”按钮,即可连接到数据库引擎服务器。尝试访问数据库“EDUC”中的表,体会作为数据库角色“db_datareader”和“db_datawriter”成员的权限。1.使用SSMS创建SQL Server登录名(三)创建SQL Server登录名语法:CREATE LOGIN登录名--创建登录名WITHPASSWORD =密码--设置密码[,DEFAULT_DATABASE=默认数据库名][,DEFAULT_LANGUAGE=默认语言]...2.使用T-SQL创建SQL Server登录名(三)创建SQL Server登录名【例11-5】为使学生能够查看数据库“EDUC”中的学习信息,分别创建三个SQL Server用户的登录名:登录名“Zhaochg”(密码“216001”)登录名“Chengp”(密码“216119”)登录名“Wuqj”(密码“216111”)为前两个登录名设置默认数据库“EDUC”2.使用T-SQL创建SQL Server登录名(三)创建SQL Server登录名代码:CREATE LOGINZhaochg--创建登录名WITH PASSWORD=‘216001’, --设置密码DEFAULT_DATABASE=EDUC--设置默认数据库GOCREATE LOGINChengp--创建登录名WITH PASSWORD=‘216119’ --设置密码DEFAULT_DATABASE=EDUC--设置默认数据库GO2.使用T-SQL创建SQL Server登录名(三)创建SQL Server登录名代码:CREATE LOGINWuqj--创建登录名WITH PASSWORD=‘216111’ --设置密码执行结果:2.使用T-SQL创建SQL Server登录名(三)创建SQL Server登录名尝试连接在【连接到服务器】对话框中选择SQL Server身份验证,输入登录名“Wuqj”和密码“216111”,单击“连接”按钮2.使用T-SQL创建SQL Server登录名三、登录名管理内置登录名1创建Windows登录名23创建SQL Server登录名修改和删除登录名4(四)修改和删除登录名在【对象资源管理器】窗口中,右击“登录名”,从快捷菜单中选择“属性”命令,在打开的【登录属性】窗口中即可修改登录密码、默认数据库,并可以为登录名设置服务器角色、创建映射到此登录名的数据库用户等。右击“登录名”,从快捷菜单中选择 “删除”命令,即可删除此登录名。在执行此操作前应该删除所映射的数据库用户。1.使用SSMS修改和删除登录名(四)修改和删除登录名修改登录名语法:ALTER LOGIN登录名WITHPASSWORD = '密码'[OLD_PASSWORD= '旧密码']|DEFAULT_DATABASE=默认数据库名|DEFAULT_LANGUAGE=默认语言|NAME =登录名...2.使用T-SQL修改和删除登录名(四)修改和删除登录名删除登录名语法:DROP LOGIN登录名举例:DROP LOGINChengp2.使用T-SQL修改和删除登录名单元1.9数据库的安全性管理数据库的安全性管理概述一身份验证与模式配置二登录名管理三数据库用户管理四架构管理五权限管理六角色管理七8四、数据库用户管理数据库用户是数据库级的安全主体,是数据库级的安全策略登 录 名→连接→SQL Server服务器通 行 证→进入→大楼数据库用户→访问→ 数据库1、数据库2……钥 匙→打开→房间1、房间2……用户的权限→操作→表、视图、存储过程…权 限→使用→资源1、资源2……什么是数据库用户四、数据库用户管理内置数据库用户1创建数据库用户2修改和删除数据库用户3(一)内置数据库用户dbo(Database Owner):数据库的拥有者,是数据库的管理员guest:数据库的“客人”,所有非此数据库的用户INFORMATION_SCHEMA:实体,不能修改或删除sys:实体,不能修改或删除内置数据库用户(一)内置数据库用户dbo(Database Owner):数据库的拥有者,是数据库的管理员自动映射到创建该数据库的登录名所拥有和默认的架构为“dbo”展开“数据库”→“EDUC”→“安全性”→“用户”节点,右键“dbo”,在快捷菜单中选择“属性”命令内置数据库用户dbo(一)内置数据库用户dbo(Database Owner):固定数据库角色“db_owner”的成员对数据库具有全部管理权限【数据库用户-dbo】属性窗口—【成员身份】页内置数据库用户dbo(一)内置数据库用户guest:数据库的“客人”,所有非此数据库的登录名都将以“guest”的身份访问数据库并拥有“guest”所拥有的权限。对“guest”授予权限一定要慎重展开“数据库”→“EDUC”→“安全性”→“用户”节点,右键“guest”,在快捷菜单中选择“属性”命令注意到在【数据库用户-guest】属性窗口—【常规】页上,登录名用户类型不可选内置数据库用户guest(一)内置数据库用户【数据库用户-guest】属性窗口—【成员身份】页上,“guest”默认不是任何固定数据库角色的成员内置数据库用户guest四、数据库用户管理内置数据库用户1创建数据库用户2修改和删除数据库用户3(二)创建数据库用户已创建的登录名 已创建的数据库用户1.使用SSMS创建数据库用户(二)创建数据库用户【例11-6】为登录名“ZH\Zhangmin”创建数据库“EDUC”的用户“Zhangmin”操作步骤:启动SSMS并连接到数据库引擎服务器在【对象资源管理器】窗口中,展开数据库节点,再展开数据库“EDUC”→“安全性”节点右击 “用户”节点,从快捷菜单中选择“新建用户”命令1.使用SSMS创建数据库用户(二)创建数据库用户【数据库用户—新建】—【常规】页输入用户名1.使用SSMS创建数据库用户(二)创建数据库用户【数据库用户—新建】—【常规】页输入登录名(搜索)1.使用SSMS创建数据库用户(二)创建数据库用户【数据库用户—新建】—【常规】页输入登录名(搜索)1.使用SSMS创建数据库用户(二)创建数据库用户【数据库用户—新建】—【常规】页输入登录名(搜索)1.使用SSMS创建数据库用户(二)创建数据库用户【数据库用户—新建】—【安全对象】页(权限设置)1.使用SSMS创建数据库用户(二)创建数据库用户语法:CREATE USER用户名{FOR|FROM} LOGIN登录名[WITHDEFAULT_SCHEMA= [架构名]] --设置默认架构...2.使用T-SQL创建数据库用户(二)创建数据库用户【例11-7】为登录名“ZH\Shijun”“Zhaochg”“Wuqj”创建数据库“EDUC”的用户。2.使用T-SQL创建数据库用户(二)创建数据库用户代码:USE EDUCGOCREATE USER Shijun FOR LOGIN [ZH\Shijun]--为Windows用户的登录名映射数据库用户GOCREATE USER Zhaochg FOR LOGIN Zhaochg--为SQL Server用户的登录名映射数据库用户GOCREATE USER Wuqj FOR LOGIN Wuqj--为SQL Server用户的登录名映射数据库用户2.使用T-SQL创建数据库用户四、数据库用户管理内置数据库用户1创建数据库用户2修改和删除数据库用户3(三)修改和删除数据库用户在【对象资源管理器】窗口中,右击数据库用户,从快捷菜单中选择“属性”命令,在打开的【数据库用户】窗口中即可修改该数据库用户的安全对象等属性。击数据库用户,从快捷菜单中选择 “删除”命令,即可删除该数据库用户。1.使用SSMS修改和删除数据库用户(三)修改和删除数据库用户修改数据库用户语法:ALTER USER用户名WITHNAME =新用户名--重命名数据库用户|DEFAULT_SCHEMA=架构名--重新设置默认架构...2.使用T-SQL修改和删除数据库用户(三)修改和删除数据库用户删除登录名语法:DROP USER用户名2.使用T-SQL修改和删除数据库用户单元1.9数据库的安全性管理数据库的安全性管理概述一身份验证与模式配置二登录名管理三数据库用户管理四架构管理五权限管理六角色管理七8五、架构管理架构(Schema)是一组数据库对象的非重复命名空间,被数据库级别的主体(数据库用户或数据库角色)所拥有。可以将架构视为对象的容器,每个数据库对象都属于一个架构。可在数据库中创建架构、更改架构以及授予数据库用户访问架构的权限。数据库对象引用的完整限定名为:服务器.数据库.架构.对象什么是架构五、架构管理内置架构和默认架构1创建架构23修改和删除架构(一)内置架构和默认架构展开“数据库”→“EDUC”→“安全性”→“架构”节点,可以看到内置架构。内置数据库用户所拥有的架构。固定数据库角色所拥有的同名架构。例如:内置数据库用户 “dbo”,所拥有的内置架构 “dbo”1.内置架构(一)内置架构和默认架构用于确定没有使用完全限定名的数据库对象的命名。指定服务器确定对象的名称时所查找的第一个架构。可以用 “CREATE USER”和“ALTER USER”语句中的“WITH DEFAULT_SCHEMA=[架构名]”选项进行设置与修改如果选择缺省默认架构,所创建的数据库用户将用“dbo”作为它的默认架构。2.默认架构(一)内置架构和默认架构例如:在创建表“student”时没有指定默认架构,那么系统默认该表的架构是“dbo”,在其表名前自动加上“dbo”(注意不要与内置数据库用户“dbo”混淆),标识为“dbo.student”。2.默认架构(一)内置架构和默认架构服务器“ZH”上的Windows用户“Hui”为SQL Server管理员,自动关联的登录名为“ZH\Hui”以登录名“ZH\Hui”的身份创建了数据库“EDUC”,自动映射了内置数据库用户“dbo”拥有默认的内置架构“dbo”在数据库“EDUC”中所创建的数据库对象表“Student完整限定名为:ZH.EDUC.dbo.Student。在连接到该服务器“ZH”后,选择当前数据库为“EDUC”(USEEDUC),设置默认架构为“dbo”时,限定名称可以省略为:Student。数据库对象标识符五、 架构管理内置架构和默认架构1创建架构23修改和删除架构(二)创建架构【例11-8】为数据库“EDUC”的用户“Zhangmin”创建所拥有的架构“Zhang”数据库“EDUC”→“安全性”→“架构”节点,右击“架构”节点,从快捷菜单中选择“新建架构”命令1.使用SSMS创建架构(二)创建架构【例11-8】为数据库“EDUC”的用户“Zhangmin”创建所拥有的架构“Zhang”在【架构-新建】窗口中,单击“搜索”按钮,在【查找对象】对话框中选择架构所有者(数据库用户“Zhangmin”)1.使用SSMS创建架构(二)创建架构【例11-8】为数据库“EDUC”的用户“Zhangmin”创建所拥有的架构“Zhang”【架构-新建】窗口,输入架构名称“Zhang”1.使用SSMS创建架构(二)创建架构【例11-8】为数据库“EDUC”的用户“Zhangmin”创建所拥有的架构“Zhang”展开“EDUC”→“安全性”→“架构”节点,可以看到所建数据库用户“Zhang”所拥有的架构“Zhang”1.使用SSMS创建架构(二)创建架构2.使用T-SQL创建架构创建架构的基本语法如下:CREATE SCHEMA架构名AUTHORIZATION拥有者{ CREATE TABLE | CREATE VIEW |权限语句}...(二)创建架构2.使用T-SQL创建架构【例11-9】在数据库“EDUC”中,创建数据库用户“Shijun”所拥有的架构“Shi”,并在其中创建家庭住址表“Address”。对数据库用户“Zhaochg”授予对架构“Shi”的“SELECT”权限。代码如下:--创建数据库用户“Shijun”所拥有的架构“Shi”CREATE SCHEMA Shi AUTHORIZATIONShijun--在架构“Shi”中创建表CREATE TABLE Address(SID char(10) PRIMARY KEY,Snamechar(8),Addrvarchar(50) NULL)--授予用户Zhaochg对架构Shi的查询权限GRANT SELECT ON SCHEMA::Shi TOZhaochg注意:创建架构“Shi”、创建表“Address”、权限设置在一条语句中完成(二)创建架构2.使用T-SQL创建架构【例11-9】在数据库“EDUC”中,创建数据库用户“Shijun”所拥有的架构“Shi”,并在其中创建家庭住址表“Address”。对数据库用户“Zhaochg”授予对架构“Shi”的“SELECT”权限。(二)创建架构2.使用T-SQL创建架构【例11-9】在数据库“EDUC”中,创建数据库用户“Shijun”所拥有的架构“Shi”,并在其中创建家庭住址表“Address”。对数据库用户“Zhaochg”授予对架构“Shi”的“SELECT”权限。(二)创建架构2.使用T-SQL创建架构【例11-9】在数据库“EDUC”中,创建数据库用户“Shijun”所拥有的架构“Shi”,并在其中创建家庭住址表“Address”。对数据库用户“Zhaochg”授予对架构“Shi”的“SELECT”权限。五、 架构管理内置架构和默认架构1创建架构23修改和删除架构(三)修改和删除架构在架构之间传输安全对象。基本语法:ALTER SCHEMA架构名TRANSFER securable_name1.修改架构(三)修改和删除架构【例11-10】修改架构“Zhang”,将表“Address”从架构“Shi”传输到架构“Zhang”。在架构之间传输安全对象。代码:USEEDUCGOALTER SCHEMA Zhang TRANSFERShi.Address1.修改架构(三)修改和删除架构语法:DROP SCHEMA架构名2.删除架构单元1.9数据库的安全性管理数据库的安全性管理概述一身份验证与模式配置二登录名管理三数据库用户管理四架构管理五权限管理六角色管理七8六、权限管理管理权限:对服务器的管理任务、对数据库以及数据库对象的控制和操作进行相应许可权限的管理。SQL Server可以为主体(登录名、数据库用户、角色)以及架构授予对安全对象的操作权限。仅简单介绍数据库用户对数据库对象和对数据库的权限管理。什么是权限六、权限管理授予权限:允许数据库用户或角色具有某种操作权。撤销权限:删除以前在数据库内的用户或角色上授予或拒绝的权限。拒绝权限:拒绝给数据库用户授予权限以防止安全用户通过其组或角色成员继承权限。什么是数据库用户的权限管理六、权限管理对象权限管理1数据库权限管理2(一)对象权限管理为数据库用户设置权限是数据库对象级的安全策略用于控制数据库用户(或角色)对数据库对象的操作。用户的权限→操作→表、视图、存储过程…(数据库对象)权 限→使用→资源1、资源2……什么是数据库对象管理权限(一)对象权限管理数据库对象:表、视图和存储过程……对象权限:对于表的INSERT、UPDATE、DELETE和SELECT对于列的SELECT和UPDATE权限对于外码的引用REFERENCES权限对于存储过程的执行EXECUTE权限……有哪些数据库对象和权限(一)对象权限管理【例11-11】为登录名“ZH\Zhangmin”的“EDUC”数据库用户“Zhangmin”授予表“Student”“SC”和“Course”的INSERT和SELECT等操作权限。步骤:在【对象资源管理器】窗口中,展开“数据库”→“EDUC”→“安全性”→“用户”节点右击“Zhangmin”节点,从快捷菜单中选择“属性”命令1.使用SSMS管理对象权限(一)对象权限管理【数据库用户—-Zhangmin】窗口—【安全对象】页选择安全对象选择相应权限1.使用SSMS管理对象权限(一)对象权限管理授予权限的语法:GRANT对象权限名[,...n]--③授予对象权限ON {表名|视图名|存储过程名|标量函数|...}--②对指定的数据库对象TO {数据库用户名|数据库角色名}[,...n]--①为指定的数据库用户或角色[WITH GRANT OPTION]--④赋予授权权限2.使用T-SQL管理对象权限(一)对象权限管理【例11-12】为使前面例子中的学生用户“Wuqj”和“Zhaochg”能够查询“EDUC”数据库中的“Student”“Course”和“SC”表,并能够修改“SC”表中的成绩列“Scores”,试授予这些用户SELECT操作权限和UPDATE(Scores)操作权限,同时获得将此权限转授给别的用户的权限。2.使用T-SQL管理对象权限(一)对象权限管理代码:USE EDUCGRANT SELECT ON Student TO Wuqj,Zhaochg--授予用户对表Student的SELECT查询权限GRANT SELECT ON Course TO Wuqj,Zhaochg--授予用户对表Course的SELECT查询权限/****授予用户对表SC的SELECT查询权限和UPDATE更新列Scores的权限****/GRANT SELECT, UPDATE(Scores) ON SC TO Wuqj,Zhaochg WITH GRANT OPTION2.使用T-SQL管理对象权限(一)对象权限管理以登录名“Wuqj”连接到服务器2.使用T-SQL管理对象权限(一)对象权限管理可以更新“SC”表中的成绩列“Scores”2.使用T-SQL管理对象权限(一)对象权限管理撤销权限的语法:REVOKE对象权限名[,...n]--③撤销授予的对象权限ON {表名|视图名|存储过程名|标量函数|...}--②对指定的数据库对象FROM {数据库用户名|数据库角色名}[,...n]--①从指定的数据库用户或角色[RESTRICT|CASCADE]2.使用T-SQL管理对象权限(一)对象权限管理【例11-13】从数据库用户“Zhaochg”那里回收对数据库对象“SC”表的更新UPDATE(Scores)操作权限。代码:USE EDUCREVOKE UPDATE(Scores) ON SC FROM Zhaochg CASCADE2.使用T-SQL管理对象权限(一)对象权限管理拒绝权限的语法:DENY对象权限名[,...n]--③拒绝指定的对象权限ON {表名|视图名|存储过程名|标量函数|...}--②对指定的数据库对象TO {数据库用户名|数据库角色名}[,...n]--①对指定的数据库用户或角色2.使用T-SQL管理对象权限(一)对象权限管理【例11-14】对数据库对象“Course”表,拒绝数据库用户“Zhaochg”进行查询(SELECT)。代码:USE EDUCDENY SELECT ON Course TO Zhaochg2.使用T-SQL管理对象权限六、 权限管理对象权限管理1数据库权限管理2(二)数据库权限管理数据库权限管理用于控制数据库用户(或角色)对数据库的访问。数据库权限:数据库—DATABASECREATE|ALTER|DROP数据库对象—TABLE/VIEW/DEFAULT/SCHEMA/FUNCTION/PROCEDUREBACKUP DATABASE和BACKUP LOG ……有哪些数据库权限(二)数据库权限管理【例11-15】为登录名为“ZH\Zhangmin”的数据库“EDUC”的数据库用户“ZH\Zhangmin”设置数据库权限,使之可以在该数据库中创建表(CREATE TABLE),对“Student”、“Course”和“SC”表创建视图(CREATE VIEW)。说明:如果数据库用户没有数据库语句权限,在执行某些语句时会弹出错误提示有了语句权限还需要拥有一个创建对象的架构,否则也会弹出错误提示1.使用SSMS管理数据库权限(二)数据库权限管理步骤:设置默认架构在【对象资源管理器】窗口中,展开数据库“EDUC”→“安全性”→“架构”节点,右击“架构”节点,从快捷菜单中选择“新建架构”命令在【架构-新建】窗口,创建架构“Zhang”在【架构-新建】窗口中,单击“搜索”按钮,在【查找对象】对话框中选择架构所有者(数据库用户“Zhangnin”)1.使用SSMS管理数据库权限(二)数据库权限管理展开“EDUC”→“安全性”→“用户”节点,右击“用户”节点,从快捷菜单中选择“属性”命令在【数据库用户-Zhangmin】窗口中,设置数据库用户“Zhangmin”默认架构“Zhang”1.使用SSMS管理数据库权限(二)数据库权限管理在【数据库属性-EDUC】窗口中的【权限】页中设置数据库权限1.使用SSMS管理数据库权限(二)数据库权限管理在【数据库属性-EDUC】窗口中的【权限】页中设置权限1.使用SSMS管理数据库权限(二)数据库权限管理以Windows用户“Zhangmin”的身份连接到数据库引擎服务器,在查询编辑器中输入T-SQL代码如下:USE EDUCGOCREATE TABLE Teacher--CREATE TABLE权限(EID char(10) NOT NULL PRIMARY KEY,Ename char(8) NULL, Sex nchar(1) NULL,Birthdate date, Title char(8))GOCREATE VIEW SoftScores--CREATE VIEW权限AS SELECT * FROM StudentWHERE(Specialty = '软件技术')--SELECT对象权限1.使用SSMS管理数据库权限(二)数据库权限管理服务器“ZH”的Windows用户“Zhangmin”关联了登录名“ZH\Zhangmin”,使其可以连接到服务器;该登录名被映射了数据库用户“Zhangmin”,使其可以访问数据库“EDUC”;数据库用户“Zhangmin”拥有架构“Zhang”,同时又被授予对表“Student”的对象权限“SELECT”数据库用户“Zhangmin”被授予数据库权限“CREATE TABLE”和“CREATE VIEW”,使其可以在所拥有的架构中创建表和视图。安全性控制关系归纳(二)数据库权限管理授予权限的语法:GRANT数据库权限名[,...n]--②授予数据库权限TO {数据库用户名|数据库角色名}[,...n]--①为指定的数据库用户或角色【例11-16】授予“EDUC”数据库用户“Shijun”创建表的权限。代码:USEEDUCGRANT CREATE TABLE TOShijun2.使用T-SQL管理数据库权限(二)数据库权限管理撤销权限的语法:REVOKE数据库权限名[,...n]--②撤销授予的数据库权限FROM {数据库用户名|数据库角色名}[,...n]--①从指定的数据库用户或角色【例11-17】撤销数据库用户“Shijun”创建表的权限。代码:USEEDUCREVOKE CREATE TABLE FROMShijun2.使用T-SQL管理数据库权限(二)数据库权限管理拒绝为数据库用户或角色授予数据库权限的语法:DENY数据库权限名[,...n]--②拒绝指定的数据库权限TO {数据库用户名|数据库角色名}[,...n]--①对指定的数据库用户或角色【例11-18】对数据库用户“Shijun”拒绝创建表的权限。代码:USE EDUCDENY CREATE TABLE TOShijun2.使用T-SQL管理数据库权限单元1.9数据库的安全性管理数据库的安全性管理概述一身份验证与模式配置二登录名管理三数据库用户管理四架构管理五权限管理六角色管理七8七、角色管理角色(Role):角色是登录名和数据库用户的集合,是服务器级和数据库级的安全性主体。角色的作用:将一组具有相同权限的一组登录名或数据库用户组织在一起,添加为某一角色(Role)的成员,使其具有与该角色相同的身份和权限,而不必分别为他们授予这些权限,使得将多种权限授予给各个登录名或数据库用户这一复杂任务得到简化。什么是角色七、角色管理SQL Server提供以下两个级别的角色:服务器级:固定服务器角色、服务器角色。数据库级:固定数据库角色、数据库角色和应用程序角色。什么是角色(一)服务器角色管理固定服务器角色:SQL Server服务器级的二级主体,其成员可以是登录服务器的登录名。作用:每个角色对应着相应的服务器管理权限。这些固定服务器角色一般用于授权给DBA(数据库管理员)拥有某个或某些角色的DBA就会获得与相应角色对应的服务器管理权限。1.固定服务器角色(一)服务器角色管理1.固定服务器角色固定服务器角色管理权限说明sysadmin可以在服务器中执行任何活动。serveradmin可以更改服务器范围内的配置选项和关闭服务器。securityadmin可以管理登录名及其属性,管理服务器级和数据库级的访问权限,与sysadmin等效。processadmin可以终止在SQL Server实例中运行的进程。setupadmin可以使用T-SQL语句添加和删除链接服务器。bulkadmin可以运行BULK INSERT语句,从文本文件中将数据导入SQL Server。diskadmin可以管理磁盘文件,指派文件组、附加和分离数据库等等。dbcreator可以创建、更改、删除和还原任何数据库。public初始时状态时仅有VIEW ANY DATABASE(查看任意数据库)权限。每个SQL Server登录名都属于public服务器角色,如果未向某个服务器主体授予或拒绝对某个安全对象的特定权限,该登录名将继承授予该对象的public权限。(一)服务器角色管理例如:固定服务器角色“sysadmin”的成员1.固定服务器角色(一)服务器角色管理例如:登录名“ZH\Hui”为服务器角色“sysadmin”1.固定服务器角色(一)服务器角色管理例如:服务器角色“public”属性1.固定服务器角色(一)服务器角色管理例如:登录名“ZH\Zhangmin”的属性1.固定服务器角色(一)服务器角色管理【例11-19】将SQL Server登录名“ZH\Shijun”添加为固定服务器角色“dbcreator”的成员,使其协助数据库管理员完成在服务器中创建和修改数据库的任务。方法一:在固定服务器角色属性窗口中,将登录名添加为固定服务器角色的成员。2.使用SSMS为登录名分配固定服务器角色(一)服务器角色管理【例11-19】将SQL Server登录名“ZH\Shijun”添加为固定服务器角色“dbcreator”的成员,使其协助数据库管理员完成在服务器中创建和修改数据库的任务。2.使用SSMS为登录名分配固定服务器角色(一)服务器角色管理【例11-19】将SQL Server登录名“ZH\Shijun”添加为固定服务器角色“dbcreator”的成员,使其协助数据库管理员完成在服务器中创建和修改数据库的任务。方法二:在登录名属性窗口中,为登录名分配固定服务器角色。2.使用SSMS为登录名分配固定服务器角色(一)服务器角色管理【例11-19】将SQL Server登录名“ZH\Shijun”添加为固定服务器角色“dbcreator”的成员,使其协助数据库管理员完成在服务器中创建和修改数据库的任务。方法二:在登录名属性窗口中,为登录名分配固定服务器角色。2.使用SSMS为登录名分配固定服务器角色(一)服务器角色管理系统过程:sp_addsrvrolemembersp_dropsrvrolemember【例11-20】将Windows登录名“ZH\Zhangmin”添加为“diskadmin”服务器角色的成员,使Windows用户“Zhangmin”具有在服务器中分离和附加数据库的权限。代码:EXECUTEsp_addsrvrolemember'ZH\Zhangmin','diskadmin'3.使用T-SQL为登录用户分配固定服务器角色(一)服务器角色管理系统过程:sp_addsrvrolemembersp_dropsrvrolemember【例11-20】将Windows登录名“ZH\Zhangmin”添加为“diskadmin”服务器角色的成员,使Windows用户“Zhangmin”具有在服务器中分离和附加数据库的权限。代码:EXECUTEsp_addsrvrolemember'ZH\Zhangmin','diskadmin'3.使用T-SQL为登录用户分配固定服务器角色(二)数据库角色管理数据库角色数据库级的二级主体,其成员可以是数据库用户。可以使用数据库角色为一组数据库用户指定数据库访问的权限。数据库角色管理任务:创建新的数据库角色;授予权限给创建的角色;添加数据库用户为这个角色的成员。数据库角色(二)数据库角色管理固定数据库角色在创建每个数据库时都会添加这些角色到新创建的数据库中,每个角色对应着相应的权限。这些数据库角色用于授权给数据库用户,拥有某些角色的用户会获得相应的权限。在【对象资源管理器】窗口中,展开“数据库”→“目的数据库”→“安全性”→“角色”→“数据库角色”节点,即可看到固定数据库角色。1.固定数据库角色(二)数据库角色管理1.固定数据库角色数据库角色管理权限说明db_owner可以执行数据库的所有配置和维护行为,还可以删除数据库。db_securityadmin可以修改数据库角色成员并管理权限。db_accessadmin可以为Windows登录名和SQL Server登录名添加或删除数据库访问权限。db_backupoperator可以备份数据库。db_ddladmin可以执行任何DDL(数据定义语言)命令。db_datawriter可以在所有用户表中添加、删除和更新数据。db_datareader可以从所有用户表中读取所有数据。db_denydatawriter不能添加、删除和更新数据库内用户表中的任何数据。db_denydatareader不能读取数据库内用户表中的任何数据。public初始状态时对数据库没有访问权限。每个数据库用户都属于public角色,如果未向某个数据库用户授予或拒绝对安全对象的特定权限时,该用户将继承授予该对象的public角色的权限。不能将用户从public角色中移除。(二)数据库角色管理例如:【数据库角色属性-datareader】窗口,拥有的架构为“db_datareader”,角色成员为数据库用户“Cuili”1.固定数据库角色(二)数据库角色管理例如:【数据库角色属性-db_owner】窗口—【常规】页,可以看到拥有的架构为“db_owner”,角色成员为数据库用户“dbo”。1.固定数据库角色(二)数据库角色管理【例11-21】为使某系教师能够修改数据库“EDUC”的课程名称,创建新的数据库角色“TeachersRole” ,添加数据库用户成员“Shijun”和“ZH\Teachers”,分配对表“Course”的“更新(UPDATE)”“Cname”列的权限。 步骤:在【对象资源管理器】窗口中,展开“数据库”→“EDUC”→“安全性” → “角色”,右键“数据库角色”节点,快捷菜单中选择 “新建数据库角色”命令2.使用SSMS创建数据库角色(二)数据库角色管理【数据库角色-新建】-【常规】页:设置角色和添加成员2.使用SSMS创建数据库角色(二)数据库角色管理【数据库角色-新建】-【安全对象】页:授予角色权限2.使用SSMS创建数据库角色(二)数据库角色管理基本语法CREATE ROLE角色名[AUTHORIZATION拥有者]说明创建角色后,可以使用GRANT、DENY和REVOKE配置角色的数据库级别权限3.使用T-SQL创建数据库角色(二)数据库角色管理【例11-22】指定数据库用户“Cuili”为已建数据库角色“TeachersRole”的成员。 步骤:在【对象资源管理器】窗口中,展开“数据库”→“EDUC”→“安全性” → “用户”,右键“Cuili”节点从快捷菜单中选择“属性”4.使用SSMS为数据库用户分配数据库角色(二)数据库角色管理【数据库用户-Cuili】窗口-【常规】页:分配用户角色4.使用SSMS为数据库用户分配数据库角色(二)数据库角色管理【例11-23】指定数据库用户“ZH\Zhangmin”为数据库角色“TeachersRole”的成员。执行以下存储过程EXECUTE sp_addrolemember 'TeachersRole','Zhangmin'5.使用T-SQL为数据库用户分配数据库角色数据库安全性管理小结

展开更多......

收起↑

资源预览