[玩转系统] SQL Server 中的公共角色
作者:精品下载站 日期:2024-12-14 06:05:35 浏览:16 分类:玩电脑
SQL Server 中的公共角色
数据库角色与 Windows 组类似 - 管理员不是单独撤销或授予每个用户访问权限,而是通过授予或撤销角色权限以及更改角色成员身份来管理访问权限。使用角色可以更轻松地准确地授予和撤销数据库用户的权限。由于多个用户可以是 SQL 数据库角色的成员,因此您可以轻松地同时管理整组用户的权限。
在这篇文章中,我们将解释 Microsoft SQL Server 中的公共角色以及与其相关的一些最佳实践。 (我们在这里故意使用小写字母,因为这是公共角色在 SQL Server 世界中的拼写方式,与 Oracle 世界不同。)
SQL Server 中的角色类型
Microsoft SQL Server 提供多种类型的预构建角色:
- 固定服务器角色——它们被称为“固定”服务器角色,因为除了公共角色之外,它们不能被修改或删除
- 固定数据库角色
- 应用程序角色 - 数据库主体,应用程序可以使用它以自己的一组权限运行(默认情况下禁用)
- 用户定义的角色(从 SQL Server 2012 开始)- 只有服务器级别的权限可以添加到用户定义的角色中
公共角色的定位
所有数据库平台都带有一个名为 public 的预定义角色,但该角色的实现因平台而异。在 SQL Server 中,公共角色是固定服务器角色的一部分,可以向 SQL Server 公共角色权限授予、拒绝或撤销权限。
创建 SQL Server 登录名后,公共角色将分配给该登录名并且无法撤销。如果服务器主体未授予或拒绝对安全对象的特定权限,则登录将自动继承授予公共角色的该对象的权限。
分配给公共角色的权限
为了维护 SQL Server 安全并遵守许多法规(包括 PCI DSS 和 HIPAA),您需要了解分配给每个用户的所有服务器和数据库级角色。让我们使用 Management Studio Transact-SQL 查询查看分配给公共角色的服务器级权限:
SELECT sp.state_desc as "Permission State", sp.permission_name as "Permission",
sl.name "Principal Name",sp.class_desc AS "Object Class", ep.name "End Point"
FROM sys.server_permissions AS sp
JOIN sys.server_principals AS sl
ON sp.grantee_principal_id = sl.principal_id
LEFT JOIN sys.endpoints AS ep
ON sp.major_id = ep.endpoint_id
WHERE sl.name = 'public';
如上表所示,public角色只分配了5个服务器级别的权限。请注意,VIEW ANY DATABASE 权限并不授予用户访问任何数据库对象的权限;它只允许他们列出 SQL Server 实例中的所有数据库。因此,如果您创建一个新的登录名,并且没有分配其他角色或权限,则该用户只能登录该实例,而无法执行任何其他操作。
为 SQL Server 登录分配默认数据库时的权限
现在,让我们通过为该用户分配默认数据库来创建使用 SQL 身份验证的 SQL Server 登录名。
USE [master]
GO
CREATE LOGIN [SQTest] WITH PASSWORD=N'nhggLboBn6SHolSWfipjzO/7GYw8M2RMbCt1LsCTK5M=', DEFAULT_DATABASE=[SBITS], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF
GO
如果我们以该用户身份登录并列出该用户的默认数据库 SBITS 的所有数据库级别权限,我们就可以看到他们拥有哪些权限。如下所示,用户 Stealth 对 SBITS 数据库没有任何权限,即使这是用户的默认数据库。换句话说,仅仅因为将默认用户数据库分配给用户登录名,并不意味着该用户将能够看到数据库对象或数据。
为了验证这一点,我们可以使用以下脚本:
EXECUTE AS LOGIN= 'SQTest';
GO
USE SBITS
GO
SELECT dp.state_desc AS "Class Description", dp.permission_name AS "Permission Name",
SCHEMA_NAME(ao.schema_id) AS "Schema Name", ao.name AS "Object Name"
FROM sys.database_permissions dp
LEFT JOIN sys.all_objects ao
ON dp.major_id = ao.object_id
JOIN sys.database_principals du
ON dp.grantee_principal_id = du.principal_id
WHERE du.name = 'TestLoginPerms'
AND ao.name IS NOT NULL
ORDER BY ao.name;
REVERT
主数据库上公共角色继承的权限
由于默认情况下,用户登录 Stealth 是 public 角色的一部分,因此让我们看看 public 角色对 master 数据库继承的权限。
USE master;
GO
SELECT sp.state_desc AS "Permission State", sp.permission_name AS "Permission",
SCHEMA_NAME(ao.schema_id) AS 'Schema', ao.name AS "Object Name"
FROM sys.database_permissions sp
LEFT JOIN sys.all_objects ao
ON sp.major_id = ao.object_id
JOIN sys.database_principals dp
ON sp.grantee_principal_id = dp.principal_id
WHERE dp.name = 'public'
AND ao.name IS NOT NULL
ORDER BY ao.name
在 SQL Server 2016 中,授予 public 角色的 master 数据库中存储了 2,089 个权限。虽然这看起来令人畏惧,但它们都是 SELECT 权限,并且不允许用户 Stealth 在 master 数据库中进行任何更改。但是,最好根据组织中的安全策略撤销某些权限。但是,撤销它们时要小心,因为有些是用户在某些情况下正常操作所必需的。
简化角色审核和管理
考虑使用 StealthAUDIT,而不是求助于复杂的自定义脚本来一次找出与一个实例中的公共角色相关的问题。该数据访问治理平台可以枚举所有 SQL Server 角色和权限,包括 SQL Server 公共角色和 SQL Server 公共数据库角色,并生成开箱即用的详细权限报告。它提供了企业中所有 SQL Server 公共角色的单一管理平台视图,并帮助您只需单击一个按钮即可修复任何问题。
SQL Server 中公共角色的最佳实践
当涉及 SQL Server 中的公共角色时,我们建议采用以下最佳实践:
- 在任何情况下,都不要向公共角色授予默认权限之外的任何其他权限。如有必要,请使用用户定义的角色。
- 不要修改public角色的服务器级权限,因为这样做可能会阻止用户连接到数据库。
- 每次升级 SQL Server 时都要检查公共权限,因为 Microsoft 经常对公共角色进行更改。
常问问题
公共数据库的作用是什么?
授予公共数据库角色的权限由每个数据库用户继承。
SQL Server 中的 public 角色有哪些权限?
每个 SQL Server 登录名都属于公共服务器角色。当服务器主体尚未被授予或拒绝对安全对象的特定权限时,用户会继承对该对象授予的权限给公共角色。
猜你还喜欢
- 03-30 [玩转系统] 如何用批处理实现关机,注销,重启和锁定计算机
- 02-14 [系统故障] Win10下报错:该文件没有与之关联的应用来执行该操作
- 01-07 [系统问题] Win10--解决锁屏后会断网的问题
- 01-02 [系统技巧] Windows系统如何关闭防火墙保姆式教程,超详细
- 12-15 [玩转系统] 如何在 Windows 10 和 11 上允许多个 RDP 会话
- 12-15 [玩转系统] 查找 Exchange/Microsoft 365 中不活动(未使用)的通讯组列表
- 12-15 [玩转系统] 如何在 Windows 上安装远程服务器管理工具 (RSAT)
- 12-15 [玩转系统] 如何在 Windows 上重置组策略设置
- 12-15 [玩转系统] 如何获取计算机上的本地管理员列表?
- 12-15 [玩转系统] 在 Visual Studio Code 中连接到 MS SQL Server 数据库
- 12-15 [玩转系统] 如何降级 Windows Server 版本或许可证
- 12-15 [玩转系统] 如何允许非管理员用户在 Windows 中启动/停止服务
取消回复欢迎 你 发表评论:
- 精品推荐!
-
- 最新文章
- 热门文章
- 热评文章
[影视] 黑道中人 Alto Knights(2025)剧情 犯罪 历史 电影
[古装剧] [七侠五义][全75集][WEB-MP4/76G][国语无字][1080P][焦恩俊经典]
[实用软件] 虚拟手机号 电话 验证码 注册
[电视剧] 安眠书店/你 第五季 You Season 5 (2025) 【全10集】
[电视剧] 棋士(2025) 4K 1080P【全22集】悬疑 犯罪 王宝强 陈明昊
[软件合集] 25年6月5日 精选软件22个
[软件合集] 25年6月4日 精选软件36个
[短剧] 2025年06月04日 精选+付费短剧推荐33部
[短剧] 2025年06月03日 精选+付费短剧推荐25部
[软件合集] 25年6月3日 精选软件44个
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电视剧] 欢乐颂.5部全 (2016-2024)
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[影视] 【稀有资源】香港老片 艺坛照妖镜之96应召名册 (1996)
[剧集] 神经风云(2023)(完结).4K
[剧集] [BT] [TVB] [黑夜彩虹(2003)] [全21集] [粤语中字] [TV-RMVB]
[实用软件] 虚拟手机号 电话 验证码 注册
[资源] B站充电视频合集,包含多位重量级up主,全是大佬真金白银买来的~【99GB】
[影视] 内地绝版高清录像带 [mpg]
[书籍] 古今奇书禁书三教九流资料大合集 猎奇必备珍藏资源PDF版 1.14G
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电影] 美国队长4 4K原盘REMUX 杜比视界 内封简繁英双语字幕 49G
[电影] 死神来了(1-6)大合集!
[软件合集] 25年05月13日 精选软件16个
[精品软件] 25年05月15日 精选软件18个
[绝版资源] 南与北 第1-2季 合集 North and South (1985) /美国/豆瓣: 8.8[1080P][中文字幕]
[软件] 25年05月14日 精选软件57个
[短剧] 2025年05月14日 精选+付费短剧推荐39部
[短剧] 2025年05月15日 精选+付费短剧推荐36部
- 最新评论
-
- 热门tag