我已经在活动目录中注册了一个应用程序并为该应用程序创建了秘密。
图片供参考:
我创建了 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
它解决了我的问题并成功运行。
图片供参考: