【问题标题】:How to deploy certificate and signed assembly to other database?如何将证书和签名程序集部署到其他数据库?
【发布时间】:2021-04-14 19:54:10
【问题描述】:

我创建了一个证书,签署了我的程序集 (UNSAFE) 并且它可以正常工作,一切都如那里所述

https://nielsberglund.com/2017/07/01/sqlclr-and-certificates/

现在我需要将解决方案部署到许多客户数据库。我不想更改 TRUSTWORTHY 设置。 是否可以在不使用文件系统的情况下部署它? IE。现在我正在使用二进制文件来创建程序集。 但是如何创建签名程序集并将其部署到其他数据库?

【问题讨论】:

    标签: sql-server sqlclr


    【解决方案1】:

    是的,您可以直接从 T-SQL 脚本创建所有内容,而无需引用文件系统。可以从十六进制字节(即VARBINARY 文字)创建证书,并且您可以使用我编写的一个小型命令行实用程序BinaryFormatter(开源;在 GitHub 上)。 BinaryFormatter 还可以将编译后的 DLL 转换为十六进制字节,以便与 CREATE ASSEMBLY 语句一起使用。

    另外,我应该指出,如果您使用证书,那么您确实不需要还需要启用TRUSTWORTHY。这是使用证书的原因之一。只需确保将证书加载到[master],从证书创建关联登录,并授予该登录UNSAFE ASSEMBLY 权限,所有尝试将程序集加载到任何数据库中。但是,一旦加载了证书,您就可以将程序集加载到任何数据库中,而无需进行更多配置(尤其是无需在任何地方启用 TRUSTWORTHY)。

    另外,如果您希望在仍然使用证书的同时简化/自动化您的构建过程,请参阅我的以下两篇文章:

    可以在我对以下 S.O. 的回答中找到更多详细信息。问题:

    CLR Strict Security on SQL Server 2017

    附:如果增强了CREATE ASYMMETRIC KEY 命令以允许从二进制字符串创建,则此过程将简单一千倍。我在 Microsoft Connect 上提出了这个建议——Allow Asymmetric Key to be created from binary hex bytes string just like CREATE CERTIFICATE——所以请支持它:-)。

    【讨论】:

    • 嗨,所罗门,太好了!顺便说一句,在阅读了您关于不要触摸可信赖设置的文章后,我就这样走了!就我而言,我不知道真正的设置是什么,因为它在客户的管理员手中。谢谢!我会努力做到的。
    • 另一个问题:如何与Service Broker合作?在其他服务器上恢复数据库后,它停止了。恢复的数据库有一个 Trustworthy Off,我将它设置为 On。我知道这是不好的做法。在这种情况下如何恢复代理工作? (我可以创建单独的问题)
    • 完成:我在 MS Connect 上对您的建议进行了投票!
    • @ZedZip - 请创建另一个关于 Service Broker 的问题;这与您最初的问题无关。
    • 完成:关于 Service Broker stackoverflow.com/questions/65681589/…的新问题
    猜你喜欢
    • 2015-04-29
    • 1970-01-01
    • 2014-12-30
    • 1970-01-01
    • 1970-01-01
    • 2014-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多