收集 AWS CloudTrail 日志

解析器版本:30.0

支持范围:

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

如需了解详情,请参阅将数据注入 Google SecOps。

典型的部署由 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. 点击 Create trail。
  3. 提供跟踪名称。
  4. 选择 Create new S3 bucket。您也可以选择使用现有的 S3 存储桶。
  5. 提供 AWS KMS 别名,或选择现有的 AWS KMS 密钥。
  6. 您可以将其他设置保留为默认值,然后点击 Next(下一步)。
  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 的集成,然后通过将 SNS 主题设置为目标来创建触发通知的 CloudWatch 事件规则。如需了解详情,请参阅在 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,然后根据需要选择 AmazonS3ReadOnlyAccess 或 AmazonS3FullAccess。如果 Google SecOps 在读取日志后应清理 S3 存储桶,则将使用 AmazonS3FullAccess,以优化 AWS S3 存储费用。
  5. 作为上一步的建议替代步骤,您可以通过创建自定义政策进一步限制为仅可访问指定的 S3 存储桶。点击Create policy,然后按照 AWS 文档创建自定义政策。
  6. 应用政策时,请确保已添加 sqs:DeleteMessage。如果 sqs:DeleteMessage 权限未附加到 SQS 队列,Google SecOps 将无法删除消息。所有消息都会在 AWS 端累积,这会导致 Google SecOps 重复尝试传输相同文件,从而造成延迟。
  7. 点击下一步:标记。
  8. 添加任何所需标记,然后点击 Next: Review。
  9. 检查配置,然后点击 Create user(创建用户)。
  10. 创建用户后,前往安全凭证标签页,然后点击创建访问密钥。
  11. 选择 CLI,然后点击下一步:标记。
  12. 根据需要添加任何标记,然后点击 Create Access Key: Review(创建访问密钥:查看)。
  13. 复制已创建用户的 Access Key ID 和 Secret Access Key,以便在下一步中使用。

    如需查找 SubjectID,请按照以下步骤操作:

    1. 在 Google SecOps 中开始 AWS CloudTrail Feed 配置流程。
    2. 前往指定的 Amazon S3 存储桶,查看 AWS CloudTrail 日志中与 Feed 设置尝试相关的条目。
    3. 打开相关日志条目,然后在原始 JSON 数据中查找 userIdentity 部分。
    4. 在该部分中,找到 principalId 或 userName 字段。此处列出的数值是您的唯一 SubjectID。
    5. 复制此 SubjectID 并将其添加到 AWS IAM 角色的信任政策中,以授予必要的访问权限。

配置 KMS 密钥权限

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

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

设置 Feed

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

  • 设置 > 数据管理 > Feed > 添加新 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

支持的 AWS CloudTrail 日志格式

AWS CloudTrail 解析器支持 JSON 格式的日志。

支持的 AWS CloudTrail 示例日志

  • JSON:

    {
      "Records": [{
          "eventVersion": "1.08",
          "userIdentity": {
              "type": "AssumedRole",
              "principalId": "AROAXELJRGZMPHEYTK4Q4:redlock",
              "arn": "arn:aws:sts::111111111111:assumed-role/PrismaCloudReadOnlyRole/redlock",
              "accountId": "111111111111",
              "accessKeyId": "ASIAXELJRGZMNUCV3DC4",
              "sessionContext": {
                  "sessionIssuer": {
                      "type": "Role",
                      "principalId": "AROAXELJRGZMPHEYTK4Q4",
                      "arn": "arn:aws:iam::111111111111:role/PrismaCloudReadOnlyRole",
                      "accountId": "111111111111",
                      "userName": "PrismaCloudReadOnlyRole"
                  },
                  "webIdFederationData": {},
                  "attributes": {
                      "creationDate": "2021-07-01T03:20:01Z",
                      "mfaAuthenticated": "false"
                  }
              }
          },
          "eventTime": "2021-07-01T03:35:42Z",
          "eventSource": "kms.amazonaws.com",
          "eventName": "DescribeKey",
          "awsRegion": "eu-west-1",
          "sourceIPAddress": "198.51.100.0",
          "userAgent": "aws-sdk-java/1.11.1025Linux/4.14.232-176.381.amzn2.x86_64OpenJDK_64-Bit_Server_VM/11.0.10+9java/11.0.10groovy/2.5.12vendor/AdoptOpenJDKcfg/retry-mode/legacy",
          "requestParameters": {
              "keyId": "11a011a1-1010-11a1-a0aa-c4e1a9367642"
          },
          "responseElements": null,
          "requestID": "11a011a1-1010-11a1-a0aa-604ac86fc50e",
          "eventID": "11a011a1-1010-11a1-a0aa-17ef2bdeb889",
          "readOnly": true,
          "resources": [{
              "accountId": "111111111111",
              "type": "AWS::KMS::Key",
              "ARN": "arn:aws:kms:eu-west-1:111111111111:key/11a011a1-1010-11a1-a0aa-c4e1a9367642"
          }],
          "eventType": "AwsApiCall",
          "managementEvent": true,
          "recipientAccountId": "111111111111",
          "eventCategory": "Management"
      }]
    }
    

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

更新日志

查看此解析器的更新日志

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