是否存在与SQLCLR(汇编)实施的可信赖数据库相关的风险?

时间:2013-03-08 06:46:24

标签: sql-server sql-server-2008 security sqlclr

我需要编写一个SQLCLR函数来访问外部文件。我通过将trustworthy on提供给我的数据库来完成它。有没有其他方法可以在不提供trustworthy on的情况下访问外部资源? SQLCLR实施的可靠数据库是否存在任何风险?

2 个答案:

答案 0 :(得分:3)

存在风险,但如果您控制数据库中存在的所有代码,则风险很小。如果您对程序集使用external_access或不安全权限,则需要将可信任设置为on,否则SQL服务器实际上不会信任您的代码,也不会让它超出实例。

以下是Microsoft的链接,详细说明了设置可信标志的一些准则:

Guidelines for using the TRUSTWORTHY database setting in SQL Server

答案 1 :(得分:2)

为了避免TRUSTWORTHY ON访问外部资源的数据库,请遵循以下过程:

USE MASTER;
CREATE ASYMMETRIC KEY '<youKeyName>' FROM EXECUTABLE FILE = '<Your dll file path>';
CREATE LOGIN '<yourUserName>' FROM ASYMMETRIC KEY '<yourKeyName>';
GRANT EXTERNAL ACCESS ASSEMBLY TO '<yourUserName>';
USE '<YOUR DB NAME>';
CREATE ASSEMBLY '<Assembly name>' FROM '<Your dll file path>'
    WITH PERMISSION_SET = EXTERNAL_ACCESS;

试试这个:) -