You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Databricks中通过Key Vault读取Azure Blob存储(替代SAS令牌)

用Azure Key Vault存储账户密钥替代SAS令牌,实现Databricks每日任务稳定读取数据

可行方案

  • 把存储账户密钥存入Azure Key Vault,给Databricks配置好访问该密钥的权限
  • 在Databricks中创建对应Key Vault的机密范围,通过这个范围安全拉取密钥,杜绝硬编码
  • 用存储账户密钥配置Spark的Blob存储访问参数,替换原有的SAS令牌配置

代码示例

前提:已在Databricks中创建指向目标Key Vault的机密范围(示例命名为my-keyvault-scope),且存储账户密钥已存入Key Vault(机密名称示例为storage-account-key)。

替换原SAS令牌配置的代码如下:

# 从Key Vault机密范围读取存储账户密钥
storage_account_key = dbutils.secrets.get(scope="my-keyvault-scope", key="storage-account-key")
storage_account_name = "storageaccount"
container_name = "mycontainer"

# 配置Spark使用存储账户密钥访问Blob存储
spark.conf.set(
    f"fs.azure.account.key.{storage_account_name}.blob.core.windows.net",
    storage_account_key
)

# 验证存储容器访问权限
dbutils.fs.ls(f"wasbs://{container_name}@{storage_account_name}.blob.core.windows.net/")

# 流式读取数据并写入指定表
file_path = f"wasbs://{container_name}@{storage_account_name}.blob.core.windows.net/topics/logs"
(spark.readStream
 .format("cloudFiles")
 .option("cloudFiles.format", "json")  
 .schema(schema)
 .load(file_path)
 .writeStream
 .option("checkpointLocation", checkpoint_path)
 .trigger(availableNow=True)
 .toTable(table_name))

关键注意事项

  • 确保Databricks集群使用的服务主体(或托管身份)拥有Key Vault的机密用户权限,能够读取目标密钥
  • 通过机密范围获取密钥时,密钥明文不会在Notebook或运行日志中泄露,安全性更高
  • 存储账户密钥的权限范围比容器级SAS令牌更广,需严格控制密钥的访问权限,避免权限过度扩散

内容的提问来源于stack exchange,提问作者ZZZSharePoint

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 13:07:41