【问题标题】:Error creating ASYMMETRIC KEY - Cannot open session for cryptographic provider for SQL Server Cryptographic Provider for Azure Key Vault创建 ASYMMETRIC KEY 时出错 - 无法为 Azure Key Vault 的 SQL Server 加密提供程序的加密提供程序打开会话
【发布时间】:2022-11-01 17:07:26
【问题描述】:

我正在 SQL Server 数据库上创建一个非对称密钥,并安装了 Azure Key Vault 的 SQL 连接器,并且我正在按照链接 setup steps for extensible key management using the azure key vault 中提到的步骤进行操作。

我能够创建 CRYPTOGRAPHIC PROVIDER 和凭据,但是当我尝试使用以下查询创建非对称密钥时,出现错误

 CREATE ASYMMETRIC KEY EKMASYKey
 FROM PROVIDER [KeyVault_EKM]
 WITH PROVIDER_KEY_NAME = 'CMKAuto1',
 CREATION_DISPOSITION = OPEN_EXISTING;

以下是我得到的错误

无法打开加密提供程序“KeyVault_EKM”的会话。 提供程序错误代码:2050。(提供程序错误 - 没有解释是 可用,详情请咨询 EKM 提供商)

我看到了类似的问题Here 并在注册表中设置了“SQL Server Cryptographic Provider”,并为运行 SQL Server 的服务帐户(NT Service\MSSQLSERVER)提供了完全控制的权限,并查看了权限。但仍然收到此错误

还有什么我需要设置的我缺少的东西。

【问题讨论】:

    标签: sql-server encryption azure-keyvault encryption-asymmetric


    【解决方案1】:

    我已经在活动目录中注册了一个应用程序并为该应用程序创建了秘密。 图片供参考:

    我创建了 Azure 密钥保管库,并为我在 azure Active Directory 中注册的应用程序创建了两个访问策略。 图片供参考:

    我在 azure 密钥库中创建了密钥。 图片供参考:

    我在本地机器上安装了 SQL Server 连接器。 图片供参考:

    在 SSMS 中,我通过运行以下 Transact-SQL 脚本将 SQL Server 配置为使用 EKM:

    USE master;
    GO
    EXEC sp_configure 'show advanced options', 1;
    GO
    RECONFIGURE;
    GO
    EXEC sp_configure 'EKM provider enabled', 1;
    GO
    RECONFIGURE;
    

    我使用以下代码创建了 Cryptographic 提供程序。

    CREATE CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM FROM  FILE = 'C:Program FilesSQL Server Connector for Microsoft Azure Key VaultMicrosoft.AzureKeyVaultService.EKM.dll'; GO
    

    图片供参考:

    我为 SQL Server 登录创建了 SQL Server 凭据以使用密钥保险库,其中身份是​​密钥保险库名称,机密是应用程序客户端 ID 和应用程序机密的连接,无需使用以下代码。

     USE master;
        CREATE CREDENTIAL sysadmin_ekm_cred
            WITH IDENTITY = 'ContosoEKMKeyVaulta',                           
            SECRET = '663e01f3-7537-49f6-8074-1ac787d3d452ReplaceWithAADClientSecret'
        FOR CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM;
    Image for reference:
    

    图片供参考:

    我使用以下代码将凭据添加到 SQL Server 管理员的域登录。

    ALTER LOGIN bhanu
    ADD CREDENTIAL sysadmin_ekm_cred;
    

    图片供参考:

    我使用以下代码创建了新的非对称密钥,其中 PROVIDER_KEY_NAME 是我在 azure 密钥库中创建的密钥名称。

    CREATE ASYMMETRIC KEY EKMSampleASYKey
    FROM PROVIDER [AzureKeyVault_EKM]
    WITH PROVIDER_KEY_NAME = 'ContosEKMVault',
    CREATION_DISPOSITION = OPEN_EXISTING;
    

    我也遇到了同样的错误。

    图片供参考:

    我改变了我的秘密字符串如下 秘密 = 'clientId+ReplaceWithAADClientSecret' 代码;

    USE master;  
    CREATE CREDENTIAL sysadmin_ekm_cred   
        WITH IDENTITY = 'ContosoEKMKeyVault', -- for global Azure
        SECRET = '<clientId>ReplaceWithAADClientSecret'   
    FOR CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM; 
    

    图片供参考:

    笔记:

    The secret string that is the concatenation of AAD client ID and secret is shorter than 32 characters
    

    它解决了我的问题并成功运行。

    图片供参考:

    【讨论】:

      猜你喜欢
      • 2018-11-10
      • 2021-05-20
      • 2021-11-28
      • 2016-07-02
      • 1970-01-01
      • 2021-09-07
      • 1970-01-01
      • 2021-01-24
      • 2021-03-15
      相关资源
      最近更新 更多