Eun*_*ris 5 .net c# unsafe sqlclr visual-studio
我在我的 C# CLR 代码中使用 .NET DirectoryServices 和 DirectoryServices.AccountManagement。我想发布到我的 SQL Server 数据库作为一个不安全的 CLR 存储过程。在 Visual Studio 中,我签署了我的 CLR 项目。我想避免打开“值得信赖”。我还如何签署程序集?我知道这听起来很简单,但我在谷歌上搜索了 4 个小时却没有找到答案。当我将 Stairway 下载到 CLR 时,我以为我已经很接近了,但在那里找不到答案。
首先:感谢您没有走简单的路线并启用TRUSTWORTHY. 严重地。正确地做到这一点并没有那么多工作,所以我(和你的雇主)感谢你做更多的研究,当你无法进一步研究时,请寻求帮助。
如果您指的是SQL Server Central 上的“ SQLCLR 的阶梯”系列,那么我就是这些文章的作者。如果信息不容易理解,我很抱歉。我将在这里概述步骤:
根据您正在做什么和总体要求,您可以在此处进行一些选择:
[master],标记为SAFE,以从中创建非对称密钥(您不会在此处执行代码所以它不需要UNSAFE在这里标记)。UNSAFE),那么我发现最好创建一个单独的空程序集,并使用相同的强名称密钥文件(即.pfx文件)签名用于主大会。然后我加载那个,空的但签名的,Assembly into [master],标记为SAFE一旦您创建[master]了一个.pfx程序集,并使用用于签署主程序UNSAFE集的相同文件进行签名,然后您可以简单地[master]从该程序集中创建一个非对称密钥。
从该非对称密钥创建登录
授予基于密钥的登录UNSAFE ASSEMBLY权限
这些步骤适用于 SQL Server 2005 - 2016,我提供了有关如何在 Visual Studio 中的Stairway to SQLCLR 级别 7:开发和安全文章中自动执行此操作(上面的选项 2 - 使用单独的、空的、已签名的程序集)的说明。(顺便说一句,我确实意识到第 7 级中描述的步骤确实有点多,但它们确实提供了一种使用 Visual Studio 的自动化方法,并且可以通过使用 T4 模板(VS 随附)来简化它们——但我没有还没有时间写出简化的方法——不过希望很快)。
但是,如果您需要考虑 SQL Server 2017(或更新的,大概),那么上述步骤将不起作用,因为即使SAFE没有签名并且具有相应的基于签名的具有UNSAFE ASSEMBLY权限的登录,也无法再创建程序集。而且,不幸的是,CREATE ASYMMETRIC KEY不允许从十六进制字节字符串/VARBINARY文字创建,因此您需要使用允许以这种方式创建的证书。沿着这些思路,我有两篇博客文章详细介绍了如何通过 Visual Studio(甚至不使用 Visual Studio)完全自动化地实现这一点:
无论您做什么,都不要上当使用 SQL Server 2017 的新“可信程序集”功能,因为它存在许多问题,如下所述:SQLCLR 与 SQL Server 2017,第 4 部分:“可信程序集”——失望还有一篇我现在正在处理的帖子。
为了帮助改进这个不必要的痛苦过程,请支持我改进CREATE ASYMMETRIC KEY和 SSDT 的增强请求:
| 归档时间: |
|
| 查看次数: |
2645 次 |
| 最近记录: |