第8章 SQL Server 安全管理
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第8 章安全管理(4课时)
主要内容:
1 安全管理概述(身份验证模式、主体和安全对象)
2 登录名管理(创建、维护等)
3 数据库用户管理(创建、维护等)
4 架构管理(创建、修改和删除等)
5 角色管理(固定角色、用户定义的数据库角色、应用程序角色)
6 权限管理(权限类型、常用对象的权限、管理权限)
8.1 安全管理概述
本章主线
安全管理是数据库管理系统一个非常重要的组成部分,是数据库中数据被合理访问和修改的基本保证。SQL Server提供了非常完善的安全管理机制(身份验证机制[authentication]和访问许可机制[permission]),包括用户登录管理和用户使用数据库对象的管理。只有使用特定的身份验证方式的用户,才能登录到系统中。只有具有一定权限的用户,才能对数据库对象执行相应的操作。
当用户登录数据库系统时,应确保只有合法的用户才能登录到系统中,这是一个基本的安全问题。SQL Server 2008系统中,通过身份验证模式和主体解决这个问题。
8.1.1 身份验证模式
身份验证是确定客户端能否连接到SQL Server的验证方式,通过登录账号和密码来实现。从客户端看,登录到SQL Server 2008系统可以通过两种身份验证:
●Windows身份验证
●SQL Server身份验证
Windows身份验证。该方式使用Windows操作系统的安全机制验证身份,只要用户能够通过Windows用户账号验证,即可连接到SQL Server而不用再进行身份验证。Windows 身份验证方式是默认的身份验证方式,比SQL Server方式更安全。这种身份验证方式下的连接是信任连接。
Windows身份验证方式下的用户账户是Windows操作系统下的用户或组,是由Windows 维护的。当然Windows下的用户或组要成为SQL Server的登录账户必须经过映射。
SQL Server身份验证方式。该方式使用SQL Server系统的安全机制验证身份。当客户端连接到服务器时必须提供登录名和密码,此种连接称为非信认连接,用户登录账户是由SQL Server维护的。
身份验证模式是SQL Server 2008系统验证客户端的方式,从服务器端看,SQL Server 服务器身份验证模式有两种:
●Windows 身份验证模式
●SQL Server和Windows 身份验证模式
通过SQL Server Management Studio工具可以查看和设置连接的服务器身份验证模式(演示),当然设置完成后,要重新启动SQL Server才能生效。
8.1.2 主体和安全对象
在权限管理中首先要理解主体与安全对象的概念。
【主体、安全对象和权限,对应哪些人、哪些资源和哪些操作,三个对象可用一个造句连接:给予<主体>对于<安全对象>的<权限>】
主体是可以请求系统资源的个体、组和过程,是可以请求SQL Server 资源的实体。例如,数据库用户是一种主体,可以按照自己的权限在数据库中执行相应的操作。
SQL Server 2008系统有多种不同的主体,不同主体之间的关系是典型的层次结构关系,位于不同层次上的主体其在系统中影响的范围也不同。主体的影响范围取决于主体定义的范围(Windows、服务器或数据库)以及主体是单个的还是一个集合。每个主体都具有一个安全标识符(SID)。
SQL Server 2008系统中,可以把主体的层次分为3个级别:
●Windows级别
●SQL Server级别
●数据库级别
Windows级别的主体包括:
●Windows 域登录名
●Windows 本地登录名
SQL Server级别的主体包括:
●SQL Server登录名
数据库级别的主体包括:
●数据库用户
●数据库角色
●应用程序角色
安全对象是SQL Server 数据库引擎授权系统控制对其进行访问的资源。SQL Server系统通过验证主体是否已经获得适当的权限来控制主体对安全对象的各种操作。安全对象范围有服务器、数据库和架构。
服务器安全对象范围包括:
●端点
●SQL Server 登录账户
●数据库
数据库安全对象范围包括:
●用户
●角色
●应用程序角色●程序集
●消息类型
●路由
●服务●远程服务绑定●全文目录
●证书
●非对称密钥●对称密钥
●约定
●架构
架构安全对象范围包括:
● 类型
● XML 架构集合
● 对象(聚合、约束、函数、过程、队列、统计信息、同义词、表、视图等)
主体和安全对象之间是通过权限关联起来的。主体通过发出请求来访问系统资源(安全对象)。主体能否对安全对象执行访问操作,需要判断主体是否拥有访问安全对象的权限。
那么,数据库中的对象由谁所有?如果是由用户所有,当用户被删除时,其所拥有的对象怎么办?难道数据库对象可以成为没有所有者的“孤儿”吗?在SQL Server 2008系统中,这个问题是通过用户和架构分离来解决的,用户并不拥有数据库对象,架构拥有数据库对象,用户通过架构来使用数据库对象。数据库对象、架构和用户之间的关系示意图如下:
8.2 登录名管理
登录账户是基于服务器级使用的名称。登录名管理包括创建登录名、设置密码策略、查看登录名信息及修改登录名等。
sa 是一个默认的SQL Server 登录名,拥有操作SQL Server 系统的所有权限,该登录名不能被删除。
以”##”开头和结尾的用户是SQL Server 内部使用的账户,由证书创建,不应该被删除。
BUILDIN\Administrator 账户是与本地管理员组关联的登录名,默认属于sysadmin 角色。这个账户使得任何属于本地管理员的账户都可以获得对SQL Server 的完全控制权。
【无论是哪一种环境下安装SQL Server 2008,都会碰到为每个SQL Server 2008服务配置账户的问题。安装SQL Server 2008时会用的账户如下:
[1] 本地用户帐户
[2] 域用户帐户
[3] 内置系统帐户
● Network Service 帐户(网络服务)
● Local Service 帐户(本地服务)
● Local System 帐户(本地系统)
本地用户帐户。工作组环境,如果计算机不在域中,则建议使用不具有 Windows 管理员权限的本地用户帐户。
域用户帐户。如果服务必须与网络服务进行交互,则访问类似于文件共享的域资源;如果服务使用到运行 SQL Server 的其他计算机的链接服务器连接,则可以使用具有最低特权的域帐户。许多服务器到服务器的活动只能使用域用户帐户来执行。此帐户应由域管理员在域环境内预先创建。
Local Service 帐户。是一个内置帐户,与 Users 组的成员具有相同级别的资源和对象访问权限。请注意,SQL Server 或 SQL Server 代理服务不支持 Local Service 帐户。该帐户的实际名称为“NT AUTHORITY\LOCAL SERVICE ”。
Network Service 帐户。是一个内置帐户,比 Users 组的成员拥有更多的对资源和对象的访问权限。以 Network Service 帐户身份运行的服务将使用计算机帐户的凭据访问网络资源。该帐户的实际名称为“NT AUTHORITY\NETWORK SERVICE ”。
Local System 帐户。Local System 是一个具有高特权的内置帐户。
它对本地系统有许多