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

本地Python脚本能否通过托管标识访问Azure密钥保管库?

能否通过托管标识从本地Python脚本访问Azure密钥保管库?

不行,托管标识仅适用于Azure托管的资源(比如VM、App Service、Function App等),本地Python脚本(Azure外部环境)无法直接使用托管标识来访问Azure密钥保管库。

原因

托管标识的核心是由Azure基础设施自动管理身份凭证,无论是系统分配还是用户分配的托管标识,都依赖Azure内部服务生成和维护访问令牌。本地环境不在Azure托管范围内,无法获取托管标识的身份上下文,自然没法用它完成认证。

替代方案(避免硬编码服务主体密钥)

如果你不想使用需要额外存储密钥的服务主体,可以试试以下两种更安全的方式:

1. 利用Azure CLI登录上下文

本地先通过az login完成登录(使用有权限访问密钥保管库的Azure账号),Azure SDK会自动复用CLI的登录凭证:

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

# 初始化凭证(自动读取CLI登录信息)
credential = AzureCliCredential()
# 初始化密钥保管库客户端
secret_client = SecretClient(
    vault_url="https://你的密钥保管库名称.vault.azure.net/",
    credential=credential
)
# 获取密钥
secret = secret_client.get_secret("你要获取的密钥名称")
print(secret.value)

2. 使用设备代码流认证

适合无法安装Azure CLI的场景,运行后会生成一个验证代码,你需要在浏览器打开指定URL并输入代码,用Azure账号登录验证,全程无需存储任何密钥:

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

# 仅需一个已注册的Azure AD应用的客户端ID,无需存储密钥
credential = DeviceCodeCredential(client_id="你的应用注册客户端ID")
secret_client = SecretClient(
    vault_url="https://你的密钥保管库名称.vault.azure.net/",
    credential=credential
)
secret = secret_client.get_secret("你要获取的密钥名称")
print(secret.value)

运行后控制台会输出类似提示:To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code ABC123DEF to authenticate.,按提示操作即可完成认证。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 18:30:58