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 ...
随机推荐
- Mac无法写入移动硬盘
1.使用mac 磁盘工具,格式化移动硬盘 频繁穿插于mac于pc之间者,大批量拷贝大型文件者,请用exfat 首先,排除Fat32,虽然这是兼容性最好的文件格式,但一个不支持4g以上文件的格式(现在随 ...
- js 短信验证码 计时器
$(function(){ getMsg(); //页面加载完成之后执行 }) function getMsg(){ //注册按钮的点击事件 $("#smsBtn").on(&qu ...
- JAVA_javax.net.ssl.SSLProtocolException: handshake alert: unrecognized_name
tomcat访问https请求返回: javax.net.ssl.SSLProtocolException: handshake alert: unrecognized_name at sun.se ...
- Linux命令dos2unix 从windows转换到linux --- nuix2dos从linux转换到windows
dos2unix命令用来将DOS格式的文本文件转换成UNIX格式的(DOS/MAC to UNIX text file format converter).DOS下的文本文件是以\r\n作为断行标志的 ...
- Qgis连接Oracle
CMake编译中选择编译Oracle一项以后,编译的qgis才会有连接Oracle数据库的功能. 编译qgis以后,可以通过添加矢量图层中选择Oracle数据库,或是添加Oracle空间图层,或是添加 ...
- 机器学习&深度学习资料
机器学习(Machine Learning)&深度学习(Deep Learning)资料(Chapter 1) 机器学习(Machine Learning)&深度学习(Deep Lea ...
- post与get区别
学习中,遇到get和post的提交方式,搜索整理了一下其区别: 关键词: PHP,Post,Get,区别 转载文章一: PHP中post与get的区别 Post 方法通过 HTTP post 机制,将 ...
- pythonchallenge 解谜 Level 2
好吧,赶紧贴一下. #-*- coding:utf-8 -*- #代码版本均为python 3.5.1 #Level 2 import re file = open("Level 2.txt ...
- Xamarin的不归路-安卓模拟器启动慢&没有虚拟键盘
1.启动慢解决方案:参考这篇文章进行配置 http://www.360doc.com/content/13/1002/18/532901_318605525.shtml 2.模拟器没有虚拟键盘解决方案 ...
- WebService创建与使用
因为项目中需要实现客户端与服务器端的数据交换,以及获取服务器端其他程序的分析结果,所以对WebService做了些简单的了解,现记录如下: 一.WebService程序编写 1. 在VS中新建空白网 ...