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

如何在Power BI Power Query(M)中从Azure Key Vault获取密钥?

解决方案:Power Query(M)调用Azure Key Vault REST API获取密钥

核心问题

直接使用Web.Contents的默认组织账户授权无法通过Azure Key Vault身份验证,因为AKV的REST API要求请求头中携带AAD Bearer访问令牌,而非Power BI默认的OAuth流程。

解决步骤

  1. 获取AAD访问令牌:使用Power Query内置的AzureAD.GetAccessToken函数,针对AKV专属资源URI(https://vault.azure.net)获取令牌。
  2. 构造授权请求头:将令牌封装为Authorization请求头,格式为Bearer <token>。
  3. 调用AKV REST API:携带请求头发起API调用,获取密钥数据。

完整M查询示例

let
    // 替换为你的Key Vault名称
    KeyVaultName = "<你的Key Vault名称>",
    // 获取AKV资源的AAD访问令牌
    AccessToken = AzureAD.GetAccessToken("https://vault.azure.net"),
    // 构造请求头
    Headers = [
        #"Authorization" = "Bearer " & AccessToken,
        #"Content-Type" = "application/json"
    ],
    // 调用AKV REST API获取密钥列表
    ApiUrl = "https://" & KeyVaultName & ".vault.azure.net/secrets/?api-version=7.4",
    Response = Web.Contents(ApiUrl, [Headers=Headers]),
    JsonResponse = Json.Document(Response, 65001),
    SecretsList = JsonResponse[value]
in
    SecretsList

关键配置验证

  • AKV访问策略:确认你的AAD用户(或Power BI服务使用的服务主体)已被分配Key Vault Secrets User权限,且权限范围包含Get操作。
  • Power BI隐私设置:首次运行查询时,需将AKV的API URL设置为公共隐私级别,避免跨源权限拦截。
  • 服务端部署:发布到Power BI服务时,确保工作区使用的身份(如服务主体)已在AKV中配置对应权限,无需本地数据网关(AKV为云端原生服务)。

常见问题排查

  • 令牌获取失败:检查Power BI Desktop登录的AAD账户是否有权限访问目标AKV。
  • 返回403错误:确认AKV访问策略已正确应用,且权限包含secrets/get操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 01:38:41