

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 使用 AWS Firewall Manager 和 Amazon Data Firehose 将 AWS WAF 日志发送到 Splunk
<a name="send-aws-waf-logs-to-splunk-by-using-aws-firewall-manager-and-amazon-data-firehose"></a>

*Michael Friedenthal、Aman Kaur Gandhi 和 JJ Johnson，Amazon Web Services*

## Summary
<a name="send-aws-waf-logs-to-splunk-by-using-aws-firewall-manager-and-amazon-data-firehose-summary"></a>

一直以来，有两种方法可将数据移入 Splunk：推送架构或提取架构。*提取架构*通过重试为交付数据提供保障，但它需要 Splunk 中的专用资源来轮询数据。因轮询之故，提取架构通常不是实时的。*推送架构*通常具有更低的延迟性、更高的可扩展性，并且可以降低操作复杂性和成本。但是，其无法保证交付，通常需要代理。

Splunk 与 Amazon Data Firehose 集成，通过 HTTP 事件收集器（HEC）向 Splunk 传送实时流数据。此集成带来了推送架构和提取架构的优势，确保通过重试进行数据传输，近实时，延迟低、复杂性低。HEC 通过 HTTP 或 HTTPS 快速高效地将数据直接发送到 Splunk。 HECs 是基于令牌的，因此无需在应用程序或支持文件中对凭据进行硬编码。

在 AWS Firewall Manager 策略中，您可以为所有账户中的所有 AWS WAF Web ACL 流量配置日志记录，然后可以使用 Firehose 传输流将该日志数据发送到 Splunk 进行监控、可视化和分析。该解决方案具有以下优势：
+ 集中管理和记录所有账户中的 AWS WAF Web ACL 流量
+ Splunk 与单一集成 AWS 账户
+ 可扩展性
+ 日志数据的近实时传送
+ 成本已经无服务器解决方案优化，因此您无需为未使用的资源付费。

## 先决条件和限制
<a name="send-aws-waf-logs-to-splunk-by-using-aws-firewall-manager-and-amazon-data-firehose-prereqs"></a>

**先决条件**
+ 属于组织 AWS 账户 成员的活跃分子 AWS Organizations。
+ 您必须拥有以下权限才能使用 Firehose 启用日志记录：
  + `iam:CreateServiceLinkedRole`
  + `firehose:ListDeliveryStreams`
  + `wafv2:PutLoggingConfiguration`
+ AWS WAF 并且 ACLs 必须对其网络进行配置。有关说明，请参阅[入门 AWS WAF](https://docs.aws.amazon.com/waf/latest/developerguide/getting-started.html)。
+ AWS Firewall Manager 必须进行设置。有关说明，请参阅 [AWS Firewall Manager 先决条件](https://docs.aws.amazon.com/waf/latest/developerguide/fms-prereq.html)。
+  AWS WAF 必须配置的 Firewall Manager 安全策略。有关说明，请参阅[AWS Firewall ManagerAWS WAF 策略入门](https://docs.aws.amazon.com/waf/latest/developerguide/getting-started-fms.html)。
+ 必须设置 Splunk，并配置可通过 Firehose 访问的公有 HTTP 端点。

**限制**
+  AWS 账户 必须在中的单个组织中进行管理 AWS Organizations。
+ Web ACL 必须与传输流位于同一区域。如果您要为亚马逊捕获日志 CloudFront，请在美国东部（弗吉尼亚北部）地区创建 Firehose 传送流。`us-east-1`
+ 适用于 Firehose 的 Splunk 附加组件可用于付费 Splunk Cloud 部署、分布式 Splunk Enterprise 部署和单实例 Splunk Enterprise 部署。该附加组件不支持免费试用 Splunk Cloud 部署。

## 架构
<a name="send-aws-waf-logs-to-splunk-by-using-aws-firewall-manager-and-amazon-data-firehose-architecture"></a>

**目标技术堆栈**
+ Firewall Manager
+ Firehose
+ Amazon Simple Storage Service（Amazon S3）
+ AWS WAF
+ Splunk

**目标架构 **

下图显示了如何使用防火墙管理器集中记录所有 AWS WAF 数据并通过 Firehose 将其发送到 Splunk。

![\[架构图显示了通过 Amazon Data Firehose 将 AWS WAF 日志数据发送到 Splunk 的架构。\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/images/pattern-img/3dfeaae0-985a-42b8-91c4-ece081f0b51b/images/669169b1-caa4-419b-9988-19806ded54eb.png)


1.  AWS WAF 网络 ACLs 向 Firewall Manager 发送防火墙日志数据。

1. Firewall Manager 将日志数据发送至 Firehose。

1. Firehose 传输流将日志数据转发至 Splunk 和 S3 存储桶。当 Firehose 传输流出现错误时，S3 存储桶可充当备份。

**自动化和扩缩**

该解决方案旨在扩展和适应组织 ALCs 内的所有 AWS WAF Web。您可以将所有网络配置 ACLs 为使用相同的 Firehose 实例。但是，如果您想设置和使用多个 Firehose 实例，则可以这样操作。

## 工具
<a name="send-aws-waf-logs-to-splunk-by-using-aws-firewall-manager-and-amazon-data-firehose-tools"></a>

**AWS 服务**
+ [AWS Firewall Manager](https://docs.aws.amazon.com/waf/latest/developerguide/fms-chapter.html)是一项安全管理服务，可帮助您在中的账户和应用程序中集中配置和管理防火墙规则 AWS Organizations。
+ [Amazon Data Firehose](https://docs.aws.amazon.com/firehose/latest/dev/what-is-this-service.html) 可帮助您将实时[流数据传输](https://aws.amazon.com/streaming-data/)到受支持的第三方服务提供商（例如 Splunk）拥有的其他 AWS 服务自定义 HTTP 终端节点和 HTTP 终端节点。
+ [Amazon Simple Storage Service（Amazon S3）](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html)是一项基于云的对象存储服务，可帮助您存储、保护和检索任意数量的数据。
+ [AWS WAF](https://docs.aws.amazon.com/waf/latest/developerguide/what-is-aws-waf.html) 是一种 Web 应用程序防火墙，可帮助您监控转发至受保护 Web 应用程序资源的 HTTP 和 HTTPS 请求。

**其他工具**
+ [Splunk](https://docs.splunk.com/Documentation) 可帮助您监控、可视化和分析日志数据。

## 操作说明
<a name="send-aws-waf-logs-to-splunk-by-using-aws-firewall-manager-and-amazon-data-firehose-epics"></a>

### 配置 Splunk
<a name="configure-splunk"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 安装适用于 Splunk 的应用程序。 AWS | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/send-aws-waf-logs-to-splunk-by-using-aws-firewall-manager-and-amazon-data-firehose.html) | 安全管理员、Splunk 管理员 | 
| 安装的附加组件 AWS WAF。 | 重复前述说明，以安装适用于 Splunk 的 **AWS Web 应用程序防火墙附加组件**。 | 安全管理员、Splunk 管理员 | 
| 为 Firehose 安装并配置 Splunk 附加组件。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/send-aws-waf-logs-to-splunk-by-using-aws-firewall-manager-and-amazon-data-firehose.html) | 安全管理员、Splunk 管理员 | 

### 创建 Firehose 传输流
<a name="create-the-akf-delivery-stream"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 授予 Firehose 访问 Splunk 目的地的权限。 | 配置访问策略，允许 Firehose 访问 Splunk 目标并将日志数据备份至 S3 存储桶。有关更多信息，请参阅[授予 Firehose 进入 Splunk 目的地的权限](https://docs.aws.amazon.com/firehose/latest/dev/controlling-access.html#using-iam-splunk)。 | 安全管理员 | 
| 创建 Firehose 传输流。 | 在您管理网页 ACLs 的同一个账户中 AWS WAF，在 Firehose 中创建传送流。创建传输流时，您需要拥有 IAM 角色。Firehose 承担该 IAM 角色，并获得对指定 S3 存储桶的访问权限。有关说明，请参阅[创建传输流](https://docs.aws.amazon.com/firehose/latest/dev/basic-create.html)。注意以下几点：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/send-aws-waf-logs-to-splunk-by-using-aws-firewall-manager-and-amazon-data-firehose.html)对您在 HTTP 事件收集器中配置的每个令牌重复此过程。 | 安全管理员 | 
| 测试传输流。 | 测试传输流以验证配置是否正确。有关说明，请参阅 Firehose 文档中的[使用 Splunk 作为目标进行测试](https://docs.aws.amazon.com/firehose/latest/dev/test-drive-firehose.html#test-drive-destination-splunk)。 | 安全管理员 | 

### 将 Firewall Manager 配置为记录数据
<a name="configure-firewall-manager-to-log-data"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 配置 Firewall Manager 策略。 | 必须将 Firewall Manager 策略配置为：启用日志记录并将日志转发至正确的 Firehose 传输流。有关更多信息和说明，请参阅[为 AWS WAF 策略配置日志记录](https://docs.aws.amazon.com/waf/latest/developerguide/waf-policies.html#waf-policies-logging-config)。 | 安全管理员 | 

## 相关资源
<a name="send-aws-waf-logs-to-splunk-by-using-aws-firewall-manager-and-amazon-data-firehose-resources"></a>

**AWS resources**
+ [记录 Web ACL 流量](https://docs.aws.amazon.com/waf/latest/developerguide/logging.html)（AWS WAF 文档）
+ [为 AWS WAF 策略配置日志记录](https://docs.aws.amazon.com/waf/latest/developerguide/waf-policies.html#waf-policies-logging-config)（AWS WAF 文档）
+ [教程：使用 Amazon Data Firehose 向 Splunk 发送 VPC 流日志](https://docs.aws.amazon.com/firehose/latest/dev/vpc-splunk-tutorial.html)（Firehose 文档）
+ [如何使用 Amazon Data Firehose 向 Splunk 推送 VPC 流日志？](https://aws.amazon.com/premiumsupport/knowledge-center/push-flow-logs-splunk-firehose/) （AWS 知识中心）
+ [使用 Amazon Data Firehose 支持向 Splunk 摄取数据（博客文章](https://aws.amazon.com/blogs/big-data/power-data-ingestion-into-splunk-using-amazon-kinesis-data-firehose/)）AWS 

**Splunk 文档**
+ [适用于 Amazon Data Firehose 的 Splunk 附加组件](https://docs.splunk.com/Documentation/AddOns/released/Firehose/About)