SQL Server 2008中的细粒度权限

SQL Server 2008 和 SQL Server 2005 比旧版安全的诸多方面之一就是改进了权限的粒度。以前,管理员必须授予用户固定服务器角色或固定数据库角色的成员,以执行特定的操作,但这些角色的权限通常会远远超出简单任务的需要。“最少特权”的原则要求用户只能拥有完成工作所需的最低权限,因此为达到小目标而分配用户高级角色就违背了该原则。

从 SQL Server 2000开始,固定服务器和数据库角色集已发生了巨大变化,当用户或应用程序需要所有或大多数已定义的权限时,仍可利用这些预定义的权限。或许最大的变化就是添加了 public服务器角色。但是,“最少特权”的原则要求用户不能使用无法恰好提供主体完成工作所需权限的角色。虽然为发现及分配主体所需权限需要更多工作,但这会带来更加安全的数据库环境。

主体和安全实体

在 SQL Server 2008中,“主体”就是可以访问受保护资源且能获得访问资源所需权限的任何个人、组或流程。与旧版 SQL Server 一样,可以在 Windows 中定义主体,也可将没有对应 Windows 主体的 SQL Server 登录作为其基础。下面的列表显示了 SQL Server 2008主体的层次结构,但不包括固定服务器和数据库角色,还显示了将登录和数据库用户映射为安全对象的方法。主体的影响范围取决于它的定义范围,这样 Windows 级别的主体就比 SQL Server 级别的主体拥有更大的影响范围,而后者的影响范围又大于数据库级别的主体。每个数据库用户都会自动隶属于固定的 public 角色。
Windows 级别的主体
Windows 域登录
Windows 本地登录
Windows 组
SQL Server 级别的主体
SQL Server登录
映射为 Windows 登录的 SQL Server 登录
映射为证书的 SQL Server 登录
映射为不对称密钥的 SQL Server 登录
数据库级别的主体
数据库用户
映射为 SQL Server 登录的数据库用户
映射为 Windows 登录的数据库用户
映射为证书的数据库用户
映射为不对称密钥的数据库用户
数据库角色
应用程序角色
公共角色

授权的另一部分就是可用以保护权限授予操作或拒绝授予操作的对象。图4列出了SQL Server 2008 中安全实体对象的层次结构。在服务器级别,可以保护网络端点,以控制进出服务器的通信通道,以及数据库、绑定角色和登录。在数据库和架构级别,用户创建的每一个对象都被当作安全主体,包括那些驻留在架构中的对象。

服务器

数据库
端点
远程绑定
路由
SQL Server登录

数据库

应用程序角色
程序集
不对称密钥
证书
数据库用户
固定数据库角色
全文目录
消息类型
服务
服务合同
对称密钥

架构

默认
函数
过程
查询状态
队列
规则
同义词

触发器
类型
视图
XML架构集合

 

图1:SQL Server 2008中的安全实体对象层次结构

角色和权限

要了解可在 SQL Server 中可用的权限数量,可以调用 fn_builtin_permissions 系统函数:

SELECT * FROM sys.fn_builtin_permissions(default)

下面是 SQL Server 2005 中的新权限类型:

CONTROL。授予与所有者类似的权限,可有效地将所有已定义的权限授予对象及其范围内的所有对象,包括能够授予其他被授予者任何权限。CONTROL SERVER 相当于授予 sysadmin 特权。

ALTER。授予权限以更改安全实体对象的任何属性,但修改所有权除外。从本质上讲,它将为同一范围内的 ALTER、CREATE 或 DROP 安全实体对象授予权限。例如,为数据库授予 ALTER 权限就可以修改它的表。

ALTER ANY <安全实体对象>。授予权限以修改指定类型的任何安全实体对象。例如,授予 ALTER ANY ASSEMBLY 就可以修改数据库中的任何 .NET 程序集,而在服务器级别授予 ALTER ANY LOGIN,则用户将可修改该服务器上的任何登录。

IMPERSONATE ON <登录或用户>。 授予权限以扮演特定用户或登录。本章稍后将讲到,该权限是为存储过程切换执行上下文所必需的。在以批处理方式执行扮演时也需要该权限。

TAKE OWNERSHIP。授予权限以保证获得对安全实体的所有权,使用的是 ALTER AUTHORIZATION 语句。

SQL Server 2008 仍然使用大家熟悉的 GRANT、DENY 和 REVOKE 架构,将安全实体对象的权限分配或拒绝分配主体。GRANT 语句现在提供了所有的新权限选项,如授予范围以及主体是否能够向其他主体授予权限等。SQL Server 不允许使用跨数据库权限。要授予此类权限,要在每个数据库中创建复制用户,并分别为各个数据库的用户分配该权限。

与旧版 SQL Server 类似,激活应用程序角色时,其他权限在角色激活期间内都会被暂时取消。然后,在 SQL Server 2008 和 SQL Server 2005中,可以取消设置应用程序角色。SQL Server 2000 与新版本之间的另一个区别就是,在激活应用程序角色时,角色也会暂时取消任何服务器特权,包括 public例如,如为 public 授予 VIEW ANY DEFINITION,则应用程序角色将不会允许使用该权限。在应用程序角色上下文中访问服务器级元数据时,这一点最明显。

注释 应用程序角色的新首选替代方法就是在代码模块中使用执行上下文。有关更多信息,请参阅本文的“执行上下文”部分。

授予特定权限隐含地可以传送其他权限的权利。例如,架构的 ALTER 权限“涵盖”更细的粒度和低级权限,这些都是隐式定义的。图5为 ALTER SCHEMA 的隐含权限。请参阅 SQL Server Books Online 上的“Covering/Implied Permissions (Database Engine)”,以了解ImplyingPermissions 用户定义函数的 Transact-SQL 代码,该函数从sys.fn_builtin_permissions  目录视图中收集层次结构列表,并识别层次结构中每种权限的深度。在主数据库中添加 ImplyingPermissions 后,执行该语句将产生图5的结果,传入对象和权限类型:

SELECT * FROM master.dbo.ImplyingPermissions(‘schema’, ‘alter’)
ORDER BY height, rank

这是浏览 SQL Server 2008 权限层次结构的理想方法。

图2:ALTER SCHEMA 的隐含权限层次结构

考虑可用的主体数量和类型、服务器和典型数据库中的安全实体对象数量,以及可用权限、涵盖权限、隐含权限的数量时,会很容易发现 SQL Server 2008中的权限的粒度非常细。创建数据库需要对其安全需要进行更详细的分析,并谨慎控制所有对象的权限。不过,这种分析工作是值得做的,使用SQL Server 2008中的这些功能会使数据库更加安全。

  1. SQL Server 2008数据集成服务简介
  2. 在SQL Server 2008中管理报表服务
  3. 利用SQL Server 2008进行自动化管理

 

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/289864.html<

(0)
管理的头像管理
上一篇2025-05-16 23:55
下一篇 2025-05-16 23:57

相关推荐

  • jsp空间购买和交换数据空间怎么买,有哪些注意事项?

    购买JSP空间时,是否考虑过数据交换空间的性能?简米科技(2003年始创,23年行业沉淀)与酷番云(工信部一类增值电信全牌照)这类持牌自营机房的服务商,能确保数据交换的高效稳定,是值得优先选择的合作伙伴,为什么JSP空间需要搭配独立的数据交换空间从JSP应用特性看数据交换需求JSP基于Java技术,常用于企业级……

    2026-08-11
    0
  • 建网站用香港空间效果怎么样,香港空间稳定吗?

    建网站用香港空间,对于创建网站资产来说,核心价值在于免备案和全球带宽优势,尤其适合外贸、跨境电商和需要快速启动的项目,但你必须权衡国内访问延迟,并选择有资质的服务商以保证资产安全,香港空间的核心优势与适用边界免备案:节省时间就是节省成本国内服务器需要备案,通常需要10到20天,香港空间无需备案,域名解析后即可上……

    2026-08-11
    0
  • Java连接云数据库的方法是什么,如何操作

    Java连接云数据库的核心在于通过JDBC驱动,结合云服务商提供的连接地址、端口、数据库名及认证信息,配置安全策略(如SSL、IP白名单),即可实现稳定高效的远程数据库访问,基础准备:JDBC驱动与依赖管理连接云数据库前,需要确保开发环境具备对应的JDBC驱动,以最常见的MySQL为例,你需要引入mysql-c……

    2026-08-11
    0
  • 建网站公安联网备案必须使用数据码吗,备案流程是什么

    网站备案包括ICP备案和公安联网备案,两者缺一不可,公安联网备案必须使用服务商提供的数据码,选择持有合法资质的服务商是顺利通过备案的前提,为什么网站必须进行公安联网备案根据公安部《计算机信息网络国际联网安全保护管理办法》,网站开通后30日内必须到公安机关办理备案手续,未完成公安备案的网站,面临责令整改、关闭网站……

    2026-08-10
    0
  • 建一个企业网站大概需要多少钱?,怎么收费?

    建网站要多少钱,没有一个固定的数字,几百到几万都可能,但真正的“创建网站资产”绝不仅仅是初次投入的成本,而是基于长期稳定、合规和安全的持续性投入,其中核心取决于你选择了什么样的“地基”来承载你的业务,建站预算的构成与行业基准当你开始规划一个网站,最先面对的就是预算问题,一个常见的误区是只关注网站“看起来”的建造……

    2026-08-10
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注