收集 AWS Inspector 日志
解析器版本:1.0
本文档介绍了如何使用 Amazon S3 将 AWS Inspector 日志注入到 Google Security Operations。
Amazon Inspector 是一种漏洞管理服务,可自动发现工作负载,并持续扫描这些工作负载,以查找软件漏洞和意外的网络暴露。它会扫描 Amazon EC2 实例、Amazon ECR 中的容器映像和 AWS Lambda 函数,生成包含严重程度得分和补救建议的详细结果。此集成使用 Amazon Inspector 的内置发现结果导出功能将 JSON 格式的发现结果报告传送到 S3 存储桶,然后 Google SecOps 使用 Amazon S3 V2 Feed 提取这些报告。
准备工作
请确保满足以下前提条件:
- Google SecOps 实例
- 对 AWS 管理控制台的特权访问权限,并拥有以下管理权限:
- Amazon Inspector(结果、报告)
- Amazon S3(存储桶、存储桶政策)
- AWS KMS(密钥政策)
- AWS IAM(角色、政策、用户)
配置 S3 存储桶以导出 Amazon Inspector 调查结果
Amazon Inspector 会先使用 AWS KMS 密钥对调查结果报告进行加密,然后再将其存储在 S3 存储桶中。您必须同时配置 S3 存储桶政策和 KMS 密钥政策,以允许 Amazon Inspector 访问。
创建和配置 S3 存储桶
- 按照本用户指南创建 Amazon S3 存储桶:创建存储桶。
保存存储桶名称和区域以供日后参考(例如
inspector-findings-to-secops)。在 https://console.aws.amazon.com/s3 的 Amazon S3 控制台中,选择已创建的存储桶。
选择权限标签页。
在存储分区政策部分,点击修改。
将以下语句添加到存储桶政策中(将
inspector-findings-to-secops替换为您的存储桶名称,将111122223333替换为您的 AWS 账号 ID,并将us-east-1替换为您的 AWS 区域):{ "Version": "2012-10-17", "Statement": [ { "Sid": "allow-inspector", "Effect": "Allow", "Principal": { "Service": "inspector2.amazonaws.com" }, "Action": [ "s3:PutObject", "s3:PutObjectAcl", "s3:AbortMultipartUpload" ], "Resource": "arn:aws:s3:::inspector-findings-to-secops/*", "Condition": { "StringEquals": { "aws:SourceAccount": "111122223333" }, "ArnLike": { "aws:SourceArn": "arn:aws:inspector2:us-east-1:111122223333:report/*" } } } ] }点击保存更改。
配置 AWS KMS 密钥
Amazon Inspector 需要使用客户管理的对称加密 AWS KMS 密钥(与 S3 存储桶位于同一区域)来加密调查结果报告。
- 访问 https://console.aws.amazon.com/kms,打开 AWS KMS 控制台。
- 在导航窗格中,选择客户管理的密钥。
- 选择要使用的 KMS 密钥(或创建新的对称加密密钥)。
- 选择密钥政策标签页,然后点击修改。
将以下语句添加到密钥政策中(将
111122223333替换为您的 AWS 账号 ID,并将us-east-1替换为您的 AWS 区域):{ "Sid": "Allow Amazon Inspector to use the key", "Effect": "Allow", "Principal": { "Service": "inspector2.amazonaws.com" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey*" ], "Resource": "*", "Condition": { "StringEquals": { "aws:SourceAccount": "111122223333" }, "ArnLike": { "aws:SourceArn": "arn:aws:inspector2:us-east-1:111122223333:report/*" } } }点击保存更改。
将 Amazon Inspector 发现结果导出到 S3
- 访问 https://console.aws.amazon.com/inspector/v2/home,登录 Amazon Inspector 控制台。
- 在导航窗格中,依次前往发现 > 所有发现。
可选:使用检测结果表格上方的过滤条件栏,指定要在报告中纳入哪些检测结果。
点击导出发现结果。
在导出设置部分,针对导出文件类型,选择 JSON。
在导出位置下,对于 S3 URI,点击 Browse S3,然后选择 S3 存储桶
inspector-findings-to-secops。对于 KMS 密钥,请选择您配置的 AWS KMS 密钥。
点击导出。
使用 AWS CLI 自动导出发现结果
如需定期导出发现结果报告,请使用 AWS CLI create-findings-report 命令。您可以使用 Amazon EventBridge Scheduler 或 Cron 作业来安排此命令。
示例命令:
aws inspector2 create-findings-report \ --report-format JSON \ --s3-destination bucketName=inspector-findings-to-secops,keyPrefix=findings/,kmsKeyArn=arn:aws:kms:us-east-1:111122223333:key/your-kms-key-id
如需了解详情,请参阅 create-findings-report AWS CLI 参考文档。
为 Google SecOps 配置 IAM 用户
Google SecOps 需要一个具有 S3 存储桶读取权限的 IAM 用户才能注入导出的发现结果。
- 按照以下用户指南创建用户:创建 IAM 用户。
- 选择创建的用户。
- 选择安全凭据标签页。
- 在访问密钥部分中,点击创建访问密钥。
- 选择第三方服务作为使用情形。
- 点击下一步。
- 可选:添加说明标记。
- 点击创建访问密钥。
- 点击下载 .csv 文件以保存访问密钥和密钥,供日后参考。
- 点击完成。
- 选择权限标签页。
- 在权限政策部分中,点击添加权限。
- 选择添加权限。
- 选择直接附加政策。
- 搜索 AmazonS3FullAccess 政策。
- 选择相应政策。
- 点击下一步。
- 点击添加权限。
在 Google SecOps 中配置 Feed 以注入 AWS Inspector 日志
- 依次前往 SIEM 设置 > Feed。
- 点击添加新 Feed。
- 在下一页上,点击配置单个 Feed。
- 为Feed 名称输入一个唯一名称。
- 选择 Amazon S3 V2 作为来源类型。
- 选择 AWS Inspector 作为日志类型。
- 点击下一步,然后点击提交。
为以下字段指定值:
- S3 URI:
s3://inspector-findings-to-secops/findings/ - 来源删除选项:根据您的偏好选择删除选项
- 文件存在时间上限:包含在过去指定天数内修改的文件(默认值为 180 天)
- 访问密钥 ID:有权访问 S3 存储桶的用户访问密钥
- 私有访问密钥:具有 S3 存储桶访问权限的用户私有密钥
- 资产命名空间:资产命名空间
- 注入标签:要应用于此 Feed 中事件的标签
- S3 URI:
点击下一步,然后点击提交。
UDM 映射表
| 日志字段 | UDM 映射 | 逻辑 |
|---|---|---|
duration_ms_label |
additional.fields |
已合并 |
evnt_app_class_label |
additional.fields |
已合并 |
evnt_cloud_application_class_label |
additional.fields |
已合并 |
evnt_cloud_sandbox_md5_label |
additional.fields |
已合并 |
evnt_cloudapp_rule_label |
additional.fields |
已合并 |
evnt_content_type_label |
additional.fields |
已合并 |
evnt_customer_label |
additional.fields |
已合并 |
evnt_department_label |
additional.fields |
已合并 |
evnt_location_label |
additional.fields |
已合并 |
evnt_lpclagg_label |
additional.fields |
已合并 |
evnt_lpcltype_label |
additional.fields |
已合并 |
evnt_network_service_label |
additional.fields |
已合并 |
evnt_tenant_label |
additional.fields |
已合并 |
evnt_url_category_label |
additional.fields |
已合并 |
exception_label |
additional.fields |
已合并 |
function_label |
additional.fields |
已合并 |
id_label |
additional.fields |
已合并 |
level_no_label |
additional.fields |
已合并 |
line_label |
additional.fields |
已合并 |
location_label |
additional.fields |
已合并 |
logger_field |
additional.fields |
已合并 |
msg_location_label |
additional.fields |
已合并 |
msg_record_functionName_label |
additional.fields |
已合并 |
msg_record_functionVersion_label |
additional.fields |
已合并 |
msg_record_initializationType_label |
additional.fields |
已合并 |
msg_record_instancId_label |
additional.fields |
已合并 |
msg_record_instanceMaxMemory_label |
additional.fields |
已合并 |
msg_record_phase_label |
additional.fields |
已合并 |
msg_service_label |
additional.fields |
已合并 |
msg_type_label |
additional.fields |
已合并 |
msg_xray_trace_id_label |
additional.fields |
已合并 |
protocol_label |
additional.fields |
已合并 |
record_version_label |
additional.fields |
已合并 |
repr_label |
additional.fields |
已合并 |
service_label |
additional.fields |
已合并 |
sourcetype_label |
additional.fields |
已合并 |
thread_name_label |
additional.fields |
已合并 |
type_label |
additional.fields |
已合并 |
xray_trace_id_label |
additional.fields |
已合并 |
evnt_device_hostname |
intermediary.hostname |
直接映射 |
evnt_fwd_method_label |
intermediary.resource.attribute.labels |
已合并 |
desc_msg |
metadata.description |
直接映射 |
message |
metadata.description |
直接映射 |
msg |
metadata.description |
直接映射 |
msg_desc_msg |
metadata.description |
直接映射 |
msg_record_desc_msg |
metadata.description |
直接映射 |
msg_text |
metadata.description |
直接映射 |
msg.time |
metadata.event_timestamp |
解析为 ISO8601 |
repr_time |
metadata.event_timestamp |
解析为 ISO8601 |
timestamp |
metadata.event_timestamp |
解析为 ISO8601 |
has_host |
metadata.event_type |
已映射:true → STATUS_UPDATE |
has_user |
metadata.event_type |
已映射:true → USER_COMMUNICATION、true → USER_UNCATEGORIZED |
msg_record_module |
metadata.product_event_type |
直接映射 |
id_1 |
metadata.product_log_id |
直接映射 |
evnt_bytes_in |
network.received_bytes |
直接映射 |
evnt_bytes_out |
network.sent_bytes |
直接映射 |
evnt_app_name |
principal.application |
直接映射 |
msg_record_process_name |
principal.application |
直接映射 |
evnt_device_app_version_label |
principal.asset.attribute.labels |
已合并 |
evnt_ssl_policy_label |
principal.asset.attribute.labels |
已合并 |
evnt_server_ip |
principal.asset.ip |
已合并 |
evnt_src_ip |
principal.asset.ip |
已合并 |
evnt_src_translated_ip |
principal.asset.ip |
已合并 |
msg_record_file_path |
principal.file.full_path |
直接映射 |
msg_record_file_name |
principal.file.names |
已合并 |
evnt_hostname |
principal.hostname |
直接映射 |
host |
principal.hostname |
直接映射 |
evnt_server_ip |
principal.ip |
已合并 |
evnt_src_ip |
principal.ip |
已合并 |
evnt_src_translated_ip |
principal.ip |
已合并 |
evnt_os |
principal.platform |
已映射:Windows → WINDOWS,Linux → LINUX |
evnt_src_port |
principal.port |
直接映射 |
port_number |
principal.port |
直接映射 |
msg_record_process_id |
principal.process.pid |
直接映射 |
cmd_status_label |
principal.resource.attribute.labels |
已合并 |
evnt_format_label |
principal.resource.attribute.labels |
已合并 |
evnt_os_label |
principal.resource.attribute.labels |
已合并 |
msg_record_runtimeVersionArn_label |
principal.resource.attribute.labels |
已合并 |
msg_record_runtimeVersion_label |
principal.resource.attribute.labels |
已合并 |
record_requestId_labels |
principal.resource.attribute.labels |
已合并 |
requestId_labels |
principal.resource.attribute.labels |
已合并 |
msg_record_name |
principal.resource.name |
直接映射 |
id |
principal.resource.product_object_id |
直接映射 |
evnt_url |
principal.url |
直接映射 |
evnt_device_owner |
principal.user.user_display_name |
直接映射 |
evnt_user |
principal.user.userid |
直接映射 |
msg_extra_desc_msg_body_account_id |
principal.user.userid |
直接映射 |
evnt_action |
security_result.action |
已映射:allow → security_result_action |
security_result_action |
security_result.action |
已合并 |
security_result_category_details |
security_result.category_details |
已合并 |
security_result_url_super_category |
security_result.category_details |
已合并 |
elapsed_time_label |
security_result.detection_fields |
已合并 |
evnt_session_count_label |
security_result.detection_fields |
已合并 |
evnt_ssl_decrypted_label |
security_result.detection_fields |
已合并 |
evnt_url_class_label |
security_result.detection_fields |
已合并 |
level_icon_label |
security_result.detection_fields |
已合并 |
level |
security_result.severity |
已映射:INFO → INFORMATIONAL,WARNING → MEDIUM |
msg_level |
security_result.severity |
已映射:INFO → INFORMATIONAL,WARNING → MEDIUM |
evnt_dest_ip |
target.ip |
已合并 |
evnt_dest_country |
target.location.country_or_region |
直接映射 |
evnt_dest_port |
target.port |
直接映射 |
dst_url |
target.url |
直接映射 |
| 不适用 | metadata.event_type |
常量:USER_COMMUNICATION |
| 不适用 | metadata.product_name |
常量:AWS Inspector |
| 不适用 | metadata.vendor_name |
常量:AWS Inspector |
| 不适用 | network.ip_protocol |
常量:UDP |
| 不适用 | principal.platform |
常量:WINDOWS |
| 不适用 | security_result.detection_fields |
常量:client_tunnel_ip_label |
| 不适用 | security_result.severity |
常量:INFORMATIONAL |