收集 AWS CloudTrail 日志

支持的平台:

本文档介绍了如何通过设置 Google Security Operations Feed 来收集 AWS CloudTrail 日志,以及日志字段如何映射到 Google SecOps Unified Data Model (UDM) 字段。

如需了解详情,请参阅 [将数据提取到 Google SecOps][1]。

典型部署包括 AWS CloudTrail 和配置为向 Google SecOps 发送日志的 Google SecOps Feed。您的部署可能与本文档中描述的典型部署不同。部署包含以下组件:

  • AWS CloudTrail:用于收集日志的平台。

  • AWS S3:用于存储日志的平台。

  • Google SecOps Feed:从 AWS S3 中提取日志并将日志写入 Google SecOps 的 Google SecOps Feed。

  • Google SecOps:用于保留和分析 AWS CloudTrail 日志的平台。

注入标签用于标识将原始日志数据标准化为结构化 UDM 格式的解析器。本文档中的信息适用于具有 AWS_CLOUDTRAIL 注入标签的解析器。

准备工作

请确保满足以下前提条件:

  • AWS 账号
  • 满足使用 AWS CloudTrail 的前提条件。如需了解详情,请参阅 AWS CloudTrail 设置
  • 部署架构中的所有系统都使用世界协调时间 (UTC) 时区

通过 SQS 从 S3 注入日志的基本步骤

本部分介绍了将 AWS CloudTrail 日志注入到 Google SecOps 实例的基本步骤。以下步骤介绍了如何使用 Amazon S3(以 Amazon SQS 作为 Feed 源类型)执行此操作。

配置 AWS CloudTrail 和 S3

在此过程中,您将配置 AWS CloudTrail 日志,使其写入 S3 存储桶。

  1. 在 AWS 控制台中,搜索 CloudTrail
  2. 点击创建试验
  3. 提供跟踪名称
  4. 选择 Create new S3 bucket。您也可以选择使用现有的 S3 存储桶。
  5. 提供 AWS KMS 别名,或选择现有的 AWS KMS 密钥
  6. 您可以将其他设置保留为默认值,然后点击下一步
  7. 选择事件类型,根据需要添加数据事件,然后点击下一步
  8. 检查并创建中检查设置,然后点击创建轨迹
  9. 在 AWS 控制台中,搜索 Amazon S3 Buckets
  10. 点击新创建的日志存储桶,然后选择文件夹 AWSLogs。然后点击复制 S3 URI 并保存,以便在后面的步骤中使用。

设置标准 SQS 队列和 SNS

如果您使用 SQS 队列,则必须是标准队列,而不是 FIFO 队列。

  1. 启用 AWS CloudTrail 并将其配置为使用新的或现有的轨迹将日志传送到 S3 存储桶。
  2. 打开 AWS SNS 控制台,然后创建一个新的标准主题。为其命名,例如:CloudTrail-Notification-Topic。
  3. 使用 AWS SQS 控制台创建 SQS 队列,例如,CloudTrail-Notification-Queue,并更新其访问政策,以允许 SNS 主题 ARN 发送消息。如需详细了解如何创建 SQS 队列,请参阅 Amazon SQS 使用入门

    SQS 政策代码段示例:

    {
       "Version": "2012-10-17",
       "Id": `PolicyForSNS`,
       "Statement": [
          {
             "Sid": "AllowSNS",
             "Effect": "Allow",
             "Principal": { "Service": "sns.amazonaws.com" },
             "Action": "SQS:SendMessage",
             "Resource": "arn:aws:sqs:REGION:ACCOUNT_ID:CloudTrail-Notification-Queue",
             "Condition": {
             "ArnEquals": { "aws:SourceArn": "arn:aws:sns:REGION:ACCOUNT_ID:CloudTrail-Notification-Topic"}
             }
          }
       ]
    }
    
  4. 前往 SNS 主题订阅创建订阅,将协议设置为 SQS,并将端点设置为 SQS 队列的 ARN。

  5. CloudTrail 本身不会将新日志推送到 SNS。如需启用通知,您可以使用管理事件的 CloudTrail 事件选择器,也可以使用 CloudTrail 与 CloudWatch Logs 的集成,然后创建 CloudWatch 事件规则,通过将 SNS 主题设置为目标来触发通知。如需了解详情,请参阅在 S3 存储桶中设置通知

    事件模式示例:

    {
       "source": ["aws.s3"],
       "detail-type": ["AWS API Call via CloudTrail"],
       "detail": {
          "eventName": ["PutObject"],
          "requestParameters": {
             "bucketName": [`CloudTrail-Notification-Topic`]
          }
       }
    }
    
  6. 确保 IAM 角色或政策允许 CloudWatch Events 发布到 SNS,并确保 SNS 允许向 SQS 发送消息。

配置 AWS IAM 用户

配置一个 AWS IAM 用户,Google SecOps 将使用该用户访问 SQS 队列(如果使用)和 S3 存储桶。

  1. 在 AWS 控制台中,搜索 IAM
  2. 点击用户,然后在以下界面中点击创建用户
  3. 提供用户名(例如 chronicle-feed-user),然后选择为用户提供对 AWS 管理控制台的访问权限
  4. 选择 Attach existing policies directly,然后根据需要选择 AmazonS3ReadOnlyAccessAmazonS3FullAccess。如果 Google SecOps 在读取日志后应清理 S3 存储分区,则将使用 AmazonS3FullAccess,以优化 AWS S3 存储费用。
  5. 作为上一步的建议替代步骤,您可以通过创建自定义政策进一步限制为仅可访问指定的 S3 存储桶。点击Create policy,然后按照 AWS 文档创建自定义政策。
  6. 应用政策时,请确保您已添加 sqs:DeleteMessage。 如果 SQS 队列未附加 sqs:DeleteMessage 权限,Google SecOps 将无法删除消息。所有消息都累积在 AWS 端,这会导致延迟,因为 Google SecOps 会反复尝试传输相同的文件。
  7. 点击下一步:标记
  8. 添加任何所需标记,然后点击 Next: Review
  9. 检查配置,然后点击 Create user
  10. 创建用户后,前往安全凭据标签页,然后点击创建访问密钥
  11. 选择 CLI,然后点击下一步:标记
  12. 添加任何所需标记,然后点击创建访问密钥:查看
  13. 复制已创建用户的访问密钥 ID私有访问密钥,以便在下一步中使用。

配置 KMS 密钥权限

需要使用 KMS 密钥来解密在服务器端加密的 CloudTrail 日志。AWS KMS 可为存储在 Amazon S3 中的敏感数据提供增强的加密和安全性。

  1. 在 AWS 控制台中,搜索 Key Management Service (KMS)
  2. 点击创建密钥:下一步
  3. 为密钥添加别名。根据需要,添加说明标签。点击下一步:检查
  4. 检查配置后,点击下一步
  5. 选择应有权访问此密钥的关键用户,然后点击完成

设置 Feed

您可以通过两种不同的入口点在 Google SecOps 平台中设置 Feed:

  • SIEM 设置 > Feed > 添加新 Feed
  • 内容中心 > 内容包 > 开始

如何设置 AWS CloudTrail Feed

  1. 点击 Amazon Cloud Platform 包。
  2. AWS CloudTrail 日志类型中,指定以下值:
  3. 为以下字段指定值:

    • 来源类型:Amazon SQS V2
    • 队列名称:要从中读取数据的 SQS 队列名称
    • S3 URI:存储桶 URI。
      • s3://your-log-bucket-name/
        • your-log-bucket-name 替换为您的 S3 存储桶的实际名称。
    • 源删除选项:根据您的提取偏好设置选择删除选项。

    • 文件存在时间上限:包含在过去指定天数内修改的文件。默认值为 180 天。

    • SQS 队列访问密钥 ID:一个包含 20 个字符的字母数字字符串形式的账号访问密钥。

    • SQS 队列私有访问密钥:一个包含 40 个字符的字母数字字符串形式的账号访问密钥。

    高级选项

    • Feed 名称:用于标识 Feed 的预填充值。
    • 资源命名空间:与 Feed 关联的命名空间。
    • 提取标签:应用于相应 Feed 中所有事件的标签。
  4. 点击创建 Feed

如需详细了解如何为相应产品系列中的不同日志类型配置多个 Feed,请参阅按产品配置 Feed

支持的 AWS CloudTrail 日志类型

AWS CloudTrail 解析器支持以下服务:

  • apigateway.amazonaws.com
  • appconfig.amazonaws.com
  • autoscaling.amazonaws.com
  • cloud9.amazonaws.com
  • cloudsearch.amazonaws.com
  • cloudshell.amazonaws.com
  • cloudtrail.amazonaws.com
  • config.amazonaws.com
  • devicefarm.amazonaws.com
  • ds.amazonaws.com
  • dynamodb.amazonaws.com
  • ec2-instance-connect.amazonaws.com
  • ec2.amazonaws.com
  • ecr-public.amazonaws.com
  • ecr.amazonaws.com
  • ecs.amazonaws.com
  • eks.amazonaws.com
  • elasticache.amazonaws.com
  • elasticloadbalancing.amazonaws.com
  • firehose.amazonaws.com
  • guardduty.amazonaws.com
  • health.amazonaws.com
  • iam.amazonaws.com
  • imagebuilder.amazonaws.com
  • kinesis.amazonaws.com
  • kinesisanalytics.amazonaws.com
  • kinesisvideo.amazonaws.com
  • kms.amazonaws.com
  • lambda.amazonaws.com
  • logs.amazonaws.com
  • macie2.amazonaws.com
  • monitoring.amazonaws.com
  • network-firewall.amazonaws.com
  • organizations.amazonaws.com
  • quicksight.amazonaws.com
  • ram.amazonaws.com
  • rds.amazonaws.com
  • resource-explorer-2.amazonaws.com
  • resource-groups.amazonaws.com
  • route53-recovery-readiness.amazonaws.com
  • route53.amazonaws.com
  • route53domains.amazonaws.com
  • route53resolver.amazonaws.com
  • s3-outposts.amazonaws.com
  • s3.amazonaws.com
  • s3express.amazonaws.com
  • secretsmanager.amazonaws.com
  • securityhub.amazonaws.com
  • ses.amazonaws.com
  • signin.amazonaws.com
  • ssm.amazonaws.com
  • sts.amazonaws.com
  • waf-regional.amazonaws.com
  • waf.amazonaws.com
  • wafv2.amazonaws.com

如需详细了解字段映射和 UDM 映射,请参阅 AWS Cloudtrail 字段映射

需要更多帮助?从社区成员和 Google SecOps 专业人士那里获得解答。