收集 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 存储桶。
- 在 AWS 控制台中,搜索 CloudTrail。
- 点击创建试验。
- 提供跟踪名称。
- 选择 Create new S3 bucket。您也可以选择使用现有的 S3 存储桶。
- 提供 AWS KMS 别名,或选择现有的 AWS KMS 密钥。
- 您可以将其他设置保留为默认值,然后点击下一步。
- 选择事件类型,根据需要添加数据事件,然后点击下一步。
- 在检查并创建中检查设置,然后点击创建轨迹。
- 在 AWS 控制台中,搜索 Amazon S3 Buckets。
- 点击新创建的日志存储桶,然后选择文件夹 AWSLogs。然后点击复制 S3 URI 并保存,以便在后面的步骤中使用。
设置标准 SQS 队列和 SNS
如果您使用 SQS 队列,则必须使用标准队列,而不是 FIFO 队列。
- 启用 AWS CloudTrail 并将其配置为使用新的或现有的跟踪将日志传送到 S3 存储桶。
- 打开 AWS SNS 控制台,然后创建新的标准主题。为其命名,例如 CloudTrail-Notification-Topic。
使用 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"} } } ] }前往 SNS 主题 → 订阅 → 创建订阅,将协议设置为 SQS,并将端点设置为 SQS 队列的 ARN。
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`] } } }确保 IAM 角色或政策允许 CloudWatch Events 发布到 SNS,并确保 SNS 允许向 SQS 发送消息。
配置 AWS IAM 用户
配置一个 AWS IAM 用户,Google SecOps 将使用该用户访问 SQS 队列(如果使用)和 S3 存储桶。
- 在 AWS 控制台中,搜索 IAM。
- 点击用户,然后在以下界面中点击创建用户。
- 提供用户名(例如 chronicle-feed-user),然后选择为用户提供对 AWS 管理控制台的访问权限。
- 选择 Attach existing policies directly,然后根据需要选择 AmazonS3ReadOnlyAccess 或 AmazonS3FullAccess。如果 Google SecOps 在读取日志后应清理 S3 存储分区,则将使用 AmazonS3FullAccess,以优化 AWS S3 存储费用。
- 作为上一步的建议替代步骤,您可以通过创建自定义政策进一步限制为仅可访问指定的 S3 存储桶。点击Create policy,然后按照 AWS 文档创建自定义政策。
- 应用政策时,请确保您已添加
sqs:DeleteMessage。 如果 SQS 队列未附加sqs:DeleteMessage权限,Google SecOps 将无法删除消息。所有消息都累积在 AWS 端,这会导致延迟,因为 Google SecOps 会反复尝试传输相同的文件。 - 点击下一步:标记。
- 添加任何所需标记,然后点击 Next: Review。
- 检查配置,然后点击 Create user。
- 创建用户后,前往安全凭据标签页,然后点击创建访问密钥。
- 选择 CLI,然后点击下一步:标记。
- 添加任何所需标记,然后点击创建访问密钥:查看。
复制已创建用户的访问密钥 ID 和私有访问密钥,以便在下一步中使用。
如需查找
SubjectID,请按以下步骤操作:- 在 Google SecOps 中开始 AWS CloudTrail Feed 配置流程。
- 前往指定的 Amazon S3 存储桶,查看 AWS CloudTrail 日志中与 Feed 设置尝试相关的条目。
- 打开相关日志条目,然后在原始 JSON 数据中查找
userIdentity部分。 - 在该部分中,找到
principalId或userName字段。此处列出的数值是您的唯一 SubjectID。 - 复制此 SubjectID 并将其添加到 AWS IAM 角色的信任政策中,以授予必要的访问权限。
配置 KMS 密钥权限
需要使用 KMS 密钥来解密在服务器端加密的 CloudTrail 日志。AWS KMS 可为存储在 Amazon S3 中的敏感数据提供增强型加密和安全性。
- 在 AWS 控制台中,搜索 密钥管理服务 (KMS)。
- 点击创建密钥:下一步。
- 为密钥添加别名。根据需要,添加说明和标签(可选)。点击下一步:检查。
- 检查配置后,点击下一步。
- 选择应有权访问此密钥的关键用户,然后点击完成。
设置 Feed
您可以通过两种不同的入口点在 Google SecOps 平台中设置 Feed:
- SIEM 设置 > Feed > 添加新 Feed
- 内容中心 > 内容包 > 开始
如何设置 AWS CloudTrail Feed
- 点击 Amazon Cloud Platform 包。
- 在 AWS CloudTrail 日志类型中,指定以下值:
为以下字段指定值:
- 来源类型: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 中所有事件的标签。
点击创建 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 专业人士的解答。