

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

# 部署和实施您的机器人控制策略
<a name="deployment"></a>

在规划机器人控制部署策略时，需要考虑多个因素。除了 Web 应用程序的独特特征外，环境规模、开发过程和组织结构也会影响部署策略。根据您的环境和应用程序特性，可以使用集中式或分散式部署策略：
+ **集中部署策略** — 当您需要严格执行机器人控制时，集中式方法可以实现更高的控制程度。如果应用程序团队更喜欢减轻管理负担，则这种方法非常适合。当 Web 应用程序具有相似的特征时，集中式方法最为有效。在这种情况下，应用程序将受益于一组通用的爬虫程序控制规则和爬虫程序缓解措施。
+ **去中心化部署策略** — 分散式方法为应用团队提供了独立定义和实施机器人控制配置的自主权。这种方法在较小的环境中很常见，或者当应用程序团队需要保持对其机器人控制策略的控制时。由于许多 Web 应用程序的性质，通常需要维护针对独特应用程序特征量身定制的独立机器人控制策略，从而形成一种去中心化的方法。
+ **组合策略** — 这两种方法的组合适用于混合使用 Web 应用程序。例如，这可能需要一套适用于所有网络的基本规则 ACLs，而更具体的机器人控制策略的管理则委托给应用程序团队。 

您可以使用[AWS Firewall Manager](https://docs.aws.amazon.com/waf/latest/developerguide/fms-chapter.html)集中和自动部署定义机器人控制策略 ACLs 的 AWS WAF Web。使用 Firewall Manager 时，请考虑集中管理机器人控制策略是否合适，包括是否应将这些策略委托给应用团队。借助 Firewall Manager，您可以使用标记来允许应用团队选择加入策略。 AWS WAF 这 AWS WAF 提供了智能威胁缓解功能。您还可以为应用程序和安全操作启用集中 AWS WAF 日志记录。

无论使用哪种部署策略，都建议通过基于基础设施即代码 (IaC) 的框架（例如[AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)或）来定义和管理入职流程。[AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/v2/guide/home.html)这可以帮助您配置源代码管理以存储和版本配置对象。有关更多信息，请参阅 [AWS CDK](https://github.com/aws-samples/aws-cdk-examples/tree/master/python/waf)(GitHub) 和 [CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafv2-webacl.html)（AWS 文档）的 AWS WAF 配置示例。

## 实施策略
<a name="implementation"></a>

选择部署策略后，就可以开始实施了。部署策略定义了如何将规则部署到不同的应用程序。在实施策略中，重点是添加控制措施、测试、持续监测，然后评估其效果的迭代过程。

### 了解流量模式
<a name="traffic-patterns"></a>

要真正了解流量模式，必须熟悉应用程序的业务功能和预期属性，例如使用模式、关键资源和用户角色。将生产流量和在应用程序测试期间生成的流量合并在一起，以建立评估基准。确保时间范围包含足以代表多个使用高峰的流量数据。

使用您的首选工具，查看代表性使用期内的流量日志和指标。通过筛选 AWS WAF 日志[字段`headers`（例如，`User-Agent`和`Referer`）、和，来分析异常请求的日志](https://docs.aws.amazon.com/waf/latest/developerguide/logging-fields.html)数据。`country` `clientIp`记下统一的资源标识符 (URIs) 及其访问频率。对流量进行分类，例如识别好机器人。例如，允许有益的机器人访问，例如搜索引擎爬虫和监视器。

在 AWS WAF 控制台的**机器人控制面板**上，可以查看任何活动的 Web ACL 的机器人活动示例。尽管这提供了常见机器人请求量的初步视角，但请执行进一步的配置和分析以更好地了解机器人活动。

为了有效实施，您必须充分了解机器人流量、其影响，以及哪些机器人请求是有益的还是恶意的。这有助于进入下一阶段，选择控件，并帮助您并行评估机器人流量。

### 选择和添加控件
<a name="selecting-controls"></a>

初始流量分析有助于确定要使用哪些机器人控件以及为每个控件选择哪些操作。您也可以选择记录和监控活动，以备将来可能采取行动。初始流量分析可帮助您选择最佳控制来管理流量。有关可用控件的更多信息，请参阅本指南[机器人控制技术](techniques.md)中的。

考虑在此步骤中包括其他 SDK 实现。这可以帮助您在所有必需的应用程序中测试和完成 SDK 实现。 AWS WAF 当您实施 JavaScript SDK 或移动 SDK 时，机器人控制和欺诈控制规则可提供完整的令牌评估优势。有关更多信息，请参阅 AWS WAF 文档中的[为什么要使用 SDKs 与 Bot Control 的应用程序集成](https://docs.aws.amazon.com/waf/latest/developerguide/waf-bot-with-tokens.html)。

我们建议为不同的应用程序类型实现令牌获取，如下所示：
+ **单页应用程序 (SPA)**- JavaScript SDK（无重定向）
+ **移动浏览器**- JavaScript SDK 或规则操作（验证码或挑战）
+ **网页视图** — JavaScript SDK 或规则操作（验证码或挑战）
+ **原生应用程序**-移动 SDK
+ **iFrames — S** DK JavaScript 

有关如何实现的更多信息 SDKs，请参阅 AWS WAF 文档中的[AWS WAF 客户端应用程序集成](https://docs.aws.amazon.com/waf/latest/developerguide/waf-application-integration.html)。

### 测试并部署到生产环境
<a name="testing"></a>

这些控件最初应部署在非生产环境中，您可以在其中执行测试以验证是否保留了预期的 Web 应用程序功能。在生产部署之前，请务必在测试环境中进行彻底的验证。

在非生产环境中进行测试和验证后，可以继续进行生产版本。选择预期用户流量最低的日期和时间。在部署之前，应用程序和安全团队应审查操作准备情况，讨论如何回滚更改，并查看仪表板，以确保配置所有必需的指标和警报。

通过 [Amazon CloudFront 持续部署](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/continuous-deployment.html)，您可以将少量流量发送到具有专门为机器人控制评估配置的 AWS WAF Web ACL 的暂存分配。 AWS WAF 为任何新的或更新的托管规则提供[版本管理](https://docs.aws.amazon.com/waf/latest/developerguide/waf-managed-rule-groups-versioning.html)，以便您可以在更改开始评估生产流量之前对其进行测试和批准。

### 评估和调整控件
<a name="tuning-controls"></a>

实施的控制措施可以提供对交通活动和模式的进一步洞察和可见性。经常监控和分析应用程序流量，以便添加或调整安全控制。通常会有一个调整阶段，以减少潜在的误报和误报。*误报是指*未被你的控制所捕捉到的攻击，需要你强化规则。*误报*是指被错误地识别为攻击并因此被阻止的合法请求。

分析和调整可以手动完成，也可以在工具的帮助下完成。安全信息和事件管理 (SIEM) 系统是一种常用工具，可帮助提供指标和智能监控。有许多可用的复杂程度各不相同，但它们都为获取交通见解提供了一个很好的起点。

为网站和应用程序定义重要的关键性能指标 (KPIs) 可以帮助您更快地识别何时出现问题无法按预期运行。例如，您可以使用信用卡退款、每个账户的销售额或转化率作为机器人可能生成的业务异常的指标。定义和了解哪些指标 KPIs 值得监控，甚至比仅仅是监控行为更为重要。

了解如何从机器人控制解决方案中获取正确的指标和日志与确定要监控的指标同样重要。下一节将详细介绍需要考虑的监控和可见性选项。[监控机器人控制策略的指南](monitoring.md)