收集 AWS Control Tower 日志
支持的平台:
Google SecOps
SIEM
本文档介绍了如何将 AWS Control Tower 日志提取到 Google Security Operations。AWS Control Tower 可跨多个 AWS 账号实现治理、合规性和安全监控。通过此集成,您可以分析 AWS Control Tower 中的日志,从而获得更好的可见性和安全状况。
准备工作
- 确保您拥有 Google SecOps 实例。
- 确保您拥有对 AWS 的特权访问权限。
配置 Amazon S3 存储分区
- 按照以下用户指南创建 Amazon S3 存储分区:创建存储分区
- 保存存储分区的名称和区域,以备日后使用。
- 按照此用户指南中的说明创建用户:创建 IAM 用户。
- 选择创建的用户。
- 选择安全凭据标签页。
- 在访问密钥部分中,点击创建访问密钥。
- 选择第三方服务作为用例。
- 点击下一步。
- 可选:添加说明标记。
- 点击创建访问密钥。
- 点击下载 CSV 文件,保存访问密钥和密钥以供日后使用。
- 点击完成。
- 选择权限标签页。
- 在权限政策部分中,点击添加权限。
- 选择添加权限。
- 选择直接附加政策。
- 搜索并选择 AmazonS3FullAccess 和 CloudWatchLogsFullAccess 政策。
- 点击下一步。
- 点击添加权限。
在 AWS Control Tower 中配置 CloudTrail
- 登录 AWS Management Console。
- 前往 AWS Control Tower。
- 在搜索栏中输入 CloudTrail,然后从服务列表中选择它。
点击创建小路以创建新小路。
指定轨迹设置:
- 轨迹名称:为轨迹提供有意义的名称(例如 ControlTowerTrail)。
- 将轨迹应用于所有区域:确保为将轨迹应用于所有区域选择是。
- 管理事件:确保将读写事件设置为全部。
- 可选:数据事件:启用 S3 数据事件和 Lambda 数据事件,以捕获详细的数据活动。
- 可选:日志文件验证:启用此选项可确保日志文件在存储后不会被篡改。
在事件选择器中,选择记录管理事件和数据事件。
配置 CloudTrail 以将日志发送到 S3 存储分区
- 前往 AWS IAM 控制台。
- 点击角色。
- 搜索 CloudTrail 使用的角色
AWSServiceRoleForCloudTrail
(该角色会在您设置 CloudTrail 时自动创建)。 - 在角色的权限标签页中,点击附加政策。
- 搜索
CloudTrailS3DeliveryPolicy
。 - 选中
CloudTrailS3DeliveryPolicy
政策旁边的复选框。 - 点击附加政策。
- 前往 AWS CloudTrail 控制台。
- 在存储位置部分,选择 S3 作为日志文件的目标位置。
- 选择您之前创建的 S3 存储分区。
- 出现提示时,点击允许以向 CloudTrail 授予向您选择的存储分区写入日志的权限。
- 检查您的设置,然后点击创建(如果您要修改现有轨迹,请点击保存更改)。
在 Google SecOps 中配置 Feed 以提取 AWS Control Tower 日志
- 依次前往 SIEM 设置 > Feed。
- 点击新增。
- 在 Feed 名称字段中,输入 Feed 的名称(例如 AWS Control Tower 日志)。
- 选择 Amazon S3 作为来源类型。
- 选择 AWS 控制台作为日志类型。
- 点击下一步。
为以下输入参数指定值:
- 区域:Amazon S3 存储分区所在的区域。
- S3 URI:存储分区 URI。
s3://your-log-bucket-name/
- 将
your-log-bucket-name
替换为存储分区的实际名称。
- 将
- URI 是:选择目录或包含子目录的目录。
来源删除选项:根据您的偏好选择删除选项。
访问密钥 ID:有权访问 S3 存储分区的用户访问密钥。
私有访问密钥:有权访问 S3 存储分区的用户私有密钥。
资源命名空间:资源命名空间。
提取标签:要应用于此 Feed 中的事件的标签。
点击下一步。
在最终确定界面中查看新的 Feed 配置,然后点击提交。
UDM 映射表
日志字段 | UDM 映射 | 逻辑 |
---|---|---|
awsAccountId | target.user.group_identifiers | 与事件关联的 AWS 账号 ID。 |
digestPublicKeyFingerprint | target.file.sha1 | 用于对摘要进行签名的公钥的指纹。 |
digestPublicKeyFingerprint | target.resource.attribute.labels.value | 用于对摘要进行签名的公钥的指纹。 |
digestS3Bucket | target.resource.name | 存储摘要的 S3 存储分区的名称。 |
digestS3Object | target.file.full_path | S3 存储分区中摘要对象的路径。 |
digestSignatureAlgorithm | network.tls.cipher | 用于对摘要签名的算法。 |
digestSignatureAlgorithm | target.resource.attribute.labels.value | 用于对摘要签名的算法。 |
digestStartTime | metadata.event_timestamp | 摘要时间段的开始时间。如果 eventTime 不可用,则用作事件时间。 |
eventCategory | security_result.category_details | 事件的类别。 |
eventID | metadata.product_log_id | 事件的唯一 ID。 |
eventName | metadata.product_event_type | 事件的名称。 |
eventName | security_result.summary | 事件的名称,用于生成安全结果摘要。 |
eventSource | target.application | 事件的来源。 |
eventTime | metadata.event_timestamp | 事件发生的时间。 |
eventType | additional.fields.value.string_value | 事件的类型。 |
logFiles.hashValue | about.file.sha256 | 日志文件的 SHA-256 哈希值。 |
logFiles.s3Bucket | about.resource.name | 存储日志文件的 S3 存储分区的名称。 |
logFiles.s3Object | about.file.full_path | S3 存储分区中日志文件对象的路径。 |
previousDigestHashValue | target.file.sha256 | 上一个摘要的 SHA-256 哈希值。 |
recipientAccountId | target.resource.attribute.labels.value | 事件接收方的 AWS 账号 ID。 |
Records.awsRegion | principal.location.name | 事件发生的 AWS 区域。 |
Records.errorCode | security_result.rule_id | 与请求关联的错误代码(如果有)。 |
Records.errorMessage | security_result.description | 与请求关联的错误消息(如果有)。 |
Records.eventCategory | security_result.category_details | 事件的类别。 |
Records.eventID | metadata.product_log_id | 事件的唯一 ID。 |
Records.eventName | metadata.product_event_type | 事件的名称。 |
Records.eventName | security_result.summary | 事件的名称,用于生成安全结果摘要。 |
Records.eventSource | target.application | 事件的来源。 |
Records.eventTime | metadata.event_timestamp | 事件发生的时间。 |
Records.eventType | additional.fields.value.string_value | 事件的类型。 |
Records.requestID | target.resource.attribute.labels.value | 请求的 ID。 |
Records.requestParameters.groupName | target.group.group_display_name | 与请求关联的组的名称(如果有)。 |
Records.requestParameters.userName | src.user.userid | 与请求关联的用户的姓名(如果有)。 |
Records.requestParameters.userName | src.user.user_display_name | 与请求关联的用户的姓名(如果有)。 |
Records.responseElements.ConsoleLogin | security_action | 控制台登录尝试的结果。 |
Records.responseElements.ConsoleLogin | security_result.summary | 控制台登录尝试的结果,用于生成安全结果摘要。 |
Records.sourceIPAddress | principal.hostname | 主账号的 IP 地址。如果不是有效的 IP,则用作主机名。 |
Records.sourceIPAddress | principal.ip | 主账号的 IP 地址。 |
Records.tlsDetails.cipherSuite | network.tls.cipher | 用于 TLS 连接的加密套件。 |
Records.tlsDetails.tlsVersion | network.tls.version | 用于连接的 TLS 版本。 |
Records.userAgent | network.http.user_agent | 请求的用户代理。 |
Records.userIdentity.accessKeyId | additional.fields.value.string_value | 用于请求的访问密钥 ID。 |
Records.userIdentity.accountId | principal.user.group_identifiers | 用户的 AWS 账号 ID。 |
Records.userIdentity.arn | principal.user.attribute.labels.value | 用户的 ARN。 |
Records.userIdentity.arn | target.user.userid | 用户的 ARN。如果 userName 不可用,则用作用户 ID。 |
Records.userIdentity.principalId | principal.user.product_object_id | 用户的主账号 ID。 |
Records.userIdentity.sessionContext.attributes.mfaAuthenticated | principal.user.attribute.labels.value | 是否针对请求使用了多重身份验证 (MFA)。 |
Records.userIdentity.sessionContext.sessionIssuer.userName | principal.user.userid | 发出会话的用户的用户名。 |
Records.userIdentity.type | principal.resource.type | 用于请求的身份类型。 |
Records.userIdentity.userName | target.user.userid | 用户的用户名。 |
- | extensions.auth.mechanism | 设置为“REMOTE”。 |
- | metadata.event_type | 根据 eventName 设置为“STATUS_UPDATE”“USER_RESOURCE_ACCESS”“USER_LOGIN”或“GENERIC_EVENT”。 |
- | metadata.log_type | 设置为“AWS_CONTROL_TOWER”。 |
- | metadata.product_name | 设置为“AWS Control Tower”。 |
- | metadata.vendor_name | 设置为“AWS”。 |
- | principal.asset.attribute.cloud.environment | 设置为“AMAZON_WEB_SERVICES”。 |
- | security_result.action | 根据 errorCode 设置为“ALLOW”或“BLOCK”。 |
- | security_result.severity | 设置为“INFORMATIONAL”(信息性)。 |
变化
2024-03-17
- 增强功能:
- 将“req.userIdentity.arn”和“req.userIdentity.userName”映射到“target.user.userid”。
2023-01-04
- 增强功能:
- 初始化了变量,以避免在 For 循环中复制数据。
2022-12-15
- 增强功能:
- 将“metadata.vendor_name”映射到“AWS”。
- 将“metadata.product_name”映射到“AWS Control Tower”。
- 当“eventName”为“ConsoleLogin”时,将“metadata.event_type”映射到“USER_LOGIN”。
- 将“eventName”为“ConsoleLogin”时“security_result.severity”映射为“INFORMATIONAL”。
2022-11-17
- 增强功能:
- 将“req.userIdentity.userName”和“req.userIdentity.sessionContext.sessionIssuer.userName”映射到“target.user.id”。
- 将“ConsoleLogin:Success”映射到“security_result.action”。
- 将端口信息从“sourceIPAddress”映射到“principal.port”。
2022-10-31
- 新创建的解析器。
需要更多帮助?向社区成员和 Google SecOps 专业人士寻求解答。