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

从非隔离共享集群切换至共享集群后密钥使用失败问题

解决共享集群中Azure日志库客户端密钥无效问题

问题根源在于共享集群的安全策略限制:非隔离共享集群会自动解析Spark配置中的{{secrets/keyvault/s}}占位符为实际密钥值,但共享集群不会执行该解析,导致spark.conf.get("fs.azure.account.oauth2.client.secret")返回的是占位符字符串而非真实密钥,触发Azure身份验证报错。

解决方案步骤

  • 改用Databricks Secrets API直接获取密钥
    绕过Spark配置的限制,使用dbutils.secrets.get()直接从Secret Scope提取实际密钥值,这是共享集群中安全且可靠的敏感信息访问方式。

  • 修改后的代码示例

from azure.core.exceptions import HttpResponseError
from azure.identity import ClientSecretCredential
from azure.monitor.ingestion import LogsIngestionClient
import os

# 从Secret Scope直接获取客户端密钥(替换为你的Scope名称和Secret名称)
client_secret = dbutils.secrets.get("keyvault", "s")
# 保留原有方式获取客户端ID和租户ID
client_id = spark.conf.get("fs.azure.account.oauth2.client.id")
tenant_id = os.getenv("AZ_TENANT_ID")

# 初始化身份验证凭据
credential = ClientSecretCredential(
    tenant_id=tenant_id,
    client_secret=client_secret,
    client_id=client_id
)
client = LogsIngestionClient(endpoint=endpoint, credential=credential, logging_enable=True)
client.upload(....)
  • 验证权限配置
    确保:
    1. 你的Databricks Secret Scope(示例中为keyvault)已正确关联Azure Key Vault,且目标密钥s存在。
    2. 共享集群的运行用户或集群服务主体拥有该Secret Scope的READ权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 19:52:11