Security3: 架构和权限

简介:

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

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

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

CREATE SCHEMA schema_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;
复制代码

三,schema的所有者

通过系统视图:sys.schemas 查看schema的所有者,在删除用户时,如果该用户是schema的所有者,那么在删除时,系统抛出错误:

Error: 15138 The database principal owns a schema in the database, and cannot be dropped.

通过命令,修改schema的所有者,把schema的所有者转移到dbo用户:

ALTER AUTHORIZATION 
ON SCHEMA::SchemaName 
TO dbo

四,特殊的shecma

在每个数据库中,都存在三个特殊的schema:dbo,sys 和 INFORMATION_SCHEMA:

  • dbo是数据库对象默认的schema,其owner是用户dbo;
  • guest:是schema,其owner是用户guest;
  • sys 和 INFORMATION_SCHEMA 是数据库引擎内部使用的schema,用户不能删除和修改,其Owner默认是用户sys和INFORMATION_SCHEMA;

五,真实经历

项目经理(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)





本文转自悦光阴博客园博客,原文链接:http://www.cnblogs.com/ljhdo/p/5125250.html,如需转载请自行联系原作者

目录
相关文章
|
3月前
|
SQL 数据库
拒绝了对对象 ‘GetTips‘ (数据库 ‘vipsoft‘,架构 ‘dbo‘)的 EXECUTE 权限
拒绝了对对象 ‘GetTips‘ (数据库 ‘vipsoft‘,架构 ‘dbo‘)的 EXECUTE 权限
40 0
|
消息中间件 监控 Cloud Native
基于SpringCloud体系实现的一套支持云原生的分布式微服务架构,提供OAuth2/JWT权限认证、分布式事务、灰度、限流、链路追踪等功能,支持Docker容器化部署、镜像交付、K8S容器编排
lion是基于Spring Cloud体系实现的一套支持云原生的分布式微服务架构,为了让中小型公司解决当下技术瓶颈,快速将现有应用服务架构拆分改造为分布式微服务架构,进入 All-in-Cloud 时代,只需在本架构上进行相关业务开发即可,大大减少了分布式微服务架构的门槛,仅在本框架上做"减法"的目的,使架构师及开发人员不必过多的关注架构本身,只需专注于业务开发
基于SpringCloud体系实现的一套支持云原生的分布式微服务架构,提供OAuth2/JWT权限认证、分布式事务、灰度、限流、链路追踪等功能,支持Docker容器化部署、镜像交付、K8S容器编排
|
前端开发 数据安全/隐私保护 容器
茫茫人海遇见了你,不早也不晚。关于Admin Work 框架中"按钮级权限"功能架构的思考与实现
茫茫人海遇见了你,不早也不晚。关于Admin Work 框架中"按钮级权限"功能架构的思考与实现
茫茫人海遇见了你,不早也不晚。关于Admin Work 框架中"按钮级权限"功能架构的思考与实现
|
存储 缓存 安全
Shiro框架01之什么是shiro+shiro的架构+权限认证
Shiro框架01之什么是shiro+shiro的架构+权限认证
Shiro框架01之什么是shiro+shiro的架构+权限认证
|
云安全 运维 监控
直播预告 | 多账号架构下的身份权限与网络安全新能力发布
新品发布会即将来袭,多账号架构企业到底如何更高效更安全的管理云端?所有干货尽在6月9日直播间!
284 0
|
SQL 存储 数据安全/隐私保护
企业管理系统前后端分离架构设计 系列一 权限模型篇
原文:企业管理系统前后端分离架构设计 系列一 权限模型篇 前段时间分别用vue和react写了两个后台管理系统的模板vue-quasar-admin和3YAdmin。两个项目中都实现了基于RBAC的权限控制。
1325 0