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

无法从Azure Key Vault取参数初始化ClientSecretCredential,求解决方案

解决从Azure Key Vault获取凭据初始化ClientSecretCredential的问题

你当前代码硬编码了凭据值,要从Key Vault动态获取这三个参数,需先通过有权限访问Key Vault的凭据拿到SecretClient,读取密钥后再用这些值初始化目标ClientSecretCredential。以下是修改后的实现:

步骤说明

  1. 创建用于访问Key Vault的ClientSecretCredential(该服务主体需被授予Key Vault的Secret Get权限)
  2. 初始化SecretClient并从Key Vault读取tenant_id、client_id、client_secret
  3. 用读取到的密钥值创建用于访问Compute管理服务的ClientSecretCredential
  4. 初始化ComputeManagementClient

完整代码

from azure.identity import ClientSecretCredential
from azure.mgmt.compute import ComputeManagementClient
from azure.keyvault.secrets import SecretClient

# 1. 配置访问Key Vault的服务主体信息(需拥有Key Vault的Secret Get权限)
kv_tenant_id = "你的Key Vault访问主体租户ID"
kv_client_id = "你的Key Vault访问主体客户端ID"
kv_client_secret = "你的Key Vault访问主体客户端密钥"
key_vault_url = "https://你的密钥保管库名称.vault.azure.net/"

# 2. 初始化访问Key Vault的凭据和SecretClient
kv_credential = ClientSecretCredential(
    tenant_id=kv_tenant_id,
    client_id=kv_client_id,
    client_secret=kv_client_secret
)
secret_client = SecretClient(vault_url=key_vault_url, credential=kv_credential)

# 3. 从Key Vault读取目标凭据的三个参数(确保密钥名称与Vault内存储的一致)
tenant_id = secret_client.get_secret("tenant-id").value
client_id = secret_client.get_secret("client-id").value
client_secret = secret_client.get_secret("client-secret").value

# 4. 创建Compute管理服务的凭据并初始化客户端
compute_credential = ClientSecretCredential(
    tenant_id=tenant_id,
    client_id=client_id,
    client_secret=client_secret
)
subscription_id = "你的订阅ID"
compute_client = ComputeManagementClient(compute_credential, subscription_id)

关键注意事项

  • 访问Key Vault的服务主体必须在Key Vault的访问策略中添加,且明确授予Secret Get权限
  • Key Vault的URL格式必须为https://<vault-name>.vault.azure.net/,不能遗漏前缀
  • 代码中get_secret的参数需与Key Vault内存储的密钥名称完全匹配(区分大小写)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 15:57:46