You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于AWS Cognito+CloudTrail日志在QuickSight生成用户审计报表咨询

对应操作的Cognito事件列表

首先需要明确:CloudTrail默认仅记录Cognito控制面操作,用户操作类的数据面事件默认不开启,这也是你查不到登出、忘记密码事件的核心原因。开启数据面事件追踪后,三类操作对应的事件如下:

  • 登录成功事件:优先取RespondToAuthChallenge(用户完成所有认证挑战、登录成功触发),如果无二次验证场景也可使用InitiateAuth事件,过滤掉返回错误码的记录即可
  • 登出事件:包含GlobalSignOut(用户主动触发全局登出)、RevokeToken(应用侧主动吊销用户token实现的登出)两类
  • 忘记密码事件:ForgotPassword(用户发起忘记密码请求),如果需要统计重置成功的事件可以追加ConfirmForgotPassword
缺失字段与事件的完整解决方案

1. 补齐CloudTrail缺失的用户操作事件

操作步骤:

  • 进入CloudTrail控制台,打开你当前用于接收日志的Trail配置页
  • 找到「数据事件」配置模块,添加新的事件源,选择cognito-idp.amazonaws.com
  • 根据需求勾选需要记录的事件,也可直接选择记录所有Cognito数据面事件,保存配置后新产生的用户操作就会写入CloudTrail日志
  • 等待新日志同步到Athena对应的日志表后即可查询到对应事件

2. 补全sub与用户邮箱的映射关系

CloudTrail的Cognito事件默认仅返回用户sub(UUID),无邮箱字段,两种落地性较强的实现方案:

方案一:离线同步Cognito用户属性

  • 编写Lambda定时任务,周期调用Cognito ListUsers接口拉取全量用户的sub、邮箱等属性,写入S3指定路径
  • 在Athena中为该S3路径创建用户属性表,核心字段为sub、email
  • QuickSight数据集的自定义SQL中,用sub作为关联键,关联CloudTrail日志表和用户属性表,即可拿到邮箱字段

方案二:实时落盘用户属性

  • 配置Cognito「预令牌生成」触发器,每次用户完成认证/密码相关操作时,触发器自动将用户sub、邮箱等信息写入CloudWatch Logs或者S3
  • 为这部分数据单独创建Athena表,和CloudTrail日志关联查询即可

3. QuickSight数据集参考SQL

你可以根据自己的表名、字段名调整如下关联查询逻辑:

SELECT 
  user_attr.email AS 登录用户邮箱ID,
  login_success.event_time AS 登录时间,
  user_logout.event_time AS 登出时间,
  pwd_reset.event_time AS 忘记密码操作时间
FROM 
  cognito_user_attributes user_attr
LEFT JOIN (
  SELECT 
    useridentity.principalid AS sub,
    eventtime AS event_time
  FROM cloudtrail_cognito_logs
  WHERE eventname = 'RespondToAuthChallenge' AND errorcode IS NULL
) login_success ON user_attr.sub = login_success.sub
LEFT JOIN (
  SELECT 
    useridentity.principalid AS sub,
    eventtime AS event_time
  FROM cloudtrail_cognito_logs
  WHERE eventname IN ('GlobalSignOut', 'RevokeToken') AND errorcode IS NULL
) user_logout ON user_attr.sub = user_logout.sub
LEFT JOIN (
  SELECT 
    useridentity.principalid AS sub,
    eventtime AS event_time
  FROM cloudtrail_cognito_logs
  WHERE eventname = 'ForgotPassword' AND errorcode IS NULL
) pwd_reset ON user_attr.sub = pwd_reset.sub

内容的提问来源于stack exchange,提问作者aws_ik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 21:54:03