将 AWS CloudWatch 与 Google SecOps 集成

本文档介绍了如何将 AWS CloudWatch 与 Google Security Operations (Google SecOps) 集成。

集成版本:6.0

使用场景

有效操作 - 在日志中搜索、创建日志组/日志流、删除日志组/日志流、更新保留政策。

集成参数

使用以下参数配置集成:

参数显示名称> 类型> 默认值> 是强制性的> 说明
AWS 访问密钥 ID 字符串 不适用 要在集成中使用的 AWS 访问密钥 ID。
AWS 密钥 密码 不适用 要在集成中使用的 AWS 密钥。
AWS 默认区域 字符串 不适用 集成中要使用的 AWS 默认区域,例如 us-west-2。

如需了解如何在 Google SecOps 中配置集成,请参阅配置集成

如有需要,您可以在稍后阶段进行更改。配置集成实例后,您可以在剧本中使用该实例。如需详细了解如何配置和支持多个实例,请参阅支持多个实例

操作

如需详细了解操作,请参阅 在工作台页面中处理待处理的操作执行手动操作

Ping

测试与 AWS CloudWatch 的连接。

运行于

此操作不会在实体上运行。

操作执行结果

脚本结果
脚本结果名称> “价值选项”>
is_success is_success=False
is_success is_success=True
案例墙
结果类型 值 / 说明 类型
输出消息*

该操作不应失败,也不应停止 playbook 执行
如果成功:“Successfully connected to the AWS CloudWatch server with the provided connection parameters!”

操作应失败并停止 playbook 执行
if not successful: "Failed to connect to the AWS CloudWatch server! 错误为 {0}".format(exception.stacktrace)

常规

列出日志组

列出 AWS CloudWatch 中可用的日志组。

参数

参数显示名称> 类型> 默认值> 是强制性的> 说明
要返回的群组数量上限 整数 50 指定要返回的群组数量。默认值:50。

运行于

此操作不会在实体上运行。

操作执行结果

脚本结果
脚本结果名称> “价值选项”>
is_success is_success=False
is_success is_success=True
JSON 结果
[
    {
        "arn": "arn:aws:logs:us-east-1:",
        "creationTime": 1611581795766,
        "logGroupName": "CloudTrail/DefaultLogGroup",
        "metricFilterCount": 0,
        "storedBytes": 24529015
    },
    {
        "arn": "arn:aws:logs:us-east-1:",
        "creationTime": 1606993203235,
        "logGroupName": "Example",
        "metricFilterCount": 1,
        "storedBytes": 730
    },
    {
        "arn": "arn:aws:logs:us-east-1:",
        "creationTime": 1611652265055,
        "logGroupName": "aws-cloudtrail-logs",
        "metricFilterCount": 0,
        "storedBytes": 51354815
    }
]
案例墙
结果类型 值 / 说明 类型
输出消息*

操作不应失败,也不应停止 playbook 执行
如果数据可用(is_success = true):“Successfully returned available log groups in AWS CloudWatch”(已成功返回 AWS CloudWatch 中可用的日志组)。

如果没有可用数据(is_success = true):“在 AWS CloudWatch 中未找到任何日志组”。

操作应失败并停止 playbook 执行
如果出现严重错误,例如凭据错误、无法连接到服务器等:“执行操作‘列出日志组’时出错。原因:{0}''.format(error.Stacktrace)

常规
“案例墙”表格

名称:“日志组”

名称

指标过滤条件数量

存储的字节数

创建时间

常规

列出日志流

列出 AWS CloudWatch 中可用的日志流。

参数

参数显示名称> 类型> 默认值> 是强制性的> 说明
日志组 CSV 不适用 指定要检索日志流的组名称的英文逗号分隔列表。
排序依据 DDL

日志流名称

可能的值:

日志流名称

上次活动时间

指定日志流的排序方式。
排序顺序 DDL

升序

可能的值:

升序

降序

指定应使用的排序顺序。
要返回的视频流数量上限 整数 50 指定每个日志组要返回的流数量。

运行于

此操作不会在实体上运行。

操作执行结果

脚本结果
脚本结果名称> “价值选项”>
is_success is_success=False
is_success is_success=True
JSON 结果
[{
    "group":"{group name}"
"logStreams": [
        {
            "arn": "arn:aws:logs:us-east-1:log-group:aws-cloudtrail-logs:log-stream:CloudTrail_us-east-1",
            "creationTime": 1611652272827,
            "firstEventTimestamp": 1611652287716,
            "lastEventTimestamp": 1612271538268,
            "lastIngestionTime": 1612271538289,
            "logStreamName": "CloudTrail_us-east-1",
            "storedBytes": 0,
            "uploadSequenceToken": "49039859450784908968417870788122674924958823185025535393"
        }
    ]
}
]
案例墙
结果类型 值 / 说明 类型
输出消息*

该操作不应失败,也不应停止 playbook 执行
如果至少有一个日志组有可用数据 (is_success = true):“Successfully returned available log streams for the following log groups in AWS CloudWatch: {group names}”(已成功返回 AWS CloudWatch 中以下日志组的可用日志流:{group names})。

如果至少有一个日志组没有数据(is_success = true):“操作无法返回 AWS CloudWatch 中以下日志组的可用日志流:{group names}”。

如果至少有一个日志组没有数据(is_success = false):“在 AWS CloudWatch 中,未找到所提供日志组的任何日志流”。

操作应失败并停止 playbook 执行
如果出现致命错误,例如凭据错误、无法连接到服务器等:“执行操作‘列出日志流’时出错。”原因:{0}''.format(error.Stacktrace)

常规
“案例墙”表格

名称:“{Group Name}:日志流”

名称

存储的字节数

创建时间

上次活动时间戳

常规

搜索日志事件

在 AWS CloudWatch 中搜索日志事件。

参数

参数显示名称> 类型> 默认值> 是强制性的> 说明
日志组 字符串 不适用 指定要在其中搜索事件的日志组的名称。
日志流 CSV 不适用 指定以英文逗号分隔的日志流列表,您要在其中搜索事件。
时间范围 DDL

过去 1 小时

可能的值:

过去 1 小时

过去 6 小时

过去 24 小时

上周

上个月

自定义

指定搜索的时间范围。如果选择“自定义”,您还必须设置“开始时间”。
开始时间 字符串 不适用 指定搜索的开始时间。如果为“时间范围”参数选择“自定义”,则此参数是必需的。格式:ISO 8601
结束时间 字符串 不适用 指定搜索的结束时间。格式:ISO 8601。如果未提供任何值,并且为“时间范围”参数选择了“自定义”,则此参数将使用当前时间。
自定义过滤器 字符串 不适用 指定搜索的自定义过滤条件。如需了解详情,请参阅文档门户。
要返回的事件数量上限 整数 50 指定要返回的事件数量。默认值:50。

运行于

此操作不会在实体上运行。

操作执行结果

脚本结果
脚本结果名称> “价值选项”>
is_success is_success=False
is_success is_success=True
JSON 结果
[
        {
            "eventId": "ID",
            "ingestionTime": 1611652287896,
            "logStreamName": "CloudTrail_us-east-1",
            "message": {
                "eventVersion": "1.08",
                "userIdentity": {
                    "type": "AssumedRole",
                    "principalId": "ID",
                    "arn":"arn:aw
s:sts: : ACCOUNT_ID:assumed-role/AWSServiceRoleForAmazonMacie/AmazonMacieSession","accountId":"ACCOUNT_ID","accessKeyId":"KEY_ID","sessionC
ontext":{"sessionIssuer":{"type":"Role","principalId":"ID","arn":"arn:aws:iam: : ACCOUNT_ID:role/aws-service-role/macie.amazonaws.com/AW
SServiceRoleForAmazonMacie","accountId":"ACCOUNT_ID","userName":"AWSServiceRoleForAmazonMacie"},"webIdFederationData":{},"attributes":{"mfaAuthenticated": "false",
                    "creationDate": "2021-01-26T08:53:52Z"
                }
            },
            "invokedBy": "AWS Internal",
            "eventTime": "2021-01-26T08:53:52Z",
            "eventSource": "s3.amazonaws.com",
            "eventName": "GetBucketLogging",
            "awsRegion": "us-east-1",
            "sourceIPAddress": "AWSInternal",
            "userAgent": "AWS Internal",
            "requestParameters": {
                "logging": "",
                "bucketName": "example",
                "Host": "example.s3.amazonaws.com"
            },
            "responseElements": null,
            "additionalEventData": {
                "SignatureVersion": "SigV4",
                "CipherSuite": "ECDHE-RSA-AES128-GCM-SHA256",
                "bytesTransferredIn": 0,
                "AuthenticationMethod": "AuthHeader",
                "x-amz-id-2": "PFM+6pyK/gCPy95gh8dtstgtXftrpHkL8s=",
                "bytesTransferredOut": 289
            },
            "requestID": "8FA919A428BC82D7",
            "eventID": "7eb5dd44-7021-4945-b9be-27f5b1e0d8d0",
            "readOnly": true,
            "resources": [
                {
                    "accountId": "ACCOUNT_ID",
                    "type": "AWS::S3::Bucket",
                    "ARN": "arn:aws:s3:::example"
                }
            ],
            "eventType": "AwsApiCall",
            "managementEvent": true,
            "eventCategory": "Management",
            "recipientAccountId": "ACCOUNT_ID"
        },
        "timestamp": 1611652287716
    }
]
案例墙
结果类型 值 / 说明 类型
输出消息*

该操作不应失败,也不应停止 playbook 执行
如果数据可用 (is_success = true):“Successfully executed search in AWS CloudWatch”。

如果数据不可用(is_success = false):“No data was found for the provided search.”。

操作应失败并停止 playbook 执行
如果出现致命错误(例如凭据错误、无法连接到服务器、其他错误):“Error executing action "Search Log Events".”原因:{0}''.format(error.Stacktrace)

常规
“案例墙”表格

名称:“搜索结果”

:所有可用的键。

常规

设置保留政策

在 AWS CloudWatch 中为日志组设置保留政策。

参数

参数显示名称> 类型> 默认值> 是强制性的> 说明
日志组 字符串 不适用 指定要为其设置保留政策的日志组的名称。
留存天数 DDL

1

可能的值

1、3、5、7、14、30、60、90、120、150、180、365、400、545、731、1827 和 3653

指定数据应在日志组中保留多少天。

运行于

此操作不会在实体上运行。

操作执行结果

脚本结果
脚本结果名称> “价值选项”>
is_success is_success=False
is_success is_success=True
案例墙
结果类型 值 / 说明 类型
输出消息*

该操作不应失败,也不应停止 playbook 执行
如果数据成功 (is_success = true):“Successfully set the retention policy for log group {group} in AWS CloudWatch”(已成功在 AWS CloudWatch 中为日志组 {group} 设置保留政策)。

操作应失败并停止 playbook 执行
如果出现致命错误,例如凭据错误、无法连接到服务器等:“执行操作‘设置保留政策’时出错。”原因:{0}''.format(error.Stacktrace)

常规

移除保留政策

从 AWS CloudWatch 中的日志组中移除保留政策。

参数

参数显示名称> 类型> 默认值> 是强制性的> 说明
日志组 字符串 不适用 指定要从中移除保留政策的日志组的名称。

运行于

此操作不会在实体上运行。

操作执行结果

脚本结果
脚本结果名称> “价值选项”>
is_success is_success=False
is_success is_success=True
案例墙
结果类型 值 / 说明 类型
输出消息*

该操作不应失败,也不应停止 playbook 执行
如果数据成功 (is_success = true):“Successfully removed the retention policy from log group {group} in AWS CloudWatch”(已成功从 AWS CloudWatch 中的日志组 {group} 中移除保留政策)。

操作应失败并停止 playbook 执行
如果出现致命错误,例如凭据错误、无法连接到服务器等:“执行操作‘移除保留政策’时出错。”原因:{0}''.format(error.Stacktrace)

常规

创建日志组

在 AWS CloudWatch 中创建日志组。

参数

参数显示名称> 类型> 默认值> 是强制性的> 说明
日志组名称 字符串 不适用 指定新日志组的名称。

运行于

此操作不会在实体上运行。

操作执行结果

脚本结果
脚本结果名称> “价值选项”>
is_success is_success=False
is_success is_success=True
JSON 结果
{
"group_name": "GROUP_NAME"
}
案例墙
结果类型 值 / 说明 类型
输出消息*

该操作不应失败,也不应停止 playbook 执行
如果数据成功 (is_success = true):“已在 AWS CloudWatch 中成功创建新的日志组 {group}”。

操作应失败并停止 playbook 执行
如果出现严重错误,例如凭据错误、无法连接到服务器等:“Error executing action "Сreate Log Group".”原因:{0}''.format(error.Stacktrace)

常规

创建日志流

在 AWS CloudWatch 中为日志组创建日志流。

参数

参数显示名称> 类型> 默认值> 是强制性的> 说明
日志组 字符串 不适用 指定要创建日志流的日志组的名称。
日志流名称 字符串 不适用 为新的日志流指定名称。

运行于

此操作不会在实体上运行。

操作执行结果

脚本结果
脚本结果名称> “价值选项”>
is_success is_success=False
is_success is_success=True
JSON 结果
{
"log_stream": "STREAM_NAME"
}
案例墙
结果类型 值 / 说明 类型
输出消息*

该操作不应失败,也不应停止 playbook 执行
如果数据成功 (is_success = true):“Successfully created a new log stream in log group {group} in AWS CloudWatch”(已在 AWS CloudWatch 中的日志组 {group} 中成功创建新的日志流)。

操作应失败并停止 playbook 执行
如果出现严重错误,例如凭据错误、无法连接到服务器等:“Error executing action "Сreate Log Stream".”原因:{0}''.format(error.Stacktrace)

常规

删除日志组

删除 AWS CloudWatch 中的日志组。

参数

参数显示名称> 类型> 默认值> 是强制性的> 说明
日志组名称 字符串 不适用 指定需要删除的日志组的名称。

运行于

此操作不会在实体上运行。

操作执行结果

脚本结果
脚本结果名称> “价值选项”>
is_success is_success=False
is_success is_success=True
案例墙
结果类型 值 / 说明 类型
输出消息*

该操作不应失败,也不应停止 playbook 执行
如果数据成功 (is_success = true):“Successfully deleted log group {group} in AWS CloudWatch”(已成功删除 AWS CloudWatch 中的日志组 {group})。

如果群组不存在 (is_success=false):“操作无法删除 AWS CloudWatch 中的日志群组 {group}。原因:在 AWS CloudWatch 中找不到日志组 {group}。”

操作应失败并停止 playbook 执行
如果出现致命错误,例如凭据错误、无法连接到服务器等:“执行操作‘删除日志组’时出错。”原因:{0}''.format(error.Stacktrace)

常规

删除日志流

删除 AWS CloudWatch 中日志组内的日志流。

参数

参数显示名称> 类型> 默认值> 是强制性的> 说明
日志组名称 字符串 不适用 指定包含日志流的日志组的名称。
日志流名称 字符串 不适用 指定需要删除的日志流的名称。

运行于

此操作不会在实体上运行。

操作执行结果

脚本结果
脚本结果名称> “价值选项”>
is_success is_success=False
is_success is_success=True
案例墙
结果类型 值 / 说明 类型
输出消息*

该操作不应失败,也不应停止 playbook 执行
如果数据成功 (is_success = true):“Successfully deleted log stream {stream} from log group {group} in AWS CloudWatch”(已成功从 AWS CloudWatch 中的日志组 {group} 中删除日志流 {stream})。

如果流不存在 (is_success=false):“无法从 AWS CloudWatch 中的日志组 {group} 中删除日志流 {stream}。原因:在 AWS CloudWatch 的日志组 {group} 中找不到日志流 {stream}。”

如果群组不存在 (is_success=false):“无法从 AWS CloudWatch 中的日志组 {group} 中删除日志流 {stream}。原因:在 AWS CloudWatch 中找不到日志组 {group}。”

操作应失败并停止 playbook 执行
如果出现致命错误,例如凭据错误、无法连接到服务器、其他错误:“执行操作‘删除日志流’时出错。”原因:{0}''.format(error.Stacktrace)

常规

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