码迷,mamicode.com
首页 > 其他好文 > 详细

Security2: 架构和权限

时间:2017-03-07 20:34:03      阅读:144      评论:0      收藏:0      [点我收藏+]

标签:xxx   log   microsoft   语句   创建   targe   tps   sch   https   

架构(Schema)是数据库对象(比如,Table,View,存储过程等)的容器,授予用户对Schema访问的权限,就是授予用户对Schema下所有object的访问权限。

一,架构(Schema)是数据库对象的容器

1,创建架构,指定数据库主体(database-level principal)为该架构的Owner

CREATE SCHEMAschema_name
AUTHORIZATION owner_name

2,改变数据库对象的架构名

执行alter schema命令只能在同一个数据库中转移数据库对象的schema,跟该表相关的权限配置都将被移除。

alter schema hr 
transfer object::dbo.usres

二,授予用户访问Schema的权限

1,将Schema作为安全对象(Securable),授予用户访问Schema的权限

一旦用户能够访问Schema,就能访问架构(Schema)容纳的所有数据库对象。

GRANT permission  [ ,...n ] ON SCHEMA :: schema_name
TO database_principal [ ,...n ]
[ WITH GRANT OPTION ]

2,示例,授予用户或角色访问Schema的权限

GRANT INSERT 
ON SCHEMA :: HumanResources 
TO guest;

GRANT SELECT 
ON SCHEMA :: Person 
TO WilJo 
WITH GRANT OPTION;

三,真实经历

项目经理(PM)要求给某一个User 授予一个只读的权限,避免其对数据进行修改,影响数据库的数据,但是仅仅授予只读的权限不行,因为这个User还要执行一些查询,查询语句中包括临时表,表变量,变量,自定义数据类型等,所以,必须授予其Select 和 Execute的权限。

--Create Login
create login [domain\login_xxx]
from windows
with default_database=[HR_DataWarehouse];

--Create User
create user [domain\login_xxx]
from login [domain\login_xxx]
with default_schema=dbo;

--Create role
create role DBReaderExecute_NoModify
AUTHORIZATION [domain\login_xxx];

--Add member to role
alter role DBReaderExecute_NoModify
add member [domain\login_xxx];

--Grant Permission
grant EXECUTE,SELECT     
on schema::dbo       
to DBReaderExecute_NoModify; 

grant EXECUTE,SELECT     
on schema::hr       
to DBReaderExecute_NoModify; 

 

参考文档:

CREATE SCHEMA (Transact-SQL)

ALTER SCHEMA (Transact-SQL)

GRANT Schema Permissions (Transact-SQL)

Security2: 架构和权限

标签:xxx   log   microsoft   语句   创建   targe   tps   sch   https   

原文地址:http://www.cnblogs.com/ljhdo/p/5125250.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!