Chapter 2 User Authentication, Authorization, and Security(9):防止登录名和用户查看元数据

原文出处:http://blog.csdn.net/dba_huangzj/article/details/39003679。专题文件夹:http://blog.csdn.net/dba_huangzj/article/details/37906349

未经作者同意。不论什么人不得以“原创”形式公布,也不得已用于商业用途。本人不负责不论什么法律责任。

前一篇:http://blog.csdn.net/dba_huangzj/article/details/38944121

前言:

在SQL Server 2005之前,全部server和数据库元数据都是全部人可见的。当基于网银的系统把SQL Server实例共享给客户时,有可能能够看到其它用户的信息。

从2005開始,能够通过控制权限来限制登录名或用户查看不必要的元数据。

实现:

假设你须要把数据库对全部登录名隐藏,能够移除public角色上的VIEW ANY DATABASE权限:

USE master;
GO
REVOKE VIEW ANY DATABASE TO public;

同意某些帐号查看全部数据库时。能够创建一个用户自己定义server角色:

USE master;
CREATE SERVER ROLE [DatabaseViewer];
GO
GRANT VIEW ANY DATABASE TO [DatabaseViewer];
ALTER SERVER ROLE [DatabaseViewer] ADD MEMBER [Fred];

注意,master和tempdcb总是对全部登录可见。

你不能选择性地对某些数据库设置可见。一个登录要么能从【对象资源管理器】中看到全部数据库。要么全部库都不能被看到。

假设一个登录名被授予VIEW ANY DATABASEserver权限,那么能够在【对象资源管理器】中看到server全部数据库,或者从sys.databases 文件夹视图中查询全部的数据库。

假设登录名没有这个权限可是映射到某个数据库的用户中,那么它依然不能看到全部数据库。可是能够使用sys.databases返回数据库信息。而且使用USE 数据库命令来切换数据库。

同意选择性地可见数据库的唯一方式是让登录名作为数据库的owner:

ALTER AUTHORIZATION ON DATABASE::marketing TO [Fred];

数据库的owner有数据库内全部权限,可是一个数据库仅仅有一个owner。不能让多个登录名同一时候对一个数据库进行owner设置。

在数据库内,能够定义特定数据库对象为某些用户可见。在SSMS中。右键数据库的【安全性】节点,选择【用户】→【属性】中的【安全对象】,然后在【查找】中加入特定对象,比方表、存储过程或者架构。然后勾选【查看定义】的【授予】列:

也能够用命令实现,这里注意上图中的【脚本】,当你不记得命令时,能够点一下这个button,会自己主动生成代码:

use [AdventureWorks2012]
GO
GRANT VIEW DEFINITION ON [dbo].[AWBuildVersion] TO [test]
GO

原理:

能够用以下语句查看可被授权的元数据权限:

SELECT  parent_class_desc AS parent ,
        class_desc AS class ,
        permission_name AS permission
FROM    sys.fn_builtin_permissions(NULL)
WHERE   permission_name LIKE ‘VIEW%‘
ORDER BY CASE parent_class_desc
           WHEN ‘‘ THEN 0
           WHEN ‘SERVER‘ THEN 1
           WHEN ‘DATABASE‘ THEN 2
           WHEN ‘SCHEMA‘ THEN 3
         END ,
        class ,
        permission;

【查看定义】的权限是能够在非server范围内查看的权限。

假设须要在全部范围内查看。须要使用【VIEW ANY DEFINITION】。授予这个权限能够同意登录查看实例中的全部定义,【查看全部数据库】适合那些仅须要訪问数据库可是不须要訪问server其它对象的登录名。

在数据库中。用户能够看到自己有权限的对象。默认情况下。一个用户仅是public数据库角色的成员,是没有权限的。

使用db_datareader固定数据库角色能够同意这个用户看到全部表,授予VIEW DEFINITION给存储过程、函数或者触发器,同意你看到其底层代码。

假设你不想让别人看到,能够在创建对象时使用WITH ENCRYPTION(在兴许介绍。)

下一篇:http://blog.csdn.net/dba_huangzj/article/details/39473895

时间: 2024-10-13 15:25:08

Chapter 2 User Authentication, Authorization, and Security(9):防止登录名和用户查看元数据的相关文章

Chapter 2 User Authentication, Authorization, and Security(2):创建登录帐号

原文出处:http://blog.csdn.net/dba_huangzj/article/details/38705965,专题目录:http://blog.csdn.net/dba_huangzj/article/details/37906349 未经作者同意,任何人不得以"原创"形式发布,也不得已用于商业用途,本人不负责任何法律责任. 前一篇:http://blog.csdn.net/dba_huangzj/article/details/38657111 前言: 登录帐号是定义

Chapter 2 User Authentication, Authorization, and Security(1):选择Windows和SQL 身份验证

原文出处:http://blog.csdn.net/dba_huangzj/article/details/38657111,专题目录:http://blog.csdn.net/dba_huangzj/article/details/37906349 未经作者同意,任何人不得以"原创"形式发布,也不得已用于商业用途,本人不负责任何法律责任. 前一篇:http://blog.csdn.net/dba_huangzj/article/details/38656615 前言: SQL Ser

Chapter 2 User Authentication, Authorization, and Security(10):创建包含数据库

原文出处:http://blog.csdn.net/dba_huangzj/article/details/39473895,专题目录:http://blog.csdn.net/dba_huangzj/article/details/37906349 未经作者同意,任何人不得以"原创"形式发布,也不得已用于商业用途,本人不负责任何法律责任. 前一篇:http://blog.csdn.net/dba_huangzj/article/details/39003679 前言: 在SQL Se

Chapter 2 User Authentication, Authorization, and Security(8):创建映射到登录名的数据库用户

原文出处:http://blog.csdn.net/dba_huangzj/article/details/38944121,专题目录:http://blog.csdn.net/dba_huangzj/article/details/37906349 未经作者同意,任何人不得以"原创"形式发布,也不得已用于商业用途,本人不负责任何法律责任. 前一篇:http://blog.csdn.net/dba_huangzj/article/details/38895357 前言: 登录名用于授权

Chapter 2 User Authentication, Authorization, and Security(11):在已还原的数据库中修正登录映射错误

原文出处:http://blog.csdn.net/dba_huangzj/article/details/39496517,专题目录:http://blog.csdn.net/dba_huangzj/article/details/37906349 未经作者同意,任何人不得以"原创"形式发布,也不得已用于商业用途,本人不负责任何法律责任. 前一篇:http://blog.csdn.net/dba_huangzj/article/details/39473895 前言: 如果你把非包含

Chapter 2 User Authentication, Authorization, and Security(3):保server避免暴力袭击

原版的:http://blog.csdn.net/dba_huangzj/article/details/38756693,专题文件夹:http://blog.csdn.net/dba_huangzj/article/details/37906349 未经作者同意.不论什么人不得以"原创"形式公布,也不得已用于商业用途,本人不负责不论什么法律责任. 前一篇:http://blog.csdn.net/dba_huangzj/article/details/38705965 前言: 暴力攻

Chapter 2 User Authentication, Authorization, and Security(4):限制SA帐号的管理权限

原文出处:http://blog.csdn.net/dba_huangzj/article/details/38817915,专题目录:http://blog.csdn.net/dba_huangzj/article/details/37906349 未经作者同意,任何人不得以"原创"形式发布,也不得已用于商业用途,本人不负责任何法律责任. 前一篇:http://blog.csdn.net/dba_huangzj/article/details/38756693 前言: SA帐号是SQ

Chapter 2 User Authentication, Authorization, and Security(3):保护服务器避免暴力攻击

原文出处:http://blog.csdn.net/dba_huangzj/article/details/38756693,专题目录:http://blog.csdn.net/dba_huangzj/article/details/37906349 未经作者同意,任何人不得以"原创"形式发布,也不得已用于商业用途,本人不负责任何法律责任. 前一篇:http://blog.csdn.net/dba_huangzj/article/details/38705965 前言: 暴力攻击(Br

Chapter 2 User Authentication, Authorization, and Security(7):创建和使用用户自定义服务器角色

原文出处:http://blog.csdn.net/dba_huangzj/article/details/38895357,专题目录:http://blog.csdn.net/dba_huangzj/article/details/37906349 未经作者同意,任何人不得以"原创"形式发布,也不得已用于商业用途,本人不负责任何法律责任. 前一篇:http://blog.csdn.net/dba_huangzj/article/details/38867489 前言: 从SQL Se