SQL Server 2005------Principals,Securables and Permissions
Posted on 2009-06-23 10:31 鸡尾虾的壳 阅读(357) 评论(0) 编辑 收藏 举报1.在SQL Server的安全体系中,整个架构分为三类:Principals, Securables, Permissions.
2.Principals:分为三类,Windows Scope,SQL Server Principals, Database Principals.
3.使用create login命令创建Windows Scope登录,其中可以为特定的用户指定默认数据库和默认语言等.
4.在SQL Server 2005中,使用标准的alter login就可以修改登录用户的属性,而不是像在2000版本中使用不同的存储过程.
5.通过deny,grant赋予用户连接的权限.
6.对于Windows Scope的Prinipals,类似于Windows Principals,不能被授权特定的数据库对象,但是对于固定的服务器角色可以授权membership.
创建用户时,可以设置密码复杂度,密码过期等Pilicy.
7.服务器角色:预定义的,开发者不能够再创建新的服务器角色,但是可以管理member.通过sp_addsrvrolemember设置membership.
8.通过exec sp_helpsrvrole 查看所有的服务器角色.
9.通过EXEC sp_helpsrvrolemember 'sysadmin'查看某个角色中有那些用户.
10.数据库Principals:Database users(与server,windows login关联),Database Role(select, create等权限集合),Application Role.
11.使用create user创建数据库用户,需要设置某个login匹配和默认Schema.
12.使用sp_helpuser查看特定用户的信息.
13. 使用backup/restore移植数据库时,logins, db user之间的关联会断掉,因为每个logins都有一个sid.使用sys.database_principals,sys.server_principals可以查看这种关联.使用sp_change_users_login可以修补这种断掉的关联.
14.查看固定的数据库的角色信息:EXEC sp_helpdbfixedrole.
15.查看某个特定用户的信息:EXEC sp_helprolemember.
16.sp_addrolemember,sp_droprolemember管理membership.
17.使用CREATE ROLE命令创建自定义的角色,EXEC sp_helprole可以查看角色的信息.
18.Application Role:Login,Database Role的混合,与数据库角色和服务器角色的区别是它没有member的概念,默认是没有激活的。sp_setapprole设置应用程序角色.
SQL Server 2005------Securables and Permissions
1.Securables分为3个层次:Server Scope(Logins, DB, Endpoints),DV Scope(User,Role,Certification,Schema),Schema Scope(table,function,view,procudure)
2.主要的Permission包括:Alter,Anthenticate,Connect,Control,Create,Impersonate,Take Ownership,View
3.通过sys.fn_builtin_permissions查看所有的Permission层次结构
4.Server Scope Permission:包括DB,Logins,Linked Server,Endpoint,关闭SQL Server Instance,使用SQL Profile等。
5.Grant,Deny,Remoke:对于服务器Scope的Grant,必须在mater数据库Context下运行
6.DB Scope Permission:包括Role,Assemble,加密相关对象,Service Broker,Fulltext Catalogs,DB Users,Schema
7.Schema-Scope:包括数据类型和对象等,每个DB都默认包括一个dbo Schema
8.查看当前数据库中的Schema
SELECT s.name SchemaName, d.name SchemaOwnerName
FROM sys.schemas s
INNER JOIN sys.database_principals d ON
s.principal_id= d.principal_id
ORDER BY s.name
9.判断当前连接用户是否有某种权限:Has_perms_by_name函数
10.判断当前Securiables的所有权限:fn_my_permissions函数
11.使用CREATE CREDENTIAL命令把Windows帐户和Logins绑定起来,便于访问非数据库的外部资源