启用 Key Vault 日志记录
在创建一个或多个 Key Vault 之后,可能需要监视 Key Vault 的访问方式、时间和访问者。 有关该功能的完整详细信息,请参阅 Key Vault 日志记录。
记录的内容:
- 所有已经过身份验证的 REST API 请求,包括由于访问权限、系统错误或错误请求而发生的失败请求。
- 对 Key Vault 本身执行的操作,包括创建、删除、设置 Key Vault 访问策略,以及更新 Key Vault 属性(例如标记)。
- 对 Key Vault 中的密钥和机密执行的操作,包括:
- 创建、修改或删除这些密钥或机密。
- 签名、验证、加密、解密、包装和解包密钥、获取机密、列出密钥和机密(及其版本)。
- 导致出现 401 响应的未经身份验证的请求。 例如,请求缺少持有者令牌、格式不正确或已过期,或者包含无效的令牌。
- 以下情况的 Azure 事件网格通知事件:过期、即将过期和已更改的保管库访问策略(但新版本事件不会记录)。 即使密钥保管库上创建了事件订阅,也会记录事件。 有关详细信息,请参阅 Azure Key Vault 作为事件网格源。
先决条件
若要完成本教程,你需要一个 Azure 密钥保管库。 可以使用以下方法之一创建新的密钥保管库:
你的日志还需要一个目的地。 此目的地可以是现有或新的 Azure 存储帐户和/或 Log Analytics 工作区。
可以使用以下方法之一创建新的 Azure 存储帐户:
可使用以下方法之一创建新的 Log Analytics 工作区:
- 使用 Azure CLI 创建 Log Analytics 工作区
- 使用 Azure PowerShell 创建 Log Analytics 工作区
- 在 Azure 门户中创建 Log Analytics 工作区
连接到 Key Vault 订阅
如果有多个订阅与你的帐户相关联,则设置密钥日志记录的第一步是连接到包含你的密钥保管库的订阅。
在 Azure CLI 中,可以使用 az account list 命令查看所有订阅。 然后,使用 az account set 命令连接到其中一个:
az account list
az account set --subscription "<subscriptionID>"
在 Azure PowerShell 中,可以先使用 Get-AzSubscription cmdlet 列出订阅。 然后,使用 Set-AzContext cmdlet 连接到其中一个:
Get-AzSubscription
Set-AzContext -SubscriptionId "<subscriptionID>"
获取资源 ID
若要在密钥保管库上启用日志记录,你需要具有密钥保管库的资源 ID 以及目的地(Azure 存储或 Log Analytics 帐户)。
如果忘记密钥保管库的名称,可以使用 Azure CLI az keyvault list 命令或 Azure PowerShell Get-AzKeyVault cmdlet 来查找它。
使用密钥保管库的名称查找其资源 ID。 在 Azure CLI 中,使用 az keyvault show 命令。
az keyvault show --name "<your-unique-keyvault-name>"
在 Azure PowerShell 中,使用 Get-AzKeyVault cmdlet。
Get-AzKeyVault -VaultName "<your-unique-keyvault-name>"
密钥保管库的资源 ID 将采用如下格式:"/subscriptions/your-subscription-ID/resourceGroups/myResourceGroup/providers/Microsoft.KeyVault/vaults/your-unique-keyvault-name。 在下一步骤中请注意这一点。
启用日志记录
可以使用 Azure CLI、Azure PowerShell 或 Azure 门户为 Key Vault 启用日志记录。
Azure CLI
使用 Azure CLI az monitor diagnostic-settings create 命令、存储帐户 ID 和密钥保管库资源 ID,如下所示:
az monitor diagnostic-settings create --storage-account "<storage-account-id>" --resource "<key-vault-resource-id>" --name "Key vault logs" --logs '[{"category": "AuditEvent","enabled": true}]' --metrics '[{"category": "AllMetrics","enabled": true}]'
可以根据需要为日志设置保留策略,确保在指定时间后自动删除较旧的日志。 例如,可以将保留策略设置为自动删除超过 90 天的日志。
在 Azure CLI 中使用 az monitor diagnostic-settings update 命令。
az monitor diagnostic-settings update --name "Key vault retention policy" --resource "<key-vault-resource-id>" --set retentionPolicy.days=90
访问日志
Key Vault 日志存储在你所提供的存储帐户的“insights-logs-auditevent”容器中。 若要查看这些日志,必须下载 Blob。
首先,列出容器中的所有 Blob。 在 Azure CLI 中,使用 az storage blob list 命令。
az storage blob list --account-name "<your-unique-storage-account-name>" --container-name "insights-logs-auditevent"
在 Azure PowerShell 中,使用 Get-AzStorageBlob。 若要列出此容器中的所有 Blob,请输入:
Get-AzStorageBlob -Container "insights-logs-auditevent" -Context $sa.Context
在 Azure CLI 命令或 Azure PowerShell cmdlet 的输出中,你可以看到 Blob 名称的格式为 resourceId=<ARM resource ID>/y=<year>/m=<month>/d=<day of month>/h=<hour>/m=<minute>/filename.json
。 日期和时间值使用协调世界时。
由于可以使用相同的存储帐户来收集多个资源的日志,Blob 名称中的完整资源 ID 适合用于仅访问或下载所需 Blob。
但首先,下载所有 blob。 在 Azure CLI 中,使用 az storage blob download 命令,向其传递 blob 名称以及打算用于保存结果的文件的路径。
az storage blob download --container-name "insights-logs-auditevent" --file <path-to-file> --name "<blob-name>" --account-name "<your-unique-storage-account-name>"
在 Azure PowerShell 中,使用 Get-AzStorageBlob cmdlet 获取 blob 列表。 然后将该列表发送到 Get-AzStorageBlobContent cmdlet,以将日志下载到所选路径。
$blobs = Get-AzStorageBlob -Container "insights-logs-auditevent" -Context $sa.Context | Get-AzStorageBlobContent -Destination "<path-to-file>"
在 PowerShell 中运行第二个 cmdlet 时,blob 名称中的 /
分隔符会在目标文件夹下创建完整的文件夹结构。 你将使用此结构下载 Blob 并将其存储为文件。
若要选择性地下载 Blob,请使用通配符。 例如:
如果有多个密钥保管库,并只想要下载其中名为 CONTOSOKEYVAULT3 的密钥保管库的日志:
Get-AzStorageBlob -Container "insights-logs-auditevent" -Context $sa.Context -Blob '*/VAULTS/CONTOSOKEYVAULT3
如果有多个资源组,并只想要下载其中某个资源组的日志,请使用
-Blob '*/RESOURCEGROUPS/<resource group name>/*'
:Get-AzStorageBlob -Container "insights-logs-auditevent" -Context $sa.Context -Blob '*/RESOURCEGROUPS/CONTOSORESOURCEGROUP3/*'
如果要下载 2019 年 1 月份的所有日志,请使用
-Blob '*/year=2019/m=01/*'
:Get-AzStorageBlob -Container "insights-logs-auditevent" -Context $sa.Context -Blob '*/year=2016/m=01/*'
使用 Azure Monitor 日志
可以使用 Azure Monitor 日志中的 Key Vault 解决方案查看 Key Vault AuditEvent
日志。 在 Azure Monitor 日志中,可以使用日志查询来分析数据并获取所需的信息。 有关详细信息,请参阅监视密钥保管库。
后续步骤
- 关于如何解释 Key Vault 日志等概念性信息,请参阅 Key Vault 日志记录。
- 若要了解有关在密钥保管库上使用 Azure Monitor 的详细信息,请参阅监控密钥保管库。