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

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

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