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

Azure Key Vault:公私钥应存为Secret还是Key?Python SDK如何读取?

Azure Key Vault存储RSA密钥:Secret还是Key?

选型建议

  • 存为Key:如果需要利用Azure Key Vault的密码学功能(如用该RSA密钥做签名、加密/解密操作),或者需要Vault管理密钥生命周期(轮换、备份、权限管控),优先选Key类型。支持直接导入PEM格式的公私钥,导入后Vault负责密钥安全存储,可通过SDK调用Vault的密码学API使用密钥,无需直接暴露密钥内容。
  • 存为Secret:如果仅需存储密钥原始内容,之后取出自行使用(比如导入到其他系统),选Secret即可。Secret适合存储任意敏感文本数据,包括多行PEM格式的密钥。

解决多行密钥读取格式问题

问题原因

读取后密钥变成单行,大概率是存储时未正确保留换行符(比如手动在Portal粘贴时丢失换行,或上传工具自动替换了换行符),而非SDK读取的问题。Key Vault的Secret本身支持存储带换行符的内容。

正确存储方式

用Azure CLI上传时,直接读取本地文件内容(自动保留换行):

# 上传私钥
az keyvault secret set --vault-name your-vault-name --name SNOWFLAKE-TEST-KEY --file rsa_key.p8
# 上传公钥
az keyvault secret set --vault-name your-vault-name --name SNOWFLAKE-TEST-PUB --file rsa_key.pub

升级到新SDK读取(推荐,旧SDK已弃用)

旧的azure.keyvault库已停止维护,建议使用azure-keyvault-secrets和azure-identity SDK,读取时会完整保留换行符:

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

# 初始化凭据
credential = ClientSecretCredential(
    tenant_id="zzz..zzz",
    client_id="xxx..xxx",
    client_secret="yyy..yyy"
)

# 初始化Secret客户端
secret_client = SecretClient(
    vault_url="https://keyvault-xxxxxxx.azure.net/",
    credential=credential
)

# 读取密钥
secret = secret_client.get_secret("SNOWFLAKE-TEST-KEY")
rsa_key = secret.value

# 打印会保留原始多行格式
print(rsa_key)

继续使用旧SDK的解决方案

如果暂时无法升级,先确认存储的内容是否正确(可通过Azure CLI查看:az keyvault secret show --vault-name your-vault-name --name SNOWFLAKE-TEST-KEY --query value -o tsv,检查是否包含换行)。确认存储正确后,secret_bundle.value会保留换行符,直接输出即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 10:50:16