在SQL Server中使用别名用户的安全问题
SQL Server有很多很好用的小功能,但是有时候这些功能反过来给你制造麻烦。其中一个这样的问题是别名用户的使用。本技巧教你如何在数据库中建立别名用户时找到安全漏洞,不过在SQL Server 2008种不推荐这个功能。
首先,你可以对每个数据库运行下面的简单查询或者针对所有数据库操作它来运行以便找到带有“dbo”访问权限的用户。
SELECT DISTINCT DB_NAME() DATABASE_NAME,
SU.NAME DATABASE_USERNAME
FROM SYSUSERS SU
JOIN SYSMEMBERS SM
ON SM.MEMBERUID = SU.UID
INNER JOIN SYSMEMBERS SM1
ON SM.MEMBERUID = SM1.MEMBERUID
INNER JOIN SYSUSERS SU1
ON SM1.GROUPUID = SU1.UID
AND SU1.NAME = 'db_owner'
AND SU.NAME <> 'dbo'
但是,此查询可能不能找到所有具有“dbo”访问权限的用户,因为SQL Server 中的一个安全漏洞。让我来解释这个问题。
让我们创建两个登录,AliasUser1和DBUser1.
别名AliasUser1分配给“dbo”角色。
把用户DBUser1添加到角色“dbo”中,如果我们需要把“dbo”权限授给一个数据库用户,那么这是一种很正常的行为。
下面的脚本将为我们做这些动作:
IF NOT EXISTS (SELECT *
FROM SYS.SERVER_PRINCIPALS
WHERE NAME = N'AliasUser1‘)
CREATE LOGIN [AliasUser1]
WITH PASSWORD=N'test', DEFAULT_DATABASE=[master], DEFAULT_LANGUAGE=[us_english],
CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF
GO
IF NOT EXISTS (SELECT *
FROM SYS.SERVER_PRINCIPALS
WHERE NAME = N'DBUser1’)
CREATE LOGIN [DBUser1]
WITH PASSWORD=N'test', DEFAULT_DATABASE=[master], DEFAULT_LANGUAGE=[us_english],
CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF
GO
--add a aliased user with dbo priveleges
exec sp_addalias 'AliasUser1','dbo'
--add a regular db user to the dbo role
CREATE USER [DBUser1] FOR LOGIN [DBUser1]
现在,让我们从SSMS中检验我们刚创建的用户。注意,我们别名到“dbo”中的“AliasUser1”没有在用户下面出现。SQL Server没有在“用户”列表中显示别名用户。
图一 SSMS中的数据库用户
那么我们要如何找到一个数据库中的别名用户呢?执行下面的查询:
select * from sys.sysusers
在下面的结果集中,我们看到“AliasUser1”前面有一个“”,如果我们检查字段“isaliased”,在右边的第三个字段,那么它有一个为1的值。
图二 图三 sys.sysusers
下面的命令也能运行来显示所有的用户和别名。在下面的输出结果中,你可以看到别名用户“AliasUser1”没有作为一个用户出现,但是在第二个结果集中它作为一个别名用户出现。
exec sp_helpuser
图四 sp_helpuser
另一个需要注意的有趣之处是,你不能使用sp_dropuser存储过程来删除一个别名用户,相反,要使用sp_dropalias来删除。
通过一个登录使用一个到“dbo”的别名,这将让你完全访问自己的数据库,例如一个db_owner.不足之处是在SSMS中没有一个地方可以看到这个过程。你可以自己尝试。在其中一个你自己数据库中按照下面的步骤,然后使用登录“AliasUser1”和密码“test”,你可以看到该登录可以在你创建别名的数据库中进行任何它想要的行为。
下一步骤
针对你的数据库运行sp_helpuser,看看你是否建立了别名。
如果有别名用户具有“dbo”级别的权限,那么看看删除这些并使用下面所述的角色。
这个别名功能被微软阻止了很长一段时间,但是它仍然在2005中使用。我认为这是基于向后兼容的考虑。该功能在SQL 2008中取消了。
因此,如果你的应用程序正在使用别名,而它在SQL 2008中不能使用,那么使用上面提到的不同方法试试。(IT专家网)
- 1重庆OA客户
- 2成都OA客户
- 3贵阳OA软件行业资讯
- 4北京OA行业资讯
- 5深圳OA行业资讯
- 6南京OA行业资讯
- 7南宁OA行业资讯
- 8昆明OA软件行业资讯
- 9厦门OA行业资讯
- 10合肥OA软件行业资讯
- 11郑州OA行业资讯
- 12上海OA软件行业资讯
- 1中小企业数据加密部署的最佳做法
- 2数据中心缆线防火需求与标准盘点
- 3克服企业信息化管理软件CRM的缺点
- 4IPv6下一代互联网:从网络到网格
- 5制定绿色IT策略应该考虑的四个方面
- 6SNS社交类网站:员工很痴迷很老板很为难
- 7泛普OA基于设计院平台,国内绝无仅有
- 8IDC:数据保护工作需应对五大挑战
- 9降低服务器虚拟化的四大安全风险
- 10企业信息化:传统软件和Saas选那个?
- 11股份公司OA办公系统证照管理和会议管理实施功能简介
- 12信息安全:“泄密门”如何避免?
- 13信息安全法规与伦理道德调查
- 14OA办公系统流程审批自由流程解析
- 15SOA市场进入纵深发展的阶段
- 16SAS 下一代存储技术的新宠
- 17充分利用SSD需要系统架构的哪些支持?
- 18中小企业已成云存储服务最大用户群
- 19如何才能加快电子发现的速度
- 20开源云计算:新一代商业与技术潮流
- 21虚拟化技术先进的背后并非完美无缺
- 22对云计算架构模型的深度分析
- 23维护企业WLC控制器需要选择合适端口
- 24虚拟化技术在5个层面的应用
- 25企业接受虚拟化 云计算最受关注
- 26OA办公系统未来是简单好,还是全副武装好
- 27沈阳OA软件解决方案带给客户的价值?
- 28虚拟化用于IDC机房,只是十全九美
- 29澄清云计算概念 解析云计算现状
- 30中小企业如何选择Linux备份工具?