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/361DA5D4-A47A-4C79-AFDD-XXXXXXXXXXXX/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":"1950a258-227b-4e31-a9cf-XXXXXXXXXXXX"}},
                "properties": {"clientInfo":"azure-resource-manager/2.0","requestUri":"https://control-prod-wus.vaultcore.chinacloudapi.cn/subscriptions/361da5d4-a47a-4c79-afdd-XXXXXXXXXXXX/resourcegroups/contosoresourcegroup/providers/Microsoft.KeyVault/vaults/contosokeyvault?api-version=2015-06-01","id":"https://contosokeyvault.vault.azure.cn/","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> 格式,例如 VaultGetVaultCreate
  • 所有密钥操作采用 Key<action> 格式,例如 KeySignKeyList
  • 所有机密操作采用 Secret<action> 格式,例如 SecretGetSecretListVersions

下表列出了 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 日志查询

后续步骤