Azure Key Vault
在 Key Vault 中存储和管理机密、加密密钥和证书,并将其与其他 Azure 服务集成,以避免凭据硬编码。
Azure Key Vault 是 CoddyKit 上的免费 Cloud & IT Cert Prep 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Cloud & IT Cert Prep 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Cloud & IT Cert Prep 课程共包含 4 节课。
什么是 Azure Key Vault?
Azure Key Vault 是一项用于安全存储和管理机密(API 密钥、密码、连接字符串)、加密密钥(用于加密数据)和证书(应用程序使用的 TLS/SSL 证书)的云服务。应用程序无需将敏感值嵌入应用程序代码、配置文件或环境变量中,而是在运行时从 Key Vault 中检索这些值,从而避免凭据出现在源代码和部署构件中。
Key Vault 层级:Standard 与 Premium
Key Vault 提供两个层级。Standard 使用基于软件的加密来保护机密和证书。Premium 增加了对受硬件安全模块 (HSM) 保护的密钥的支持:加密操作在具备防篡改能力的硬件内部执行,并提供 FIPS 140-2 Level 2(Standard)或 Level 3(HSM)认证。另有一项独立服务Managed HSM,可提供单租户、完全托管的 HSM,以满足最高级别的保障要求。
创建 Key Vault
每个 Key Vault 都会在特定的 Azure 资源组和区域中创建。保管库名称在 vault.azure.net 命名空间内必须全局唯一。创建时需要配置访问模型:可以选择较早的保管库访问策略模型,也可以选择推荐的Azure RBAC模型,由 Entra ID 角色分别控制对机密、密钥和证书的读取与写入访问。
# Create a Key Vault with RBAC access model
az keyvault create \
--name myUniqueVault123 \
--resource-group myRG \
--location eastus \
--enable-rbac-authorization true
# Grant yourself the Key Vault Secrets Officer role
az role assignment create \
--role 'Key Vault Secrets Officer' \
--assignee your-user@company.com \
--scope /subscriptions/<sub-id>/resourceGroups/myRG/providers/Microsoft.KeyVault/vaults/myUniqueVault123存储和检索机密
Key Vault 中的机密是指任何敏感字符串值,例如数据库密码、API 密钥、OAuth 客户端机密和存储帐户连接字符串。每个机密都有名称和值,还可以包含过期日期、启用标志等可选属性。应用程序向 Key Vault 进行身份验证(通常使用托管标识),并调用 Key Vault REST API 在运行时检索当前机密值,因此任何位置都不需要硬编码值。
# Store a database password as a secret
az keyvault secret set \
--vault-name myUniqueVault123 \
--name db-password \
--value 'SuperSecret!42'
# Retrieve the secret value
az keyvault secret show \
--vault-name myUniqueVault123 \
--name db-password \
--query value \
--output tsv管理加密密钥
Key Vault 存储用于加密和解密数据的加密密钥。Azure Storage、Azure SQL Database 和 Azure Disk Encryption 等服务可以与 Key Vault 集成,在自带密钥 (BYOK) 场景中使用客户管理的密钥 (CMK)。使用 CMK 时,您可以保留对加密密钥的控制权:在 Key Vault 中撤销密钥后,任何服务都会立即无法解密数据,从而为您提供一个加密级的紧急开关。
# Create an RSA key in Key Vault
az keyvault key create \
--vault-name myUniqueVault123 \
--name myEncryptionKey \
--kty RSA \
--size 2048
# Enable CMK on a Storage Account
az storage account update \
--resource-group myRG \
--name mystorageaccount \
--encryption-key-vault myUniqueVault123 \
--encryption-key-name myEncryptionKey \
--encryption-key-source Microsoft.Keyvault证书管理
Key Vault 可以充当 TLS 证书的证书颁发机构接口。您可以生成自签名证书、导入现有的 PFX/PEM 文件,或将 Key Vault 配置为从 DigiCert 或 GlobalSign 等受信任的 CA 自动请求和续订证书。证书即将过期时,Key Vault 可以自动续订证书,并通过 Event Grid 事件通知管理员,从而免除手动续订工作流。
# Import an existing certificate
az keyvault certificate import \
--vault-name myUniqueVault123 \
--name myCert \
--file certificate.pfx \
--password 'CertPassword'访问控制:RBAC 与访问策略
Key Vault 支持两种访问模型。保管库访问策略是旧版模型,您可以向主体授予对保管库中所有机密、密钥或证书的权限,但无法将访问权限限制到单个机密名称。较新的推荐模型是Azure RBAC 模型,它使用标准 RBAC 角色(Key Vault Secrets User、Key Vault Secrets Officer 等),并支持拒绝分配和特权身份管理,从而提供更加细粒度的控制。
将 Key Vault 与 App Service 集成
一种常见模式是将 Key Vault 机密作为App Service 应用程序设置进行引用。您无需将机密值存储在应用设置中,而是存储一个 Key Vault 引用:@Microsoft.KeyVault(SecretUri=https://myvault.vault.azure.net/secrets/db-password/)。App Service 会在运行时使用应用的托管标识自动检索当前机密值。如果 Key Vault 中的机密发生轮换,应用会在下次重启时获取新值。
# Set an App Service app setting as a Key Vault reference
az webapp config appsettings set \
--resource-group myRG \
--name myWebApp \
--settings 'DB_PASSWORD=@Microsoft.KeyVault(SecretUri=https://myUniqueVault123.vault.azure.net/secrets/db-password/)'软删除和清除保护
软删除(默认启用)会将已删除的 Key Vault 项保留 7 到 90 天,以便在误删时恢复。启用清除保护后,在保留期到期前,任何人(包括订阅所有者)都无法永久清除软删除的保管库或其中的对象。出于法规合规性和抵御勒索软件的目的,同时启用这两项功能是由 Azure Policy 强制执行的安全最佳实践。
# Recover a soft-deleted secret
az keyvault secret recover \
--vault-name myUniqueVault123 \
--name db-password监视和审计 Key Vault 访问
针对 Key Vault 执行的每项操作(读取、写入、证书续订和密钥使用)都会记录在Key Vault 审计日志中。您可以启用诊断设置,将这些日志路由到 Log Analytics 工作区或存储帐户,以便长期保留。这会提供完整的审计轨迹,记录谁在何时、从哪个 IP 地址访问了哪个机密,对于安全调查和合规性证据至关重要。
# Enable diagnostic logging for Key Vault
az monitor diagnostic-settings create \
--resource /subscriptions/<sub-id>/resourceGroups/myRG/providers/Microsoft.KeyVault/vaults/myUniqueVault123 \
--workspace /subscriptions/<sub-id>/resourceGroups/myRG/providers/Microsoft.OperationalInsights/workspaces/myWorkspace \
--name kv-audit-logs \
--logs '[{"category":"AuditEvent","enabled":true}]'Key Vault 的专用终结点
默认情况下,Key Vault 在互联网上提供公共 HTTPS 终结点。对于高安全性环境,您可以部署一个专用终结点,将 Key Vault 放置在 VNet 内并为其分配专用 IP 地址,同时完全禁用公共终结点。通过专用终结点访问 Key Vault 的应用程序不会经过公共互联网,从而满足防止数据外泄的要求,并使 Key Vault 对 VNet 外部不可见。
快速检查
测试您对本课 Microsoft Azure Fundamentals (AZ-900) 概念的理解。
课程回顾
在本课中,您学习了:Key Vault 在托管且可审计的服务中存储机密、加密密钥和 TLS 证书;托管标识集成消除了在应用程序代码中硬编码凭据的需要;以及软删除和清除保护可防止加密材料被意外或恶意删除。接下来,我们将学习 Microsoft Sentinel,这是 Azure 的云原生 SIEM。
常见问题解答
「Azure Key Vault」课时是免费的吗?
是的 — 「Azure Key Vault」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Cloud & IT Cert Prep 课程的其余内容,请升级到 CoddyKit PRO。 Cloud & IT Cert Prep 课程共包含 4 节课。
「Azure Key Vault」这节课中我会学到什么?
在 Key Vault 中存储和管理机密、加密密钥和证书,并将其与其他 Azure 服务集成,以避免凭据硬编码。 你通过在浏览器中直接运行的动手代码来练习 Cloud & IT Cert Prep,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Cloud & IT Cert Prep 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Cloud & IT Cert Prep 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。
「Azure Key Vault」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Cloud & IT Cert Prep 课中编写并运行代码吗?
能。每节 Cloud & IT Cert Prep 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。