如何在Azure Synapse T-SQL中从Azure Key Vault获取证书密码
在Synapse中从Azure Key Vault获取密码创建证书的可行方案
可行。你可以通过Synapse与Azure Key Vault的托管身份集成,结合T-SQL变量实现密码动态获取,避免硬编码。具体步骤如下:
步骤1:配置权限关联
确保Synapse工作区的托管身份被授予Azure Key Vault的Secret Get权限(在Key Vault的访问策略中添加该权限)。步骤2:创建连接凭证与数据源
在Synapse SQL池中执行以下T-SQL,建立与Key Vault的连接:-- 创建数据库范围凭证(基于托管身份验证) CREATE DATABASE SCOPED CREDENTIAL KeyVaultAuth WITH IDENTITY = 'Managed Identity'; -- 创建指向目标Key Vault的外部数据源 CREATE EXTERNAL DATA SOURCE AzureKeyVaultSource WITH ( LOCATION = 'https://<你的Key Vault名称>.vault.azure.net/', CREDENTIAL = KeyVaultAuth );步骤3:动态获取密码并创建证书
通过OPENROWSET读取Key Vault中的秘密,赋值给变量后执行证书创建语句:DECLARE @certPassword NVARCHAR(200); -- 从Key Vault读取指定密码秘密(替换<你的密码秘密名称>为实际名称) SELECT @certPassword = CAST(BulkColumn AS NVARCHAR(200)) FROM OPENROWSET( BULK 'secrets/<你的密码秘密名称>', DATA_SOURCE = 'AzureKeyVaultSource', SINGLE_BLOB ) AS SecretData; -- 使用动态获取的密码创建证书 CREATE CERTIFICATE ZZZZ_Certificate ENCRYPTION BY PASSWORD = @certPassword WITH SUBJECT = 'ZZZ Information', EXPIRY_DATE = '20221231';
注意事项
- 替换代码中的
<你的Key Vault名称>和<你的密码秘密名称>为实际资源信息 - 确保Key Vault中的秘密值符合SQL Server证书密码的复杂度要求
- 该方案适用于Synapse专用SQL池,无服务器池需根据环境调整访问方式
内容的提问来源于stack exchange,提问作者Rajib
相关产品推荐
相关产品推荐

