

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

# 规划您的部署
<a name="plan-your-deployment"></a>

本节介绍部署解决方案之前[的成本](cost.md)、[安全性](security.md)、[配额](quotas.md)和其他注意事项。

## 支持的 AWS 区域
<a name="supported-aws-regions"></a>

根据您定义的模板输入参数值，此解决方案需要不同的资源。这些资源（在下表中列出）可能并非在所有 AWS 区域都可用。因此，您必须在提供这些服务的 AWS 地区启动此解决方案。要了解按地区划分的 AWS 服务的最新可用性，请参阅 [AWS 区域服务列表](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/)。


|  | AWS WAF Web ACL | AWS Glue | Amazon Athena | Amazon Kinesis Data Firehose | 
| --- | --- | --- | --- | --- | 
|   **端点类型**   |  |  |  |  | 
|  CloudFront  |  ✓  |  |  |  | 
|  Application Load Balancer (ALB)  |  ✓  |  |  |  | 
|   **激活 HTTP 洪水防护**   |  |  |  |  | 
|  是的——AWS Lambda 日志解析器  |  |  |  |  ✓  | 
|  是的——亚马逊 Athena 日志解析器  |  |  ✓  |  ✓  |  ✓  | 
|   **激活扫描仪和探头保护**   |  |  |  |  | 
|  是的——亚马逊 Athena 日志解析器  |  |  ✓  |  ✓  |  | 

**注意**  
如果您选择`CloudFront`作为**终端节点**，则必须将解决方案部署在美国东部（弗吉尼亚北部）区域 (`us-east-1`)。

# 成本
<a name="cost"></a>

运行适用于 AWS WAF 的安全自动化解决方案时使用的 AWS 服务的费用由您承担。运行此解决方案的总成本取决于激活的保护以及摄取、存储和处理的数据量。

我们建议通过 [AWS Cost Explorer](https://aws.amazon.com/aws-cost-management/aws-cost-explorer/) 创建[预算](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/budgets-create.html)，以帮助管理成本。有关完整详情，请参阅您在本解决方案中使用的每项 AWS 服务的定价网页。

下表是在美国东部（弗吉尼亚北部）区域（不包括 AWS 免费套餐）运行此解决方案的费用明细示例。价格可能会发生变化。

 **示例 1：激活信誉列表保护、恶意机器人保护、用于 HTTP 洪水防护的 AWS Lambda 日志解析器以及扫描器和探测器保护** 


| AWS 服务 | 尺寸/月 | 成本 [美元] | 
| --- | --- | --- | 
|  Amazon Data Firehose  |  100 GB  |  大约 2.90 美元  | 
|  Amazon S3  |  100 GB  |  大约 2.30 美元  | 
|  AWS Lambda  |  128 MB：3 个函数，100 万次调用，每次 Lambda 运行的平均持续时间为 500 毫秒 512 MB：2 个函数，100 万次调用，每次 Lambda 运行的平均持续时间为 500 毫秒  |  大约 5.40 美元  | 
|  AWS WAF 网络 ACL  |  1  |  5.00 美元  | 
|  AWS WAF 规则  |  4  |  4.00 美元  | 
|  AWS WAF 请求  |  1M  |  0.60 美元  | 
|   **总计**   |  |   **每月大约 20.60 美元**   | 

 **示例 2：激活信誉列表保护、恶意机器人防护、用于 HTTP 洪水防护的 Amazon Athena 日志解析器以及扫描器和探测器保护** 


| AWS 服务 | 尺寸/月 | 成本 [美元] | 
| --- | --- | --- | 
|  Amazon Data Firehose  |  100 GB  |  大约 2.90 美元  | 
|  Amazon S3  |  100 GB  |  大约 2.30 美元  | 
|  AWS Lambda  |  128 MB：3 个函数，100 万次调用，每次 Lambda 运行的平均持续时间为 500 毫秒 512 MB：2 个函数，7560 次调用，每次 Lambda 运行的平均持续时间为 500 毫秒  |  大约 1.26 美元  | 
|  Amazon Athena  |  每天有 120 万个 CloudFront 对象命中或 120 万个 ALB 请求，每次命中或请求都会生成大约 500 字节的日志记录  |  大约 4.32 美元  | 
|  AWS WAF 网络 ACL  |  1  |  5.00 美元  | 
|  AWS WAF 规则  |  4  |  4.00 美元  | 
|  AWS WAF 请求  |  1M  |  0.60 美元  | 
|   **总计**   |  |   ****每月大约 20.38 美元****   | 

 **示例 3：为允许和拒绝的 IP 集激活 IP 保留** 


| AWS 服务 | 尺寸/月 | 成本 [美元] | 
| --- | --- | --- | 
|  Amazon DynamoDB  |  1 千次写入和 1 MB 的数据存储空间  |  大约 0.00 美元  | 
|  AWS Lambda  |  128 MB：1 个函数，2K 次调用，每次 Lambda 运行的平均持续时间为 500 毫秒 512 MB：1 个函数，2K 次调用，每次 Lambda 运行的平均持续时间为 500 毫秒  |  大约 0.01 美元  | 
|  Amazon CloudWatch  |  2K 赛事  |  大约 0.00 美元  | 
|  AWS WAF Web ACL  |  1  |  5.00 美元  | 
|  AWS WAF 规则  |  2  |  2.00 美元  | 
|  WAS WAF 请求  |  1M  |  0.60 美元  | 
|   **总计**   |  |   ****每月大约 7.61 美元****   | 

## CloudWatch 日志的成本估算
<a name="cost-estimate-of-cloudwatch-logs"></a>

此解决方案中使用的某些 AWS 服务（例如 Lambda）会生成 CloudWatch 日志。这些日志会产生[费用](https://aws.amazon.com/cloudwatch/pricing/)。我们建议删除或存档日志以降低成本。有关日志存档的详细信息，请参阅 [Amazon 日志用户指南中的将日志数据导出到](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/S3Export.html) *Amazon CloudWatch * S3。

如果您选择在安装时使用 Athena 日志解析器，则此解决方案会根据配置安排对您的 Amazon S3 存储桶中的 AWS WAF 或应用程序访问日志运行查询。根据每次查询扫描的数据量向您收费。该解决方案将分区应用于日志和查询，以最大限度地降低成本。默认情况下，该解决方案会将应用程序访问日志从其原始 Amazon S3 位置移动到分区文件夹结构。您也可以保留原始日志，但您需要为重复的日志存储付费。此解决方案使用[工作组对工作](https://docs.aws.amazon.com/athena/latest/ug/manage-queries-control-costs-with-workgroups.html)负载进行细分，您可以对两者进行配置以管理查询访问权限和成本。有关[成本估算计算的示例，](#cost-estimate-of-athena)请参阅 Athena 的成本估算。有关更多信息，请参阅[亚马逊 Athena 定价](https://aws.amazon.com/athena/pricing/)。

## Athena 的成本估算
<a name="cost-estimate-of-athena"></a>

如果您在运行 **HTTP 洪水防**护**、扫描器和探测器保护**或恶意机器人**保护规则时使用 Athena 日志解析器选项，**则需要支付使用 Athena 的费用。默认情况下，每个 Athena 查询每五分钟运行一次，并扫描过去四个小时的数据。该解决方案将分区应用于日志和 Athena 查询，以最大限度地降低成本。您可以通过更改 **WAF 封禁周期**模板参数的值来配置查询扫描的数据小时数。但是，增加扫描的数据量可能会增加 Athena 的成本。

**提示**  
以下是 CloudFront 日志成本计算示例：  
平均而言，每次 CloudFront 命中可能生成大约 500 字节的数据。  
如果每天有 120 万个 CloudFront 物体被命中，则假设以稳定的速度摄取数据，则每四小时将有 20 万次（120 万/6）次命中。在计算费用时，请考虑您的实际流量模式。  
 `[500 bytes of data] * [200K hits per four hours] = [an average 100 MB (0.0001TB) data scanned per query]`   
Athena 每扫描一TB的数据收取5.00美元的费用。  
 `[0.0001 TB] * [$5] = [$0.0005 per query scan]`   
Athena 查询每五分钟运行一次，即每小时 12 次运行。  
 `[12 runs] * [24 hours] = [288 runs per day]`   
 `[$0.0005 per query scan] * [288 runs per day] * [30 days] = [$4.32 per month]`   
实际成本因应用程序的流量模式而异。有关更多信息，请参阅[亚马逊 Athena 定价](https://aws.amazon.com/athena/pricing/)。

# 安全性
<a name="security"></a>

当您在 AWS 基础设施上构建系统时，AWS 和您如何共同分担安全责任。此[责任共担模式](https://aws.amazon.com/compliance/shared-responsibility-model/)能够减轻您的运营负担，因为 AWS 负责运行、管理和控制各种组件，包括主机操作系统、虚拟化层和服务运行所在设施的物理安全性。有关 AWS 安全性的更多信息，请访问 [AWS 云安全性](https://aws.amazon.com/security/)。

## IAM 角色
<a name="iam-roles"></a>

借助 IAM 角色，您可以向 AWS 云上的服务和用户分配精细的访问权限、策略和权限。此解决方案创建权限最低的 IAM 角色，这些角色为解决方案的资源授予所需的权限。

## 数据
<a name="data"></a>

存储在 Amazon S3 存储桶和 DynamoDB 表中的所有数据都处于静态加密状态。通过 Firehose 传输的数据也会经过加密。

## 保护能力
<a name="protection-capabilities"></a>

Web 应用程序容易受到各种攻击。这些攻击包括旨在利用漏洞或控制服务器的特制请求；旨在关闭网站的容量攻击；或者编程为抓取和窃取网页内容的不良机器人和抓取工具。

此解决方案 CloudFormation 用于配置 AWS WAF 规则，包括 AWS 托管规则组和自定义规则，以阻止以下常见攻击：
+  **AWS 托管规则**-此托管服务提供针对常见应用程序漏洞或其他有害流量的保护。该解决方案包括 [AWS 托管 IP 信誉规则组](https://docs.aws.amazon.com/waf/latest/developerguide/aws-managed-rule-groups-ip-rep.html)、[AWS 托管基准规则组](https://docs.aws.amazon.com/waf/latest/developerguide/aws-managed-rule-groups-baseline.html)和 [AWS 托管用例特定规则](https://docs.aws.amazon.com/waf/latest/developerguide/aws-managed-rule-groups-use-case.html)组。您可以选择为 Web ACL 选择一个或多个规则组，最高不超过 Web ACL 容量单位 (WCU) 的最大配额。
+  **SQL 注**入-攻击者在 Web 请求中插入恶意 SQL 代码，以从您的数据库中提取数据。我们设计此解决方案是为了阻止包含潜在恶意 SQL 代码的 Web 请求。
+  **XSS**-攻击者利用良性网站中的漏洞作为工具，将恶意客户端脚本注入合法用户的网络浏览器。我们设计它来检查传入请求中常见探索的元素，以识别和阻止 XSS 攻击。
+  **HTTP 洪水**-Web 服务器和其他后端资源面临遭受 DDo S 攻击的风险，例如 HTTP 洪水。当来自客户端的 Web 请求超过可配置配额时，此解决方案会自动调用基于速率的规则。或者，您可以通过使用 Lambda 函数或 Athena 查询处理 AWS WAF 日志来强制执行此配额。
+  **扫描仪和探测**器-恶意来源通过发送一系列生成 HTTP 4xx 错误代码的请求来扫描和探测面向互联网的 Web 应用程序是否存在漏洞。您可以使用此历史记录来帮助识别和阻止恶意来源 IP 地址。此解决方案创建 Lambda 函数或 Athena 查询，用于自动解析 CloudFront 或 ALB 访问日志，计算每分钟来自唯一源 IP 地址的不良请求数量，并更新 AWS WAF 以阻止对达到定义的错误配额的地址进行进一步扫描。
+  **已知的攻击者来源（IP 信誉列表）**-许多组织都维护着由已知攻击者（例如垃圾邮件发送者、恶意软件分发者和僵尸网络）运营的 IP 地址的信誉列表。此解决方案利用这些信誉列表中的信息来帮助您阻止来自恶意 IP 地址的请求。此外，该解决方案还会根据 Amazon 内部威胁情报阻止由 IP 信誉规则组识别的攻击者。
+  **机器人和抓取器**-可公开访问的 Web 应用程序的运营商需要相信访问其内容的客户可以准确识别自己的身份，并且他们按预期使用服务。但是，一些自动化客户端，例如内容抓取工具或恶意机器人，为了绕过限制，会歪曲自己的陈述。此解决方案可帮助您识别和阻止恶意机器人和抓取程序。

# 配额
<a name="quotas"></a>

服务配额（也称为限制）是您的 AWS 账户使用的服务资源或操作的最大数量。

## 此解决方案中的 AWS 服务的配额
<a name="quotas-for-aws-services-in-this-solution"></a>

请确保[此解决方案中实施的每项服务](architecture-details.md#aws-services-in-this-solution)都有足够的配额。有关更多信息，请参阅 [AWS 服务配额](https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html)。要在不切换页面的情况下查看文档中所有 AWS 服务的服务配额，请改为查看 PDF 中[服务终端节点和配额](https://docs.aws.amazon.com/general/latest/gr/aws-general.pdf#aws-service-information)页面中的信息。

## AWS WAF 配额
<a name="aws-waf-quotas"></a>

每个 IP 匹配条件，AWS WAF 最多可以屏蔽 10,000 个 IP 地址范围，采用无类域间路由 (CIDR) 表示法。此解决方案创建的每个列表都受此配额的约束。有关更多信息，请参阅 [AWS WAF 配额](https://docs.aws.amazon.com/waf/latest/developerguide/limits.html)。从 3.0 版本开始，此解决方案创建了两个 IP 集来附加到每个规则，一个用于 IPv4 ，一个用于 IPv6。

AWS WAF 允许在每个 AWS 区域的每个账户每秒向任何个人`Create`或`Update`操作发出 API 调用最多一个请求。`Put`如果您在解决方案之外进行这些 API 调用，则可能会遇到 API 限制问题。为防止出现此问题，我们建议避免在部署此解决方案的同一账户和区域中运行其他调用这些 API 的应用程序。

# 部署注意事项
<a name="deployment-considerations"></a>

以下各节提供了实施此解决方案的限制和注意事项。

## AWS WAF 规则
<a name="aws-waf-rules"></a>

此解决方案生成的 Web ACL 旨在为 Web 应用程序提供全面保护。该解决方案提供了一组 AWS 托管规则和自定义规则，您可以将其添加到 Web ACL 中。要包含规则，请在启动 CloudFormation 堆栈时选择`yes`相关参数。参见[步骤 1。启动堆栈](step-1.-launch-the-stack.md)以获取参数列表。

**注意**  
该 out-of-box解决方案不支持 [AWS Firewall Manager](https://aws.amazon.com/firewall-manager)。如果要使用 Firewall Manager 中的规则，我们建议您对其[源代码](https://github.com/aws-solutions/aws-waf-security-automations)进行自定义。

## Web ACL 流量记录
<a name="web-acl-traffic-logging"></a>

如果您在美国东部（弗吉尼亚北部）以外的 AWS 区域创建堆栈并将**终端节点**设置为`CloudFront`，则必须将 “**激活 HTTP 防洪保护**” 设置为`no`或`yes - AWS WAF rate based rule`。

其他两个选项（`yes - AWS Lambda log parser`和`yes - Amazon Athena log parser`）需要在所有 AWS 边缘站点上运行的 Web ACL 上激活 AWS WAF 日志，但美国东部（弗吉尼亚北部）以外地区不支持此操作。有关记录 Web ACL 流量的更多信息，请参阅 [AWS WAF 开发人员指南](https://docs.aws.amazon.com/waf/latest/developerguide/logging.html)。

## 对请求组件进行超大处理
<a name="oversize-handling-for-request-components"></a>

AWS WAF 不支持检查网络请求组件的正文、标头或 Cookie 中的超大内容。当您编写检查其中一种请求组件类型的规则语句时，您可以选择以下选项之一来告诉 AWS WAF 如何处理这些请求：
+  `yes`（继续）-根据规则检查标准正常检查请求组件。AWS WAF 会检查大小限制范围内的请求组件内容。这是解决方案中使用的默认选项。
+  `yes - MATCH` – 将 Web 请求视为与规则语句匹配。AWS WAF 将规则操作应用于请求，而不根据规则的检查标准对其进行评估。对于带有`Block`操作的规则，这会阻止带有超大组件的请求。
+  `yes - NO_MATCH`-将 Web 请求视为与规则声明不匹配，而不根据规则的检查标准对其进行评估。AWS WAF 继续使用网络 ACL 中的其余规则来检查 Web 请求，就像它对待任何不匹配的规则一样。

有关更多信息，请参阅[在 AWS WAF 中处理超大的 Web 请求组件](https://docs.aws.amazon.com/waf/latest/developerguide/waf-rule-statement-oversize-handling.html)。

## 多种解决方案部署
<a name="multiple-solution-deployments"></a>

您可以在同一个账户和区域中多次部署该解决方案。您必须为每个部署使用唯一的 CloudFormation 堆栈名称和 Amazon S3 存储桶名称。每次单独部署都会产生额外费用，并且受每个区域每个账户的 [AWS WAF](https://docs.aws.amazon.com/waf/latest/developerguide/limits.html) 配额限制。

## 部署的最低角色权限（可选）
<a name="minimum-role-permissions"></a>

客户可以手动创建具有部署所需最低权限的 IAM 角色：
+ WAF 权限

```
        {
            "Effect": "Allow",
            "Action": [
                "wafv2:CreateWebACL",
                "wafv2:UpdateWebACL",
                "wafv2:DeleteWebACL",
                "wafv2:GetWebACL",
                "wafv2:ListWebACLs",
                "wafv2:CreateIPSet",
                "wafv2:UpdateIPSet",
                "wafv2:DeleteIPSet",
                "wafv2:GetIPSet",
                "wafv2:AssociateWebACL",
                "wafv2:DisassociateWebACL",
                "wafv2:PutLoggingConfiguration",
                "wafv2:DeleteLoggingConfiguration",
                "wafv2:ListWebACLs",
                "wafv2:ListIPSets",
                "wafv2:ListTagsForResource"
            ],
            "Resource": [
                "arn:aws:wafv2:*:*:regional/webacl/*",
                "arn:aws:wafv2:*:*:regional/ipset/*",
                "arn:aws:wafv2:*:*:global/webacl/*",
                "arn:aws:wafv2:*:*:global/ipset/*"
            ]
        }
```
+ Lambda 权限

```
        {
            "Effect": "Allow",
            "Action": [
                "lambda:CreateFunction",
                "lambda:DeleteFunction",
                "lambda:GetFunction",
                "lambda:InvokeFunction",
                "lambda:UpdateFunctionCode",
                "lambda:UpdateFunctionConfiguration",
                "lambda:AddPermission",
                "lambda:RemovePermission"
            ],
            "Resource": "arn:aws:lambda:*:*:function:*"
        }
```
+ Firehose 权限

```
        {
            "Effect": "Allow",
            "Action": [
                "firehose:CreateDeliveryStream",
                "firehose:DeleteDeliveryStream",
                "firehose:DescribeDeliveryStream",
                "firehose:StartDeliveryStreamEncryption",
                "firehose:StopDeliveryStreamEncryption",
                "firehose:UpdateDestination"
            ],
            "Resource": "arn:aws:firehose:*:*:deliverystream/*"
        }
```
+ S3 权限

```
        {
            "Effect": "Allow",
            "Action": [
                "s3:CreateBucket",
                "s3:DeleteBucketPolicy",
                "s3:GetBucketAcl",
                "s3:GetBucketPolicy",
                "s3:GetObject",
                "s3:PutBucketAcl",
                "s3:PutBucketPolicy",
                "s3:PutBucketPublicAccessBlock",
                "s3:PutBucketVersioning",
                "s3:PutEncryptionConfiguration",
                "s3:PutObject",
                "s3:PutBucketTagging",
                "s3:PutLifecycleConfiguration",
                "s3:AbortMultipartUpload",
                "s3:GetBucketLocation",
                "s3:ListBucket",
                "s3:ListBucketMultipartUploads",
                "s3:ListMultipartUploadParts",
                "s3:PutBucketLogging",
                "s3:GetBucketLogging"
            ],
            "Resource": "arn:aws:s3:::*"
        }
```
+ Athena 权限

```
        {
            "Effect": "Allow",
            "Action": [
                "athena:CreateWorkGroup",
                "athena:DeleteWorkGroup",
                "athena:GetWorkGroup",
                "athena:UpdateWorkGroup",
                "athena:StartQueryExecution",
                "athena:GetQueryExecution",
                "athena:GetQueryResults",
                "athena:StopQueryExecution"
            ],
            "Resource": "arn:aws:athena:*:*:workgroup/WAF*"
        }
```
+ Glue 权限

```
        {
            "Effect": "Allow",
            "Action": [
                "glue:CreateDatabase",
                "glue:DeleteDatabase",
                "glue:GetDatabase",
                "glue:GetDatabases",
                "glue:UpdateDatabase",
                "glue:CreateTable",
                "glue:DeleteTable",
                "glue:GetTable",
                "glue:GetTables",
                "glue:UpdateTable"
            ],
            "Resource": [
                "arn:aws:glue:*:*:catalog",
                "arn:aws:glue:*:*:database/*",
                "arn:aws:glue:*:*:table/*/*",
                "arn:aws:glue:*:*:userDefinedFunction/*"
            ]
        }
```
+ CloudWatch 日志权限

```
        {
            "Effect": "Allow",
            "Action": [
                "logs:CreateLogGroup",
                "logs:CreateLogStream",
                "logs:PutLogEvents",
                "logs:DeleteLogGroup",
                "logs:DeleteLogStream",
                "logs:PutRetentionPolicy",
                "logs:DescribeLogGroups"
            ],
            "Resource": [
                "arn:aws:logs:*:*:log-group:/aws/lambda/*",
                "arn:aws:logs:*:*:log-group:*",
                "arn:aws:logs:*:*:log-group:/aws/kinesisfirehose/*"
            ]
        }
```
+ CloudWatch 权限

```
        {
            "Effect": "Allow",
            "Action": [
                "cloudwatch:DeleteDashboards",
                "cloudwatch:GetDashboard",
                "cloudwatch:ListDashboards",
                "cloudwatch:PutDashboard",
                "cloudwatch:PutMetricData"
            ],
            "Resource": "*"
        }
```
+ SNS 权限

```
        {
            "Effect": "Allow",
            "Action": [
                "sns:CreateTopic",
                "sns:DeleteTopic",
                "sns:Subscribe",
                "sns:Unsubscribe",
                "sns:SetTopicAttributes"
            ],
            "Resource": "arn:aws:sns:*:*:*"
        }
```
+ DynamoDB 权限

```
        {
            "Effect": "Allow",
            "Action": [
                "dynamodb:CreateTable",
                "dynamodb:DeleteTable",
                "dynamodb:DescribeTable",
                "dynamodb:PutItem",
                "dynamodb:GetItem",
                "dynamodb:UpdateItem",
                "dynamodb:DeleteItem"
            ],
            "Resource": "arn:aws:dynamodb:*:*:table/*"
        }
```
+ CloudFormation 权限

```
        {
            "Effect": "Allow",
            "Action": [
                "cloudformation:CreateStack",
                "cloudformation:DeleteStack",
                "cloudformation:DescribeStacks",
                "cloudformation:UpdateStack",
                "cloudformation:ListStacks"
            ],
            "Resource": "arn:aws:cloudformation:*:*:stack/*/*"
        }
```
+ Service Catalog 应用程序注册表权限

```
        {
            "Effect": "Allow",
            "Action": [
                "servicecatalog:CreateApplication",
                "servicecatalog:DeleteApplication",
                "servicecatalog:GetApplication",
                "servicecatalog:TagResource",
                "servicecatalog:CreateAttributeGroup",
                "servicecatalog:DeleteAttributeGroup",
                "servicecatalog:GetAttributeGroup",
                "servicecatalog:AssociateAttributeGroup",
                "servicecatalog:DisassociateAttributeGroup",
                "servicecatalog:AssociateResource",
                "servicecatalog:DisassociateResource"
            ],
            "Resource": "arn:aws:servicecatalog:*:*:*"
        }
```
+ X-Ray 权限

```
        {
            "Effect": "Allow",
            "Action": [
                "xray:PutTraceSegments",
                "xray:PutTelemetryRecords"
            ],
            "Resource": "*"
        }
```
+ IAM 权限

```
        {
            "Effect": "Allow",
            "Action": [
                "iam:AttachRolePolicy",
                "iam:CreatePolicy",
                "iam:CreateRole",
                "iam:DeleteRole",
                "iam:DeleteRolePolicy",
                "iam:DetachRolePolicy",
                "iam:GetRole",
                "iam:GetRolePolicy",
                "iam:ListRoles",
                "iam:PassRole",
                "iam:PutRolePolicy"
            ],
            "Resource": "arn:aws:iam::*:role/*"
        }
```
+ EventBridge 权限

```
        {
            "Effect": "Allow",
            "Action": [
                "events:PutTargets",
                "events:RemoveTargets",
                "events:DescribeRule",
                "events:EnableRule",
                "events:ListRules",
                "events:PutRule",
                "events:DeleteRule",
                "events:ListEventSources",
                "events:DescribeEventSource",
                "events:ActivateEventSource",
                "events:DeactivateEventSource"
            ],
            "Resource": "arn:aws:events:*:*:rule/*"
        }
```