4. 启用KMS审计日志:三大云平台的实战配置

好,这一章我们来点真格的。上一章我们聊了审计日志长什么样,这一章我们就来动手把它“打开”。说白了,就是让你知道在AWS、Azure、GCP这三家主流云上,到底在哪点几下鼠标,填几个参数,才能让日志开始流出来。

我个人习惯先看文档再动手,但光看文档容易晕。所以我把核心步骤和那些容易踩的坑,直接给你整理出来。

4.1 AWS CloudTrail + KMS 审计

AWS的KMS审计日志,不是KMS自己产生的,而是靠CloudTrail记录API调用。你启用了KMS密钥,所有和这个密钥相关的操作——创建、启用、禁用、加密、解密——都会被CloudTrail抓下来。

  1. 打开CloudTrail:在AWS控制台搜“CloudTrail”,进入后点击“创建跟踪”。
  2. 命名并应用:给跟踪起个名字,比如“kms-audit-trail”。记得勾选“应用到所有区域”。
  3. 存储位置:创建一个S3桶来存日志,或者你可以选CloudWatch Logs来做实时监控。
  4. KMS加密(关键):CloudTrail默认会用SSE-S3加密,但你也可以指定一个CMK(客户主密钥)来加密日志文件。我个人建议都用CMK,因为这样你可以控制谁读得到日志。
  5. 开启“日志文件验证”:这步容易被忽略,但它能保证日志没被篡改过。
小技巧:我建议在创建跟踪时,直接把日志实时投递到CloudWatch Logs。这样一旦有人违规操作,你可以马上在CloudWatch里设告警,不用等到S3里的日志文件更新。

注意事项:

  • KMS密钥权限:CloudTrail要能把日志写入S3或CloudWatch,它使用的IAM角色必须有kms:Decrypt和kms:GenerateDataKey的权限。我碰到过好几次,配置完发现日志没写进去,一查就是这里少了权限。
  • 数据事件的坑:默认情况下,CloudTrail只记录管理事件(比如CreateKey、ScheduleKeyDeletion)。要记录对特定KMS密钥的“数据事件”(比如Encrypt、Decrypt),你需要手动添加数据事件筛选器,指定密钥的ARN。

4.2 Azure Key Vault 诊断日志

Azure的做法和AWS不太一样。它的KMS审计日志直接集成在Key Vault的诊断设置里。你想想看,如果你客户是用Azure的,他更关心的是谁访问了Vault里的密钥或机密。

  1. 找到Key Vault:在Azure门户中,找到你要审计的Key Vault实例。
  2. 进入诊断设置:在左侧菜单栏,找到“监控”下的“诊断设置”。点击“+ 添加诊断设置”。
  3. 选择日志类别:勾选“AuditEvent”这个类别。这个是核心,记录所有针对Vault的操作。
  4. 选择目标:和AWS类似,你可以选择发送到Log Analytics工作区(方便查询)、Azure存储(归档用)或事件中心(实时流)。
  5. 保存并等待:保存后,大约5分钟,日志就开始产生了。
注意:Azure默认不启用“AllMetrics”,只选“AuditEvent”是不够的吗?其实够用了。但如果你需要了解性能指标(如请求延迟),可以再勾选一些指标。不过对审计来说,“AuditEvent”就足够了。

我曾经踩过一个坑:诊断设置里的“类别详细信息”选择“AuditEvent”时,如果你用的是软删除功能,删除Key Vault的日志可能找不全。为什么?因为软删除状态下,Vault只是被“标记删除”,API调用记录还在。但如果你彻底硬删,日志就彻底没了。所以我在项目里一般都开着软删除和保留期。

4.3 GCP Cloud Audit Logs 与 Cloud KMS

GCP的做法集成度最高。它默认已经为所有服务开启了Cloud Audit Logs,但默认只有“管理活动”类型的日志。要记录KMS的“数据访问”日志,你得手动打开。

  1. 打开IAM与管理员:进入GCP控制台,选择“IAM与管理员” -> “审核日志”。
  2. 选择服务:在服务列表中找到“Cloud KMS”。
  3. 配置日志类型:你会看到“管理活动”、“数据访问”、“系统事件”等选项。把“数据访问”的日志类型勾选为“开启”。
  4. 配置排除(可选):如果你不想记录某些特定用户或项目的操作,可以在这里添加排除规则。
  5. 保存并生效:配置立即生效。日志会进入Cloud Logging中。
关键点:GCP的“数据访问”日志默认是关闭的,而且一旦开启,会产生大量日志。为什么?因为它会记录每一次Decrypt、Encrypt的操作。如果你的应用调用加密API非常频繁,日志量可能涨得很快,成本也会随之升高。我个人习惯是先开一小段时间,看看流量模式,再决定是否全局开启。

注意事项:

  • 成本考量:GCP的日志写入和存储都是要付费的。数据访问日志的量可能是管理日志的几百倍。你想想看,你的系统每天加密解密几万次,日志就有几万条。
  • 权限:你必须有roles/logging.configWriter角色才能修改审核日志配置。

4.4 三平台核心流程对比

为了方便你快速比对,我把三个平台的启用方式、关键配置和数据敏感度整理成了一个表格。你看到底是事前规划还是事后补救。

维度 AWS (CloudTrail) Azure (诊断设置) GCP (Cloud Audit Logs)
启用方式 创建跟踪,搭配S3/CloudWatch 在Key Vault中配置诊断设置 在IAM审核日志中开启数据访问
是否自动记录 管理事件默认开启,数据事件需手动 默认不开启,需手动配置 管理事件默认,数据事件手动
常见选择 勾选“所有区域”和“日志文件验证” 选“AuditEvent”并发送到Log Analytics 勾选“数据访问”
特别醒坑 IAM角色权限不足导致日志不写 软删除状态下的日志丢失 日志量过大导致高额费用

嗯,到这里你应该能看出来,不同平台的逻辑是相似的,但操作细节差异很大。我推荐你从GCP开始练手,因为它默认开启管理日志,你不需要额外配置就能看到一些基础日志,便于理解。

KMS审计日志启用核心流程 开始启用配置 AWS CloudTrail Azure Key Vault GCP Cloud Audit 创建跟踪、勾选区域 配置数据事件筛选器 新增诊断设置 勾选 AuditEvent 类别 选择 Cloud KMS 服务 启用数据访问日志 日志成功生成 核心逻辑:不同平台最终都导向日志生成,但前置步骤(创建跟踪/诊断设置/审核日志)差异较大,需按平台逐一适配。

最后提一句,不管你用哪个平台,做配置之前,最好先列一个清单:你要审计谁?密钥的哪些操作要记录?日志要存多久?这些决定都会影响你后续配置选项的选择。