270 likes | 461 Views
安全性. 本章学习目标. 了解 SQL Server 2005 登录验证模式 掌握管理两类 SQL Server 2005 登录帐户的方法 掌握管理 SQL Server 2005 数据库用户的方法 了解基于角色的权限管理 掌握管理服务器角色的方法 掌握管理数据库角色的方法 掌握管理权限的方法. 概述. 第一个安全性问题 :当用户登录数据库系统时,如何确保只有合法的用户才能登录到系统中呢?这是一个最基本的安全性问题,也是数据库管理系统提供的基本功能。在 Microsoft SQL Server 2005 系统中,这个问题是通过身份验证模式和主体解决的。
E N D
本章学习目标 • 了解SQL Server 2005登录验证模式 • 掌握管理两类SQL Server 2005登录帐户的方法 • 掌握管理SQL Server 2005数据库用户的方法 • 了解基于角色的权限管理 • 掌握管理服务器角色的方法 • 掌握管理数据库角色的方法 • 掌握管理权限的方法
概述 • 第一个安全性问题:当用户登录数据库系统时,如何确保只有合法的用户才能登录到系统中呢?这是一个最基本的安全性问题,也是数据库管理系统提供的基本功能。在Microsoft SQL Server 2005系统中,这个问题是通过身份验证模式和主体解决的。 • 第二个安全性问题:当用户登录到系统中,他可以执行哪些操作、使用哪些对象和资源呢?这也是一个非常基本的安全问题,在Microsoft SQL Server 2005系统中,这个问题是通过安全对象和权限设置来实现的。 • 第三个安全性问题:数据库中的对象由谁所有?
安全性管理 • 基于SQL Server 2005本身实现的安全方案
(1)windows 系统安全 • (2)sql server服务器 • (3)sql server数据库 • (4)数据库对象
SQL Server服务器的安全体系 • 网络安全 • Windows操作系统安全 • SQL Server服务器安全 • 数据库安全 • 数据对象安全 • 物理存储介质安全
SQL Server 2005登录身份验证模式 • “Windows身份验证模式” • “SQL Server和Windows身份验证模式”。
登陆帐户 • 登陆名 • CREATE LOGIN login_name { WITH <option_list1> | FROM <sources> } • <sources> ::= WINDOWS [ WITH <windows_options> [ ,... ] ] • <option_list1> ::= PASSWORD = 'password' [ HASHED ] [ MUST_CHANGE ] [ , <option_list2> [ ,... ] ] • <option_list2> ::= DEFAULT_DATABASE = database | DEFAULT_LANGUAGE = language | CHECK_EXPIRATION = { ON | OFF} | CHECK_POLICY = { ON | OFF} • <windows_options> ::=DEFAULT_DATABASE = database|DEFAULT_LANGUAGE = language
例一 • create login te_login • with password=N'123456', • default_database=student, • default_language=简体中文, • CHECK_EXPIRATION=OFF, • CHECK_POLICY=OFF
-- • create login [hxh\123] from windows • -- • EXEC SP_ADDLOGIN 'ABC','123456'
服务器角色 • 系统管理员(sysadmin):可以在数据库引擎中执行任何活动。默认情况下,Windows BUILTIN\Administrators组(本地管理员组)的所有成员都是sysadmin固定服务器角色的成员。 • 服务器管理员(Serveradmin):可以更改服务器范围的配置选项和关闭服务器。 • 磁盘管理员(diskadmin):管理磁盘文件。 • 进程管理员(processadmin):可以终止在数据库引擎实例中运行的进程。
安全管理员(securityadmin):可以管理登录名及其属性。安全管理员(securityadmin):可以管理登录名及其属性。 • 安装管理员(setupadmin):可以添加和删除链接服务器,并可以执行某些系统存储过程。 • 数据库创建者(dbcreator):可以创建、更改、删除和还原任何数据库。 • 大容量插入操作管理者(bulkadmin):可以执行大容量插入操作。
sp_addsrvrolemember、sp_helpsrvrolememeber、sp_dropsrvrolemember等存储过程和IS_SRVROLEMEMBER函数来执行有关固定服务器角色和登录名之间关系的操作sp_addsrvrolemember、sp_helpsrvrolememeber、sp_dropsrvrolemember等存储过程和IS_SRVROLEMEMBER函数来执行有关固定服务器角色和登录名之间关系的操作
数据库用户 • CREATE USER user_name [ { FOR | FROM }{ LOGIN login_name }| WITHOUT LOGIN ] • [ WITH DEFAULT_SCHEMA = schema_name ]
添加数据库用户 • 其中的参数说明如下: • user_name:指定在此数据库中用于识别该用户的名称。user_name的长度最多是128个字符。 • LOGIN login_name:指定要创建数据库用户的SQL Server登录名。login_name必须是服务器中有效的登录名。 • WITH DEFAULT_SCHEMA = schema_name:指定服务器为此数据库用户解析对象名时将搜索的第一个架构。 • WITHOUT LOGIN:指定不应将用户映射到现有登录名。
添加数据库用户 • 注意: • 如果已忽略FOR LOGIN,则新的数据库用户将被映射到同名的SQL Server登录名。 • 如果未定义DEFAULT_SCHEMA,则数据库用户将使用dbo作为默认架构。 • 如果用户是sysadmin固定服务器角色的成员,则忽略DEFAULT_SCHEMA的值。 • 映射到SQL Server登录名不能包含反斜杠字符(\)。 • 例:在STUDENT数据库中为SQL Server用户USER1添加数据库用户,并取名为USER1,默认架构为WITH DEFAULT_SCHEMA=DB_OWNER • CREATE USER USER1 FOR LOGIN TE_LOGIN • WITH DEFAULT_SCHEMA=DB_OWNER
数据库角色 • SQL Server提供的固定数据库角色的具体含义如下: • public:维护全部默认权限。 • db_accessadmin:可以为登录帐户添加或删除访问权限。 • db_backupoperator:可以备份该数据库。 • db_datareader:可以对数据库中的任何表或视图运行SELECT语句。 • db_datawriter:可以在所有用户表中添加、删除或更改数据。
db_ddladmin:可以在数据库中运行任何数据定义语言(DDL)命令。db_ddladmin:可以在数据库中运行任何数据定义语言(DDL)命令。 • db_denydatareader:不能读取数据库内用户表中的任何数据。 • db_denydatawriter:不能添加、修改或删除数据库内用户表中的任何数据。 • db_owner:可以执行数据库的所有配置和维护活动。 • db_securityadmin:可以修改角色成员身份和管理权限。
给用户添加角色 • 给te_login赋予 dbreader的角色,然后查看效果! • 给te-login赋予dbcreator的角色,然后查看效果!
数据库对象权限 • 为STUDENT数据库新创建一个数据库用户USER2,并为其赋予插入users表的权限。 • GRANT INSERT ON [dbo].[users] TO [USER1]
特殊帐户 • Sa登陆帐户 • Guest数据库用户 • Public角色
应用程序角色 • 在sa的目录下创建应用程序角色myrole 设置密码为123456 并设置有插入users表的权限。 • 使用te_login登陆,而在te_login帐户中,尚未分配插入users表的权限. • 使用存储过程sp_setapprole来激活应用程序角色 • exec sp_setapprole 'myrole','123456' • insert users values('123','123') • 这样使得te_login具备插入users表的权限
Any Questions? If there are any outstanding questions you can ask me one-to-one after the lecture OR privately in my office.