Skip to content
返回云服务

Azure Key Vault

集中式密钥、密钥和证书存储,HSM 支持的密钥、软删除、访问策略或 RBAC,并与 App Service、Functions 和 Logic Apps 集成。

Azure进阶

为什么

Key Vault 是 Azure 中密钥的唯一真实来源 —— 提供审计日志、自动轮换(支持的密钥类型)、合规用 HSM 密钥和托管标识访问,代码和配置中永无密钥。App Service/Functions 可将保管库密钥引用为应用设置并保持同步。Azure holds 21% cloud market share (Synergy Research Q4 2024)。

Azure 是拥有 Microsoft 365 / Active Directory 资产的企业的默认选择 — 95% 的财富 500 强使用 Azure。AKS 和 Cosmos DB 对 .NET 工作负载是一等公民。

何时使用

Azure 托管应用中的任何密钥(数据库密码、API 密钥、TLS 私钥)都应使用 Key Vault。FIPS 140-2 Level 3 合规用托管 HSM。

非密钥配置(功能开关、URL)不要放保管库 —— 用应用配置,保管库仅存真正的密钥。

如何做

1. 创建 Key Vault(Standard 为软件密钥,Premium 为 HSM)。 2. 用 az keyvault secret set 添加密钥。 3. 启用 RBAC(推荐)或访问策略;将 'Key Vault Secrets User' 角色分配给应用的托管标识。 4. 在 App Service 中引用为 @Microsoft.KeyVault(SecretUri=...)。 5. 启用软删除和清除保护(新保管库默认开启)。 6. 为支持的密钥类型设置轮换策略。 ```bash az keyvault create --name myvault --resource-group rg --enable-rbac-authorization true az keyvault secret set --vault-name myvault --name DbPassword --value "P@ssw0rd!" az role assignment create --role "Key Vault Secrets User" --assignee \${APP_PRINCIPAL_ID} --scope /subscriptions/.../resourceGroups/rg/providers/Microsoft.KeyVault/vaults/myvault ```

示例

App Service 应用设置引用 Key Vault 密钥(自动解析,配置中无密钥): ```bash az webapp config appsettings set --name myapp --resource-group rg \ --settings "[email protected](SecretUri=https://myvault.vault.azure.net/secrets/DbPassword/)" ``` Node.js 运行时用托管标识获取密钥: ```ts import { SecretClient } from "@azure/keyvault-secrets"; import { DefaultAzureCredential } from "@azure/identity"; const client = new SecretClient("https://myvault.vault.azure.net", new DefaultAzureCredential()); const { value } = await client.getSecret("DbPassword"); ```

常见问题

  • ⚠App Service 无法解析 @Microsoft.KeyVault 引用 —— 应用的托管标识缺少保管库上的 'Key Vault Secrets User' 角色;分配角色并重启应用。
  • ⚠读取密钥时 Forbidden (403) —— 启用了 RBAC 但调用者标识缺少角色;访问策略模式下策略必须列出主体的 objectId。
  • ⚠软删除的密钥阻止重新创建 —— 先用 az keyvault secret purge 清除已删除密钥,或轮换时用新密钥名。

最佳实践

  • ✓使用 RBAC 授权(非访问策略)—— 基于角色,可与 PIM 即时访问配合,与 Azure 其余部分一致。
  • ✓每个环境(开发/staging/生产)使用独立保管库,使被攻破的开发标识无法读取生产密钥。
  • ✓启用清除保护和软删除,使恶意或意外删除在保留窗口过期前无法永久销毁密钥。

常见问题解答

什么是Azure Key Vault?它解决什么问题?

集中式密钥、密钥和证书存储,HSM 支持的密钥、软删除、访问策略或 RBAC,并与 App Service、Functions 和 Logic Apps 集成。 它可帮助开发者在不自建基础设施的前提下完成部署、存储与扩展,是云服务选型的核心参考。

如何在 5 分钟内上手Azure Key Vault?

两步即可跑通:① 创建 Key Vault(Standard 为软件密钥,Premium 为 HSM)。;② 用 az keyvault secret set 添加密钥。。建议先用免费套餐验证流程,再接入生产环境。

Azure Key Vault 最容易踩的坑是什么?

最高频的问题是:App Service 无法解析 @Microsoft.KeyVault 引用 —— 应用的托管标识缺少保管库上的 'Key Vault Secrets User' 角色;分配角色并重启应用。。建议在上线前用 checklist 逐项核对,并在 CI 中加入策略与配置扫描。

Azure Key Vault 的最佳实践有哪些?

Azure Key Vault 的最佳实践包括:使用 RBAC 授权(非访问策略)—— 基于角色,可与 PIM 即时访问配合,与 Azure 其余部分一致。;每个环境(开发/staging/生产)使用独立保管库,使被攻破的开发标识无法读取生产密钥。;启用清除保护和软删除,使恶意或意外删除在保留窗口过期前无法永久销毁密钥。。其中首条「使用 RBAC 授权(非访问策略)—— 基于角色,可与 PIM 即时访问配合,与 Azure 其余部分一致。」应作为团队默认规范写入 IaC 模板。

Azure Key Vault 如何控制成本与避免账单意外?

三招防超支:① 为所有资源打 env/team 标签并启用账单告警;② 用预算阈值触发 Slack/邮件通知;③ 定期用 Cost Explorer 审查闲置资源并清理。Azure Key Vault 多数提供免费套餐,先在免费额度内验证再放量。