SQL Server 安全篇——安全元数据(2)——安全对象(Securable)元数据

186 篇文章 6 订阅
65 篇文章 0 订阅

本文属于SQL Server安全专题系列


 在某些日常工作中,安全配置文件可能会成为需要保护的对象。下面对这些可能进行简介, 并演示元数据如何帮助你验证或实施策略。


Code Signing:

 代码签名,代码注入攻击明显是违反了安全策略,可以使用代码签名来防御这类工具,假设安全策略上要求所有程序集和存储过程必须使用代码签名来最小化安全威胁。

 下面的代码返回在数据库中的存储过程那些已经进行代码签名和是否签名有效。代码中使用了两个安全元数据对象,第一个是sys.Certificates。另外一个是sys.fn_check_object_signatures()

 视图用于返回证书信息,而函数返回所有可签名对象的列表,并指示对象是否由指定证书或非对称密钥签名。 如果对象是由指定证书或非对称密钥签名,则还会返回该对象的签名是否有效。

DECLARE @thumbprint VARBINARY(20) ;   
--从sys.certificates中查询数据库的代码签名证书指纹(thumbprint)
SET @thumbprint = 
( 
SELECT thumbprint   
FROM sys.certificates   
WHERE name LIKE '%SchemaSigningCertificate%' 
) ;   
--把指纹传递给函数sys.fn_check_object_signatures检查存储过程的架构名
SELECT entity_id 
         ,  SCHEMA_NAME(o.schema_id) + '.' + OBJECT_NAME(entity_id) AS 
ProcedureName 
         , is_signed 
         , is_signature_valid   
FROM sys.fn_check_object_signatures ('certificate', @thumbprint)  cos 
INNER JOIN sys.objects o 
        ON cos.entity_id = o.object_id 
WHERE cos.type = 'SQL_STORED_ PROCEDURE ' ;   
GO   

特定表的权限:

 对于很多系统,可能会有一些包含敏感数据的表,这些表根据安全策略要进行权限控制并做跟踪。此时可以使用SQL Server的元数据信息来协助。
 SQL Server提供了一个系统存储过程sp_table_privileges来识别安全主体,并且获取对应的权限清单。如下代码列出库中所有表的权限:
EXEC sp_table_privileges @Table_name = '%' ; 
本机结果如下:


说明:

 由于可用的存储过程、视图、函数非常的多,无法一一列举,读者可以举一反三地在微软文档中找到其他扩展功能,比如sys.fn_check_object_signatures这个函数,当你了解它的功能之后,不妨看看左边的其他相关功能进行类比和尝试:


 举一反三才能真正地扩展知识面。








  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值