1 sql server2005安全管理之用户、角色、架构 与 权限 2 2008-12-04 16:47 3 --打开数据库 4 Use databaseName 5 6 --创建角色 7 create role ProgramerRole 8 9 --用于创建表 存储过程 视图 10 grant create table,create procedure,create view to ProgramerRole 11 12 --execute用以执行存储过程,alter用以创建、修改存储过程和视图, 13 --并可以新建立表,但不能修改表,但也可以删除表和对表改名了 14 grant select,insert,execute,alter on schema::dbo to ProgramerRole 15 16 --用于允许用户查看 显示估计的执行计划(081205) 17 grant showplan to ProgramerRole 18 19 --创建登录账号 20 --create login username with password='password' 21 --创建数据库用户 22 create user username for login username 23 24 --将用户TestUser添加到TestRole角色中 25 exec sp_addrolemember 'ProgramerRole','username ' 26 27 --执行Sql Server Profiler是服务器级权限,所以在master库中授权 28 USE master;grant alter trace to auto; 29 30 31 注:据库引擎优化顾问必须由具有系统管理员权限的用户进行初始化。在具有系统管理员权限的用户对数据库引擎优化顾问进行初始化之后,任何是 db_owner 固定数据库角色成员的用户,都可以使用数据库引擎优化顾问来优化他们拥有的数据库上的表。 32 详优化物理数据库设计http://msdn.microsoft.com/zh-cn/library/ms191531(SQL.90).aspx 33 34 参考资料: 35 用户架构分离:http://msdn.microsoft.com/zh-cn/library/ms190387(SQL.90).aspx 36 数据库架构是一个独立于数据库用户的非重复命名空间。您可以将架构视为对象的容器 37 主体:http://msdn.microsoft.com/zh-cn/library/ms181127(SQL.90).aspx 38 是可以请求 SQL Server 资源的实体 39 40 Windows 级别的主体 41 42 Windows 域登录名 43 Windows 本地登录名 44 SQL Server 级的主体 45 46 SQL Server 登录名 47 数据库级的主体 48 49 数据库用户 50 数据库角色 51 应用程序角色 52 安全对象:http://msdn.microsoft.com/zh-cn/library/ms190401(SQL.90).aspx 53 安全对象是 SQL Server 数据库引擎 授权系统控制对其进行访问的资源 54 安全对象范围有服务器、数据库和架构 55 安全对象范围:服务器包含以下安全对象: 56 端点 57 登录帐户 58 数据库 59 60 安全对象范围:数据库包含以下安全对象: 61 用户 62 角色 63 应用程序角色 64 程序集 65 消息类型 66 路由 67 服务 68 远程服务绑定 69 全文目录 70 证书 71 非对称密钥 72 对称密钥 73 约定 74 架构 75 76 安全对象范围:架构包含以下安全对象: 77 类型 78 XML 架构集合 79 对象 80 81 对象 下面是对象类的成员: 82 聚合 83 约束 84 函数 85 过程 86 队列 87 统计信息 88 同义词 89 表 90 视图 91 92 架构:http://msdn.microsoft.com/zh-cn/library/ms365789(SQL.90).aspx 93 架构是指包含表、视图、过程等的容器。它位于数据库内部,而数据库位于服务器内部 94 特定架构中的每个安全对象都必须有唯一的名称。架构中安全对象的完全指定名称包括此安全对象所在的架构的名称。因此,架构也是命名空间 95 96 权限:http://msdn.microsoft.com/zh-cn/library/ms190387(SQL.90).aspx 97 每个 SQL Server 2005 安全对象都有可以授予主体的关联权限 98 99 数据库级别的角色:http://msdn.microsoft.com/zh-cn/library/ms189121(SQL.90).aspx 100 固定数据库角色是在数据库级别定义的,并且存在于每个数据库中。db_owner 和 db_securityadmin 数据库角色的成员可以管理固定数据库角色成员身份;但是,只有 db_owner 数据库的成员可以向 db_owner 固定数据库角色中添加成员。 101 每个数据库用户都属于 public 数据库角色。当尚未对某个用户授予或拒绝对安全对象的特定权限时,则该用户将继承授予该安全对象的 public 角色的权限 102 服务器级别角色:http://msdn.microsoft.com/zh-cn/library/ms188659(SQL.90).aspx 103 固定服务器角色在其作用域内属于服务器范围。固定服务器角色的每个成员都可以向其所属角色添加其他登录名。 104 105 GRANT 架构权限:http://msdn.microsoft.com/zh-cn/library/ms187940(SQL.90).aspx 106 107 如何配置用户以创建和管理 SQL Server 代理作业 http://msdn.microsoft.com/zh-cn/library/ms187901.aspx 108 109 若要配置用户以创建或执行 Microsoft SQL Server 代理作业,必须先将某个现有 SQL Server 登录名或 msdb 角色添加到 msdb 数据库中的下列 SQL Server 代理固定数据库角色之一:SQLAgentUserRole、SQLAgentReaderRole 或 SQLAgentOperatorRole。 110 111 默认情况下,这些数据库角色的成员可以创建各自的作业步骤,这些作业步骤不执行其他作业步骤。如果这些非管理用户要运行那些执行其他作业步骤类型(例如,SSIS 包)的作业,它们需要对代理帐户具有访问权限。sysadmin 固定服务器角色的所有成员都有创建、修改和删除代理帐户的权限 112 113 114 115 116 117 118 为具体的用户设置具体的访问权限 收藏 119 use 你的库名 120 go 121 122 --新增用户 123 exec sp_addlogin 'test' --添加登录 124 exec sp_grantdbaccess N'test' --使其成为当前数据库的合法用户 125 exec sp_addrolemember N'db_owner', N'test' --授予对自己数据库的所有权限 126 127 --这样创建的用户就只能访问自己的数据库,及数据库中包含了guest用户的公共表 128 go 129 130 --删除测试用户 131 exec sp_revokedbaccess N'test' --移除对数据库的访问权限 132 exec sp_droplogin N'test' --删除登录 133 134 135 如果在企业管理器中创建的话,就用: 136 137 企业管理器--安全性--右键登录--新建登录 138 139 常规项 140 --名称中输入用户名 141 --身份验证方式根据你的需要选择(如果是使用windows身份验证,则要先在操作系统的用户中新建用户) 142 --默认设置中,选择你新建的用户要访问的数据库名 143 144 服务器角色项 145 这个里面不要选择任何东西 146 147 数据库访问项 148 勾选你创建的用户需要访问的数据库名 149 数据库角色中允许,勾选"public","db_ownew" 150 151 确定,这样建好的用户与上面语句建立的用户一样 152 --------------------------------------------------------------------------- 153 154 最后一步,为具体的用户设置具体的访问权限,这个可以参考下面的最简示例: 155 156 --添加只允许访问指定表的用户: 157 exec sp_addlogin '用户名','密码','默认数据库名' 158 159 --添加到数据库 160 exec sp_grantdbaccess '用户名' 161 162 --分配整表权限 163 GRANT SELECT , INSERT , UPDATE , DELETE ON table1 TO [用户名] 164 165 --分配权限到具体的列 166 GRANT SELECT , UPDATE ON table1(id,AA) TO [用户名]