如何在Synapse Notebook中从配置特定网络访问的Key Vault获取密钥?
在Synapse Notebook中从受网络限制的Key Vault获取密钥
由于你的Key Vault限制了仅允许特定虚拟网络/IP访问,首先要确保Synapse工作区能合法访问Key Vault,再通过以下两种方式实现密钥获取:
一、先确保Synapse的网络访问权限
你需要满足以下任一条件:
- 将Synapse工作区的托管虚拟网络(若已启用)添加到Key Vault的允许虚拟网络列表
- 将Synapse工作区的出站公网IP添加到Key Vault的允许IP地址范围
- 为Synapse和Key Vault配置私有链接(生产环境推荐,避免公网依赖)
同时,给Synapse的系统托管标识(或你指定的服务主体)配置Key Vault的Secret Get权限,确保有权读取密钥。
二、方法1:使用Azure Key Vault链接服务
- 在Synapse Studio中创建链接服务:
- 进入「管理」→「链接服务」→「新建」,搜索选择「Azure Key Vault」
- 选择目标Key Vault,认证方式选「系统托管标识」(推荐),并确认该标识已在Key Vault有读取权限
- 在Notebook中调用密钥:
PySpark示例
from azure.keyvault.secrets import SecretClient from azure.identity import DefaultAzureCredential key_vault_uri = "https://your-key-vault-name.vault.azure.net/" credential = DefaultAzureCredential() secret_client = SecretClient(vault_url=key_vault_uri, credential=credential) # 获取指定密钥 secret_val = secret_client.get_secret("your-secret-name").valueSpark SQL示例
SELECT SecretValue FROM OPENROWSET( PROVIDER = 'AzureKeyVault', CONNECTION = 'https://your-key-vault-name.vault.azure.net/', OBJECT = 'your-secret-name' ) WITH (SecretValue VARCHAR(MAX)) AS secret_data
三、方法2:使用Synapse Secret Scope(和Databricks用法一致)
- 创建Key Vault绑定的Secret Scope:
- 进入Synapse Studio「管理」→「机密」→「Secret Scopes」,点击「新建」
- 选择「Azure Key Vault」类型,关联目标Key Vault,按需选择要同步的密钥
- 在Notebook中直接读取:
# 语法和Databricks完全一致 secret_val = dbutils.secrets.get(scope="your-secret-scope-name", key="your-secret-name")
内容的提问来源于stack exchange,提问作者Sumanth Reddy
相关产品推荐
相关产品推荐

