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

从Azure虚拟机访问Key Vault存储凭据的配置咨询

Azure虚拟机访问Key Vault机密方案解答

1. 是否可实现上述架构?

完全可以实现。Azure原生支持虚拟机通过托管身份安全访问Key Vault,结合Key Vault的版本化机密机制,脚本每次拉取机密时若不指定版本,就能自动获取更新后的最新凭据,无需修改核心脚本逻辑。

2. 需要部署的资源及配置步骤

所需资源

  • 已有的Azure虚拟机(VM)
  • 已有的Azure Key Vault
  • 虚拟机的托管身份(推荐系统分配型,无需额外创建独立资源)

具体配置步骤

  • 步骤1:给虚拟机启用系统分配托管身份
    进入Azure门户的VM详情页,找到「身份」选项卡,选择「系统分配」,将状态设为「开启」后保存。Azure会自动为该VM生成对应的服务主体。
  • 步骤2:配置Key Vault访问策略
    进入Key Vault详情页的「访问策略」选项卡,点击「添加访问策略」:
    • 在「权限」中勾选「机密权限」下的Get和List(满足读取最新机密的需求)
    • 在「主体」中搜索并选择VM启用身份后生成的服务主体(名称与VM一致)
    • 保存配置
  • 步骤3:打通VM与Key Vault的网络访问
    若Key Vault启用了防火墙,需在「网络」选项卡中添加VM所在的虚拟网络到允许列表,或开启「允许受信任的Microsoft服务访问」(适合快速测试场景)

3. 已有脚本的身份验证改造

无需改动原有脚本的机密调用逻辑,只需替换身份验证方式为托管身份自动认证,具体操作如下:

安装依赖库

在虚拟机中执行命令安装所需Python库:

pip install azure-identity azure-keyvault-secrets

身份验证与机密获取示例

使用DefaultAzureCredential会自动识别VM的托管身份,无需硬编码任何凭据:

from azure.identity import DefaultAzureCredential
from azure.keyvault.secrets import SecretClient

# 初始化客户端
credential = DefaultAzureCredential()
vault_url = "https://你的密钥保管库名称.vault.azure.net/"
secret_client = SecretClient(vault_url=vault_url, credential=credential)

# 获取最新机密(不指定版本则自动拉取当前最新版本)
latest_secret = secret_client.get_secret("你的机密名称")
print(f"最新凭据值: {latest_secret.value}")

自动获取最新凭据的逻辑

若要确保脚本能获取更新后的凭据,只需在每次需要使用凭据时调用get_secret方法(不要长期缓存凭据值,或定期重新调用),Key Vault会返回当前设置的最新版本机密。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 01:42:48