你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
Azure Key Vault 日志记录
在创建一个或多个 Key Vault 之后,可能需要监视 Key Vault 的访问方式、时间和访问者。 启用 Azure Key Vault 日志记录会将此信息保存在你提供的 Azure 存储帐户中。 有关分步指南,请参阅如何启用 Key Vault 日志记录。
最多在执行 Key Vault 操作 10 分钟后,就能访问其日志记录信息。 大多数情况下,速度会更快。 存储帐户中的日志完全由你管理:
- 请在存储帐户中使用标准的 Azure 访问控制方法限制可访问日志的人员,以此保护日志。
- 删除不想继续保留在存储帐户中的日志。
有关 Key Vault的概述信息,请参阅什么是 Azure Key Vault?。 有关 Key Vault 可用位置的信息,请参阅定价页。 有关将 Azure Monitor 用于 Key Vault 的信息。
解释 Key Vault 日志
启用日志记录时,系统会为你指定的存储帐户自动创建一个名为“insights-logs-auditevent”的新容器。 可以使用此同一个存储帐户来收集多个 Key Vault 的日志。
每个 Blob 存储为文本,并格式化为 JSON Blob。 让我们看一个示例日志项。
{
"records":
[
{
"time": "2016-01-05T01:32:01.2691226Z",
"resourceId": "/SUBSCRIPTIONS/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/RESOURCEGROUPS/CONTOSOGROUP/PROVIDERS/MICROSOFT.KEYVAULT/VAULTS/CONTOSOKEYVAULT",
"operationName": "VaultGet",
"operationVersion": "2015-06-01",
"category": "AuditEvent",
"resultType": "Success",
"resultSignature": "OK",
"resultDescription": "",
"durationMs": "78",
"callerIpAddress": "104.40.82.76",
"correlationId": "",
"identity": {"claim":{"http://schemas.microsoft.com/identity/claims/objectidentifier":"d9da5048-2737-4770-bd64-XXXXXXXXXXXX","http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn":"live.com#username@outlook.com","appid":"00001111-aaaa-2222-bbbb-3333cccc4444"}},
"properties": {"clientInfo":"azure-resource-manager/2.0","requestUri":"https://control-prod-wus.vaultcore.azure.net/subscriptions/361da5d4-a47a-4c79-afdd-XXXXXXXXXXXX/resourcegroups/contosoresourcegroup/providers/Microsoft.KeyVault/vaults/contosokeyvault?api-version=2015-06-01","id":"https://contosokeyvault.vault.azure.net/","httpStatusCode":200}
}
]
}
下表列出了字段的名称和描述:
字段名称 | 说明 |
---|---|
time | 日期和时间 (UTC)。 |
resourceId | Azure 资源管理器资源 ID。 对于密钥保管库日志,这始终是密钥保管库资源 ID。 |
operationName | 下一份表格中所述操作的名称。 |
operationVersion | 客户端请求的 REST API 版本。 |
category | 结果的类型。 对于 Key Vault 日志而言,AuditEvent 是唯一可用值。 |
resultType | REST API 请求的结果。 |
resultSignature | HTTP 状态。 |
resultDescription | 有关结果的更多描述(如果有)。 |
durationMs | 为 REST API 请求提供服务所花费的时间,以毫秒为单位。 此时间不包括网络延迟,因此在客户端上测得的时间可能与此时间不匹配。 |
callerIpAddress | 发出请求的客户端的 IP 地址。 |
correlationId | 一个可选 GUID,客户端可传递此 GUID 来使客户端日志与服务端 (Key Vault) 日志相关联。 |
identity | 在 REST API 请求中提供的令牌中的标识。 通常为“用户”、“服务主体”或组合“用户+appId”,例如,当请求来自 Azure PowerShell cmdlet 时。 |
properties | 此字段根据操作 (operationName) 包含不同的信息。 在大多数情况下,此字段包含客户端信息(客户端传递的用户代理字符串)、具体 REST API 请求 URI 和 HTTP 状态代码。 此外,在根据请求(例如,KeyCreate 或 VaultGet)返回对象时,此字段还将包含密钥 URI(id 形式)、保管库 URI 或机密 URI。 |
operationName 字段值采用 ObjectVerb 格式。 例如:
- 所有 Key Vault 操作采用
Vault<action>
格式,例如VaultGet
和VaultCreate
。 - 所有密钥操作采用
Key<action>
格式,例如KeySign
和KeyList
。 - 所有机密操作采用
Secret<action>
格式,例如SecretGet
和SecretListVersions
。
下表列出了 operationName 值和对应的 REST API 命令:
操作名称表
operationName | REST API 命令 |
---|---|
身份验证 | 通过 Microsoft Entra 终结点进行身份验证 |
VaultGet | 获取有关密钥保管库的信息 |
VaultPut | 创建或更新密钥保管库 |
VaultDelete | 删除密钥保管库 |
VaultPatch | 更新密钥保管库 |
VaultList | 列出资源组中的所有密钥保管库 |
VaultPurge | 清除已删除的保管库 |
VaultRecover | 恢复已删除的保管库 |
VaultGetDeleted | 获取已删除的保管库 |
VaultListDeleted | 列出已删除的保管库 |
VaultAccessPolicyChangedEventGridNotification | 保管库访问策略更改事件已发布。 无论是否存在事件网格订阅,都会记录该事件。 |
使用 Azure Monitor 日志
可以使用 Azure Monitor 日志中的 Key Vault 解决方案查看 Key Vault AuditEvent
日志。 在 Azure Monitor 日志中,可以使用日志查询来分析数据并获取所需的信息。
有关详细信息,包括如何进行设置,请参阅 Azure Monitor 中的 Azure Key Vault。
要了解如何分析日志,请参阅示例 kusto 日志查询
后续步骤
- 如何启用 Key Vault 日志记录
- Azure Monitor
- 有关在 .NET Web 应用程序中使用 Azure Key Vault 的教程,请参阅从 Web 应用程序使用 Azure Key Vault。
- 有关编程参考,请参阅 Azure 密钥保管库开发人员指南。
- 有关 Azure Key Vault 的 Azure PowerShell 1.0 cmdlet 列表,请参阅 Azure Key Vault cmdlet。