asp.net - 在 SQL SERVER 2005 上启用 CLR 是否存在任何安全问题?

标签 asp.net sql sql-server security

我正在考虑使用 EXEC sp_configure 'clrenabled', 1 在我的 SQL 服务器上启用 CLR

但是,我正在与其他几个开发人员及其项目共享我的数据库服务器。我隐约听说他们可能是security issues启用此功能。

有谁知道这些问题可能是什么?在 SQL Server 上使用 CLR 安全吗?

最佳答案

不,SQLCLR 代码在数据库中不能比在相同安全上下文下运行的等效 T-SQL 代码模块执行更多操作。

这曾经是并且现在是所有 SQL Server 中最容易被误解的安全声明(尤其是 2012 年之后),它可能会破坏与 SCCM databases 的 UI 连接。 ,旗舰ETL部署模型SSISDB(需要CLR),因为继承CIS基准(主要是DBProtect)的第3方安全工具即使服务器没有运行2000,也会通过2000错误地标记SQL Server排序系数,错误地指示DBA重建master如果没有人对这一发现发表意见,就会永远削弱他们的环境和应用程序(区分大小写)。 CLR 不是安全风险,它允许通过 RDP 和文件系统权限缓解以及 SSIS 代码管理(例如 SQL Server 2012 之后)在多个方面对安全性进行旗舰增强。 SSISDB,这可能会影响每 90% 的 SQL Server 商店,包括不依赖单个 SAN 的 HA 解决方案。

关于那些根本不喜欢 CLR 的 DBA 的附注,因为它“如果做得不好,则很难排除故障” - 对高级 .NET 开发人员代码进行故障排除主要不属于 DBA 的职权范围,如果您雇用了糟糕的 DBA,他们也会这么做可能很难排除故障(请参阅上面的整理)。此外,大多数利用 CLR 的人都是为了旗舰功能而这样做,与编写 CLR 代码几乎没有关系(尽管 script tasks in SSIS leverage this 在一定程度上),而更多地与 SSISDB 和跨 SAN 使用可用性组相关。不喜欢此功能的 DBA 应该跳入时间扭曲并进入 2008 年的停滞模式。这是从全栈 BI/DBA 角度编写的,而不是从有点短视的系统内部优势角度编写的。

此外,Availability Groups utilize CLR ,如果未启用 CLR,则会导致错误。更多信息也经过审核Technet

可用性组和 SSISDB 都是现代 SQL Server 环境的旗舰功能。

目前,通过启用 CLR 并通过 SSISDB 部署 SSIS 包,您可以减轻文件系统组织管理不善和困惑的情况,获得继承的备份维护计划甚至 TDE,并且实际上大大降低了 RDP 对 SSIS 包进行故障排除的需要。

询问您的 DBA,如果他非常关心安全性,为什么要设置混合模式身份验证、SSMS 或 SSRS 或 Excel 客户端没有 SSL 证书、未启用 TDE、缺乏审核甚至不记录成功和失败的登录。

http://www.codemag.com/article/0603031

要启用 CLR,只需运行

sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'clr enabled', 1;
GO
RECONFIGURE;
GO

关于asp.net - 在 SQL SERVER 2005 上启用 CLR 是否存在任何安全问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5488808/

相关文章:

c# - 如何在具有多个服务器的高流量 asp.net 应用程序中实现随机数流

asp.net - CSS 未应用于未经身份验证的 ASP.NET 页面

mysql - SQL Join 返回零,但应该返回正确的值

c# - 无法打开登录请求的数据库 "dbname"。登录失败。用户 "machinname\username"登录失败

c# - 哪种 C# 数据类型相当于 SQL Server 中的钱?

mysql - 在 SQL 中对字符串使用 'IN' 子句

c# - 如何将日期从一种文化转换为另一种文化?

javascript - Web 应用程序的问题

Qt 应用程序中多个线程中的 SQL 连接

mysql - 如何使用 INNER JOIN 和 ORDER BY 优化 MySQL 查询