【译】第三篇 SQL Server安全主体和安全对象

本篇文章是SQL Server安全系列的第三篇,详细内容请参考原文


一般来说,你通过给主体分配对象的权限来实现SQL Server上的用户与对象的安全。在这一系列,你会学习在SQL Server实例中通过权限授权来执行操作及访问安全对象。在SQL Server中重要的主体是角色,你会学习角色可以让安全管理比使用单独用户更容易。你也会学习SQL Server的安全对象。
授权(Authorization)
Authentication is only part of accessing all of the goodies in a database server。认证(Authentication)有点像是有一个护照证明你是谁,但没有签证。你需要一个签证才能访问其他国家。在这一篇你会学习授权以及它是如何作为签证访问数据库对象。
主体是一个用户或进程可以访问一个或多个SQL Server/数据库的安全对象。一个安全对象是一个受保护的资源,只有某些人或过程可以查看或更改,比如一个表中的数据。一个权限使主体获得访问一种特定类型安全对象。
继续护照的比喻,主体是护照的持有人,安全对象是主体想访问的国家,权限是签证可以跨越国界并享有访问。
主体(Principals)
主体,在安全上下文是任何用户、组(SQL Server中称作角色)、或进程中运行的代码,可以请求访问安全对象并且被授予或拒绝访问。所有的Windows和SQL Server登录名都是主体,以及它们映射到数据库中的用户。下面的列表显示了大多数SQL Server中重要主体的层次,从服务器级到SQL Server实例级,再到数据库级的主体。
Windows级主体
->Windows域登录
->Windows组
->Windows本地登录
SQL Server级主体
->SQL Server登录
->SQL Server登录映射到证书
->SQL Server登录映射到Windows登录
->SQL Server登录映射到非对称密钥
数据库级主体
->应用程序角色
->数据库角色
->数据库用户
->数据库用户映射到证书
->数据库用户映射到Windows登录
->数据库用户映射到非对称密钥
->Public角色
重要的是要理解这个层次,因为一个主体的范围决定了授予它的权限的范围。例如,数据库用户只有在授予权限的数据库中有权限。一个SQL Server级别的主体可以在SQL Server上有权限,而Windows级别的主体有权限超出SQL Server的限制,在Windows的本地实例和整个网络。
一个主体可以是一个登录(或用户)或是角色。在SQL Server角色的作用类似于Windows组。角色中的成员继承分配给角色的权限。角色使安全管理更容易,因为你不需要为单独的用户管理复杂的权限。SQL Server支持以下类型的角色:
->固定服务器角色:SQL Server内置角色执行服务器级任务
->用户定义的服务器角色:你创建的自定义服务器角色,分配服务器级权限,并指定登录名,以便登录名继承服务器对象的权限
->固定数据库角色:内置角色执行数据库任务和分配基本权限
->用户定义的数据库角色:你创建的自定义数据库角色,分配权限,然后添加用户,以便用户继承数据库对象的权限
你可以将用户分配给多个角色。角色也可以嵌套,但是如果你的嵌套太复杂,你会受到性能损失,并且它可能会成为维护和诊断的噩梦。
固定服务器角色
固定服务器角色是SQL Server内置的角色,你不能以任何方式改变他们,你只可以给他们添加登录名。它们存在于服务器级别仅用于执行管理任务。SQL Server中固定服务器角色如下(括号中是实际角色名称):
->系统管理员(sysadmin):在SQL Server实例执行任何活动。这个角色包含了所有的其他角色,一旦用户是sysadmin的成员,他们不需要任何其他的角色。sysadmin的成员可以做任何事情,所以很有必要限制成员用户,只给那些需要并且可以信任的用户访问
->大容量插入管理员(bulkadmin):执行BULK INSERT语句让数据快速导入到数据库中
->创建数据库(dbcreator):创建和更改数据库
->磁盘管理员(diskadmin):管理存储数据库的磁盘文件
->进程管理员(processadmin):管理在SQL Server上运行的进程
->服务器管理员(serveradmin):配置服务器范围的设置。尽管与系统管理员的名称相似,serveradmin是一个非常不同的和非常有限的角色
->设置管理员(setupadmin):安装复制和管理扩展程序
->安全管理员(securityadmin):管理服务器的登录名
固定服务器角色提供的灵活性和安全性允许你将服务器的任务划分成部分。换句话说,如果他们只需要创建数据库,你就不必让他们成为系统管理员的成员。让他们成为dbcreator成员,就有他们需要的所有权限。
你可以使用Management Studio或T-SQL来指定一个登录名到一个固定服务器角色。要使用Management Studio,执行以下步骤:
1、展开,SSMS>对象资源管理器>安全性>登录名
2、右键单击Topaz登录名并从弹出菜单中选择“属性”
3、在“登录属性”对话框中,选择“服务器角色”。这将列出所有可用的服务器角色。注意Topaz,

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值