WEB开发网
开发学院数据库MSSQL Server 面向数据库管理员的SQL Server 2008安全性概述 阅读

面向数据库管理员的SQL Server 2008安全性概述

 2010-03-06 15:43:13 来源:WEB开发网   
核心提示:SQL Server Agent 代理关于 SQLServer2008 中的授权模型,一个最佳示例就是 SQL Server Agent,面向数据库管理员的SQL Server 2008安全性概述(9),可以定义往往与 Windows 登录相关的各种凭证,且它们将链接到具有必要权限以执行一个或多个 SQL Server

SQL Server Agent 代理

关于 SQLServer2008 中的授权模型,一个最佳示例就是 SQL Server Agent。可以定义往往与 Windows 登录相关的各种凭证,且它们将链接到具有必要权限以执行一个或多个 SQL Server Agent 步骤的用户。然后,SQL Server Agent 代理将凭证与工作步骤链接到一起,以提供必要的权限。

这就以颗粒方式实现了“最少特权”原则:只授予工作步骤必要的权限,仅此而已。可以随意创建代理,并使其与一个或多个 SQL Server Agent 子系统相关联。这与 SQL Server 2000中的全能式代理帐户截然不同,后者允许用户在 SQL Server Agent 的任何子系统中创建工作步骤。

注释 在 SQL Server 2000中升级服务器时,将创建单代理帐户,而且所有的子系统都将被分配这个单代理帐户,以使现有的工作继续运行。升级完成后,将创建凭证和代理帐户,通过实施更安全、粒度更细的代理集,以保护服务器资源。

新安装了 SQL Server 之后,只有 System Administrator 角色有权维护 SQL Server Agent工作,而且只有 sysadmins 能够使用 Management Studio Object Explorer 中的管理窗格。SQL Server 2008 允许用户利用其它一些角色授予各种级别的权限。可以分配用户 SQLAgentUser、SQLAgentReaderRole 或 SQLAgentOperator 角色,其中每一个角色都会分配级别逐渐提高的权限,以创建、管理及运行工作,也可分配 MaintenanceUser 角色,它拥有 SQLAgentUser 的所有权限,还能创建维护计划。

当然,sysadmin 角色的成员可以在任何子系统中随意执行任何操作。要授予其他任何用户使用子系统到权限,需要创建至少一个代理帐户,这可授予访问一个或多个子系统的权利。图7显示了如何将代理帐户 MyProxy 分配多个主体,这里包括一位用户和一个角色。代理帐户使用凭证,将其链接到帐户,通常是链接到域帐户,并且拥有在操作系统中执行各种任务的权限,这些权限也是子系统所必需的。每个代理都拥有一个或多个与之相关的子系统,它们使主体能够运行这些子系统。

首先创建凭证和一个数据库对象,后者将提供操作系统帐户链接,该帐户有权在子系统中执行所需动作。然后它添加 MyProxy 代理帐户,该帐户其实只是凭证的友好名称。接着,它将代理分配两个主体,就是 SQLServer 登录和定制角色。最后,它使代理与4个 SQL Server Agent 子系统相关联。.

CREATE CREDENTIAL MyCredential WITH IDENTITY = 'MyDOMAINuser1'
GO
msdb..sp_add_proxy @proxy_name = 'MyProxy',
  @credential_name = 'MyCredential'
GO
msdb..sp_grant_login_to_proxy @login_name = 'MyLogin',
  @proxy_name = 'MyProxy'
GO
msdb..sp_grant_login_to_proxy @login_name = 'MyRole',
  @proxy_name = 'MyProxy'
GO
sp_grant_proxy_to_subsystem @proxy_name = 'MyProxy',
  @subsystem_name = 'ActiveScripting'
GO
sp_grant_proxy_to_subsystem @proxy_name = 'MyProxy',
  @subsystem_name = 'CmdExec'
GO
sp_grant_proxy_to_subsystem @proxy_name = 'MyProxy',
  @subsystem_name = 'ANALYSISQUERY'
GO
sp_grant_proxy_to_subsystem @proxy_name = 'MyProxy',
  @subsystem_name = 'DTS'
GO

SQL Server Management Studio 完全支持凭证和代理的创建

代理不只是操作系统中杜绝安全问题的一种方式。如果与代理一起使用的凭证没有 Windows 权限,如通过网络写入目录的权限,则该代理也不会有此权限。也可利用代理为xp_cmdshell 授予有限的执行权限,因为它是黑客最喜欢利用的工具,只要他们能够成功威胁到 SQL Server 计算机的安全,就会进一步利用该工具将其威胁范围扩展到网络空间。代理提供了该领域的保护机制,因为纵使主体在网络上不受任何限制,例如域管理员主体,通过代理执行的任何命令也只拥有凭证帐户的有限权限。

上一页  4 5 6 7 8 9 10 11 12 13 14  下一页

Tags:面向 数据库 管理员

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接