sql server2008 安全性管理机制
2015-06-09 19:26
141 查看
Sqlserver 安全性管理
Sqlserver安全管理主要概念包括:
登录名、服务器角色、数据库用户、数据库角色、架构
(1) 登录名
Windows身份登录:
A. 可以为每个windows用户(组)映射一个windows账号,登录时候不需要sqlserver账号,会直接根据计算机名和所在的windows身份,映射到对应的账号,例如下面两个windows用户创建的sqlserver 的windows身份:
B.sqlserver创建windows登录名时,标准的格式:
计算机名\windows用户(组)名
例如,上面的tanglin\lenovo,前者tanglin是计算机名,后者lenovo是windows用户名。
而TANGLIN\WindowsUserGroup则是一个用户组,该用户组的所有windows成员都可以映射到该登录名,使用同一个账号访问。
混合登录(windows身份验证、sqlserver身份两者同时验证)
例如上面的A、B以及sa等登录名,都是混合登录,需要windows身份验证、sqlserver身份两者同时验证
(2) 服务器角色
帮助管理sqlserver服务器上的权限,sqlserver提供了这些角色。这些角色是用于对其他主体进行分组的安全主体。服务器级角色的权限作用域为服务器范围(“角色”类似于 Windows 操作系统中的“组”)
SQL Server 提供了9种固定服务器角色,无法更改或授予固定服务器角色。(注意:从 SQL Server 2012 开始,您可以创建用户定义的服务器角色,并将服务器级权限添加到用户定义的服务器角色)
l 分为以下9种:
l 只能向用户定义的服务器角色中添加服务器级权限。 若要列出服务器级别的权限,请执行下面的语句。服务器级别权限如下:
SELECT * FROM sys.fn_builtin _permissions('SERVER') ORDER BY permission_name;
l 可以用于服务器级角色的命令、视图和功能。
(3) 数据库用户
A. 数据库用户名与sqlserver登录名一一对应
在一个数据库中,一个数据库用户名只能对应一个登录名,一个登录名也只能对应一个数据库用户名。登录名只有通过数据库的用户才能对数据库进行访问权限。一个登录名在每个数据库中只能有一个用户名,从而通过该用户名对该数据库进行访问。
B. 数据库用户默认架构
架构目的是将不同的数据库对象分成不同的组,而默认架构是用户访问数据库对象(表,视图,函数等等)时,首先查找的架构对象,无需在对象前面加上架构名称(例如表dbo.table_A中的dbo)。而其他不属于该架构的对象(除了dbo架构)访问时都要加上架构名进行标识。
C. 数据库用户拥有的架构
数据库用户拥有的架构,对其有所有的使用权限(包括dll和dml权限),当然,架构拥有者获得了架构的dll权限,也要同时获得数据库的dll权限,才能创建该架构下的创建各种数据库对象,但dml权限无需获得数据库的dll权限。
D.数据库用户权限的来源
l
包含的数据库角色身份的所有权限
数据库用户包含的 所有数据库角色的所有权限,都映射到该数据库用户,例如:拥有的架构(等同与该数据库用户 拥有的架构)/其他形式赋予的权限等l 数据库赋予的dml权限
l
拥有的架构的所有权限 / 其他架构赋予的权限
l 数据库对象赋予的权限
l 数据库用户或数据库角色 转移或授予的权限
E.默认架构的对象权限和其他架构的权限
对于默认架构,使用该权限时直接用数据库对象名进行访问,而其他的架构(无论是拥有的架构还是非拥有的)权限的对象,都要用到架构名前面标识进行。
(4) 几个概念之间关系
(5) 数据库、架构、数据库对象
Sqlserver安全管理主要概念包括:
登录名、服务器角色、数据库用户、数据库角色、架构
(1) 登录名
Windows身份登录:
A. 可以为每个windows用户(组)映射一个windows账号,登录时候不需要sqlserver账号,会直接根据计算机名和所在的windows身份,映射到对应的账号,例如下面两个windows用户创建的sqlserver 的windows身份:
B.sqlserver创建windows登录名时,标准的格式:
计算机名\windows用户(组)名
例如,上面的tanglin\lenovo,前者tanglin是计算机名,后者lenovo是windows用户名。
而TANGLIN\WindowsUserGroup则是一个用户组,该用户组的所有windows成员都可以映射到该登录名,使用同一个账号访问。
混合登录(windows身份验证、sqlserver身份两者同时验证)
例如上面的A、B以及sa等登录名,都是混合登录,需要windows身份验证、sqlserver身份两者同时验证
(2) 服务器角色
帮助管理sqlserver服务器上的权限,sqlserver提供了这些角色。这些角色是用于对其他主体进行分组的安全主体。服务器级角色的权限作用域为服务器范围(“角色”类似于 Windows 操作系统中的“组”)
SQL Server 提供了9种固定服务器角色,无法更改或授予固定服务器角色。(注意:从 SQL Server 2012 开始,您可以创建用户定义的服务器角色,并将服务器级权限添加到用户定义的服务器角色)
l 分为以下9种:
sysadmin | sysadmin 固定服务器角色的成员可以在服务器中执行任何活动。 | ||
serveradmin | serveradmin 固定服务器角色的成员可以更改服务器范围内的配置选项并关闭服务器。 | ||
securityadmin | securityadmin 固定服务器角色的成员管理登录名及其属性。 他们可以 GRANT、DENY 和 REVOKE 服务器级权限。 他们还可以 GRANT、DENY 和 REVOKE 数据库级权限(如果他们具有数据库的访问权限)。此外,他们还可以重置 SQL Server 登录名的密码。
| ||
processadmin | processadmin 固定服务器角色的成员可以终止在 SQL Server 实例中运行的进程。 | ||
setupadmin | setupadmin 固定服务器角色的成员可以通过使用 Transact-SQL 语句添加和删除链接服务器。 (在使用 Management Studio 时需要 sysadmin 成员身份。) | ||
bulkadmin | bulkadmin 固定服务器角色的成员可以运行 BULK INSERT 语句。 | ||
diskadmin | diskadmin 固定服务器角色用于管理磁盘文件。 | ||
dbcreator | dbcreator 固定服务器角色的成员可以创建、更改、删除和还原任何数据库。 | ||
public | 每个 SQL Server 登录名均属于 public 服务器角色。 如果未向某个服务器主体授予或拒绝对某个安全对象的特定权限,该用户将继承授予该对象的 public 角色的权限。当您希望该对象对所有用户可用时,只需对任何对象分配 public 权限即可。您无法更改 public 中的成员关系。
|
SELECT * FROM sys.fn_builtin _permissions('SERVER') ORDER BY permission_name;
l 可以用于服务器级角色的命令、视图和功能。
功能 | 类型 | 说明 |
sp_helpsrvrole (Transact-SQL) | 元数据 | 返回服务器级角色的列表。 |
sp_helpsrvrolemember (Transact-SQL) | 元数据 | 返回有关服务器级角色成员的信息。 |
sp_srvrolepermission (Transact-SQL) | 元数据 | 显示服务器级角色的权限。 |
IS_SRVROLEMEMBER (Transact-SQL) | 元数据 | 指示 SQL Server 登录名是否为指定服务器级角色的成员。 |
sys.server_role_members (Transact-SQL) | 元数据 | 为每个服务器级角色的每个成员返回一行。 |
sp_addsrvrolemember (Transact-SQL) | 命令 | 将登录名添加为某个服务器级角色的成员。 不推荐使用。 应改用 ALTER SERVER ROLE。 |
sp_dropsrvrolemember (Transact-SQL) | 命令 | 从服务器级角色中删除 SQL Server 登录名或 Windows 用户或组。 不推荐使用。 应改用 ALTER SERVER ROLE。 |
CREATE SERVER ROLE (Transact-SQL) | 命令 | 创建用户定义的服务器角色。 |
ALTER SERVER ROLE (Transact-SQL) | 命令 | 更改服务器角色的成员关系或更改用户定义的服务器角色的名称。 |
DROP SERVER ROLE (Transact-SQL) | 命令 | 删除用户定义的服务器角色。 |
IS_SRVROLEMEMBER (Transact-SQL) | 功能 | 确定服务器角色的成员关系。 |
(3) 数据库用户
A. 数据库用户名与sqlserver登录名一一对应
在一个数据库中,一个数据库用户名只能对应一个登录名,一个登录名也只能对应一个数据库用户名。登录名只有通过数据库的用户才能对数据库进行访问权限。一个登录名在每个数据库中只能有一个用户名,从而通过该用户名对该数据库进行访问。
B. 数据库用户默认架构
架构目的是将不同的数据库对象分成不同的组,而默认架构是用户访问数据库对象(表,视图,函数等等)时,首先查找的架构对象,无需在对象前面加上架构名称(例如表dbo.table_A中的dbo)。而其他不属于该架构的对象(除了dbo架构)访问时都要加上架构名进行标识。
C. 数据库用户拥有的架构
数据库用户拥有的架构,对其有所有的使用权限(包括dll和dml权限),当然,架构拥有者获得了架构的dll权限,也要同时获得数据库的dll权限,才能创建该架构下的创建各种数据库对象,但dml权限无需获得数据库的dll权限。
D.数据库用户权限的来源
l
包含的数据库角色身份的所有权限
数据库用户包含的 所有数据库角色的所有权限,都映射到该数据库用户,例如:拥有的架构(等同与该数据库用户 拥有的架构)/其他形式赋予的权限等l 数据库赋予的dml权限
l
拥有的架构的所有权限 / 其他架构赋予的权限
l 数据库对象赋予的权限
l 数据库用户或数据库角色 转移或授予的权限
E.默认架构的对象权限和其他架构的权限
对于默认架构,使用该权限时直接用数据库对象名进行访问,而其他的架构(无论是拥有的架构还是非拥有的)权限的对象,都要用到架构名前面标识进行。
(4) 几个概念之间关系
(5) 数据库、架构、数据库对象
相关文章推荐
- SQL中的三值逻辑
- SQL Server 作业批量停止
- 结束SQL阻塞的进程
- 动态生成SQL Server视图作业
- 网易云音乐8亿用户背后的伤疤
- SQL Server 语句操纵数据库
- SQL(结构化查询语句)
- oracle sql日期比较
- linux快速部署mysql服务器
- windows server域用户提升到本地更高权限组中的方法
- 管理 Linux 系统中的用户
- sql 存储过程分页
- 在WINXP系统上安装SQL Server企业版的方法
- 通过批处理调用SQL的方法(osql)
- SQL Server 存储过程的分页
- ASP程序与SQL存储过程结合使用详解
- SQL SERVER编写存储过程小工具
- 防御SQL注入攻击时需要注意的一个问题