Security3: Schema 和 Permission
架构(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;
参考文档:
GRANT Schema Permissions (Transact-SQL)
Security3: Schema 和 Permission的更多相关文章
- ABP框架系列之二十九:(Hangfire-Integration-延迟集成)
Introduction Hangfire is a compherensive background job manager. You can integrate ASP.NET Boilerpla ...
- 1.ZooKeeper ACL权限控制
参考:https://blog.csdn.net/liuxiao723846/article/details/79391650 ZK 类似文件系统,Client 可以在上面创建节点.更新节点.删除节点 ...
- 从 Paxos 到 ZooKeeper
分布式一致性 分布式文件系统.缓存系统和数据库等大型分布式存储系统中,分布式一致性都是一个重要的问题. 什么是分布式一致性?分布式一致性分为哪些类型?分布式系统达到一致性后将会是一个什么样的状态? 如 ...
- profile name is not valid,The EXECUTE permission was denied on the object 'sp_send_dbmail', database 'msdb', schema 'dbo'.
使用不是sysadmin权限的账号执行存储发邮件,报异常profile name is not valid, EXEC msdb.dbo.sp_send_dbmail @profile_name = ...
- Spring Security3学习实例
Spring Security是什么? Spring Security,这是一种基于Spring AOP和Servlet过滤器的安全框架.它提供全面的安全性解决方案,同时在Web请求级和方法调用级处理 ...
- Spring security3
最近一直在学习spring security3,试着搭建了环境: 构建maven环境 项目配置pom.xml文件 <project xmlns="http://maven.apache ...
- spring security3.2配置---权限管理
之前已经在我的博客中发过security的执行流程图了,大家能够先去看看那个图再看这篇.今天我主要在这里贴出了security配置中的几个重要的类和两个xml配置文件,基本上控制权限的就是这几个文件了 ...
- 【翻译自mos文章】改变数据库用户sysman(该用户是DB Control Repository 的schema)password的方法
改变数据库用户sysman(该用户是DB Control Repository 的schema)password的方法 參考原文: How To Change the Password of the ...
- Spring Security3实现,权限动态获取
Spring Security3实现,权限动态获取 原文 http://blog.csdn.net/yangwei19680827/article/details/9359113 主题 网络安全Sp ...
随机推荐
- C# winform 界面美化技巧(扁平化设计)
关于C#界面美化的一些小技巧 在不使用第三方控件如 IrisSkin 的前提下,依然可以对winform做出让人眼前一亮的美化 首先,我们先来实现主界面的扁平化 此处分为两个步骤,第一步是更改winf ...
- hoops暂时用过的一些方法
(中文全部为谷歌翻译) HC_EXTERNAL void HC_CDECL HC_Show_Shell HC_PROTO ((HC_KEY, int *, HC_POINT *, int *, int ...
- CSS 是程序员的画笔
在未来的所有界面.皮肤,都将使用CSS来表现.包括网页.应用.甚至现实物体的包装等等. 因为CSS实践的理念十分优秀:抽离.分类.统一. CSS将是程序员的画笔. 刚做出来的程序基本都是一个样子.产品 ...
- 移动端常用的meta
1. 禁止缩放:<meta name="viewport" content="width=device-width, initial-scale=1.0, maxi ...
- debian下Apache和tomcat整合(使用apt工具)
最近部署web系统,需要使用tomcat处理和Apache整合使用,tomcat处理JSP,Apache处理静态资源.开始不知道怎么操作,在网上查阅资料走了很多弯路.完成时候,发现其实很简单,现将配置 ...
- MongoDB和Redis-NoSQL数据库-文档型-内存型
1NoSQL简述 CAP(Consistency,Availabiity,Partitiontolerance)理论告诉我们,一个分布式系统不可能满足一致性,可用性和分区容错性这三个需求,最多只能同时 ...
- Python 爬虫5——爬取并下载网页指定规格的图片
看完上篇文档之后,我们对于正则表达式已经有了基本的了解,其实学习最有效的办法就是带着问题和目的,这里我们假设有一个目标:获取某个网页上指定规格的图片的链接地址,并下载到本地. 一.实现步骤: 1.在浏 ...
- 在update语句中使用子查询
在update 中的 where 子句中使用子查询: UPDATE mg_page_log as a SET page_num=1 WHERE id in( SELECT id from mg_ ...
- Python3.5+selenium操作Chrome浏览器
1.安装selenium 命令提示符下输入: pip install selenium 2.下载chromedriver 点击下载 3.将解压后的chromedriver.exe放到chrome浏览器 ...
- MAC显示文件夹路径
MAC显示文件夹路径 终端命令 1.显示路径:defaults write com.apple.finder _FXShowPosixPathInTitle -bool TRUE;killall Fi ...