

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 規劃您的部署
<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 日誌剖析器  |  |  |  |  ✓  | 
|  是 - Amazon Athena 日誌剖析器  |  |  ✓  |  ✓  |  ✓  | 
|   **啟用掃描器和探查保護**   |  |  |  |  | 
|  是 - Amazon Athena 日誌剖析器  |  |  ✓  |  ✓  |  | 

**注意**  
如果您選擇 `CloudFront`做為**端點**，則必須在美國東部 （維吉尼亞北部） 區域 () 部署解決方案`us-east-1`。

# Cost
<a name="cost"></a>

您需負責支付執行 Security Automations for 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  |  \$1\$12.90  | 
|  Amazon S3  |  100 GB  |  \$12.30 美元  | 
|  AWS Lambda  |  128 MB：3 個函數、1M 調用，以及每個 Lambda 執行的平均 500 毫秒持續時間 512 MB：2 個函數、1M 調用，以及每個 Lambda 執行的平均 500 毫秒持續時間  |  \$15.40 美元  | 
|  AWS WAF Web ACL  |  1  |  5.00 美元  | 
|  AWS WAF 規則  |  4  |  4.00 美元  | 
|  AWS WAF 請求  |  1M  |  0.60 美元  | 
|   **總計**   |  |   **每月 \$120.60 美元**   | 

 **範例 2：啟用評價清單保護、無效的機器人保護、用於 HTTP 洪水保護的 Amazon Athena Log Parser，以及掃描器和探查保護** 


| AWS 服務 | 每月維度 | 成本 【美元】 | 
| --- | --- | --- | 
|  Amazon Data Firehose  |  100 GB  |  \$1\$12.90  | 
|  Amazon S3  |  100 GB  |  \$12.30 美元  | 
|  AWS Lambda  |  128 MB：3 個函數、1M 調用，以及每個 Lambda 執行的平均 500 毫秒持續時間 512 MB：2 個函數、7560 個叫用，以及每個 Lambda 執行的平均 500 毫秒持續時間  |  \$11.26 美元  | 
|  Amazon Athena  |  每天 120 萬個 CloudFront 物件命中或 120 萬個 ALB 請求，每個命中或請求產生約 500 個位元組的日誌記錄  |  \$14.32 美元  | 
|  AWS WAF Web ACL  |  1  |  5.00 美元  | 
|  AWS WAF 規則  |  4  |  4.00 美元  | 
|  AWS WAF 請求  |  1M  |  0.60 美元  | 
|   **總計**   |  |   每月 **\$120.38 美元** ****   | 

 **範例 3：為允許和拒絕的 IP 集啟用 IP 保留** 


| AWS 服務 | 每月維度 | 成本 【美元】 | 
| --- | --- | --- | 
|  Amazon DynamoDB  |  1K 寫入和 1 MB 資料儲存  |  \$10.00 USD  | 
|  AWS Lambda  |  128 MB：1 個函數、2K 調用，以及每個 Lambda 執行的平均 500 毫秒持續時間 512 MB：1 個函數、2K 調用，以及每個 Lambda 執行的平均 500 毫秒持續時間  |  \$1\$10.01  | 
|  Amazon CloudWatch  |  2K 事件  |  \$10.00 USD  | 
|  AWS WAF Web ACL  |  1  |  5.00 美元  | 
|  AWS WAF 規則  |  2  |  2.00 美元  | 
|  WAS WAF 請求  |  1M  |  0.60 美元  | 
|   **總計**   |  |   每月 **\$1\$17.61** ****   | 

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

此解決方案中使用的某些 AWS 服務，例如 Lambda，會產生 CloudWatch 日誌。這些日誌會產生[費用](https://aws.amazon.com/cloudwatch/pricing/)。建議您刪除或封存日誌，以降低成本。如需日誌封存詳細資訊，請參閱《[Amazon CloudWatch Logs 使用者指南》中的將日誌資料匯出至 Amazon S3](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/S3Export.html)。 *Amazon CloudWatch *

如果您選擇在安裝時使用 Athena 日誌剖析器，此解決方案會排程查詢，以針對 Amazon S3 儲存貯體 （如設定） 中的 AWS WAF 或應用程式存取日誌執行。您需要根據每個查詢掃描的資料量付費。解決方案會將分割套用至日誌和查詢，以將成本降至最低。根據預設，解決方案會將應用程式存取日誌從原始 Amazon S3 位置移至分割的資料夾結構。您也可以保留原始日誌，但您需要支付重複日誌儲存的費用。此解決方案使用[工作群組](https://docs.aws.amazon.com/athena/latest/ug/manage-queries-control-costs-with-workgroups.html)來分割工作負載，而且您可以同時設定 來管理查詢存取和成本。如需[成本估算計算範例，請參閱 Athena](#cost-estimate-of-athena) 的成本估算。如需詳細資訊，請參閱 [Amazon Athena 定價](https://aws.amazon.com/athena/pricing/)。

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

如果您在執行 **HTTP 洪水保護**、**掃描器和探查保護**或**不良的機器人保護**規則時使用 Athena 日誌剖析器選項，您將需要支付 Athena 用量的費用。根據預設，每個 Athena 查詢每五分鐘執行一次，並掃描過去四小時的資料。解決方案會將分割套用至日誌和 Athena 查詢，以將成本降至最低。您可以變更 **WAF Block Period** 範本參數的值，以設定查詢掃描的資料時數。不過，增加掃描的資料量可能會增加 Athena 成本。

**提示**  
以下是 CloudFront 記錄成本計算的範例：  
平均而言，每個 CloudFront 命中可能會產生大約 500 個位元組的資料。  
如果每天有 120 萬個 CloudFront 物件命中，則每四小時會有 200K (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 USD 的費用。  
 `[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]`   
實際成本取決於應用程式的流量模式。如需詳細資訊，請參閱 [Amazon Athena 定價](https://aws.amazon.com/athena/pricing/)。

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

當您在 AWS 基礎設施上建置系統時，安全責任將由您與 AWS 共同承擔。此[共同責任模型](https://aws.amazon.com/compliance/shared-responsibility-model/)可減少您的操作負擔，因為 AWS 會操作、管理和控制元件，包括主機作業系統、虛擬化層，以及服務操作所在設施的實體安全性。如需 AWS 安全性的詳細資訊，請造訪 [AWS Cloud Security](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 應用程式容易遭受各種攻擊。這些攻擊包括專門製作的請求，旨在利用漏洞或控制伺服器；旨在截斷網站的容積攻擊；或設計成抓取和竊取 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 Injection** - 攻擊者將惡意 SQL 程式碼插入 Web 請求，以從您的資料庫擷取資料。我們設計此解決方案來封鎖包含潛在惡意 SQL 程式碼的 Web 請求。
+  **XSS** - 攻擊者使用良性網站中的漏洞作為工具，將惡意用戶端網站指令碼注入合法使用者的 Web 瀏覽器。我們設計此項目來檢查傳入請求的常用元素，以識別和封鎖 XSS 攻擊。
+  **HTTP 洪水** - Web 伺服器和其他後端資源面臨 DDoS 攻擊的風險，例如 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 比對條件的無類別網域間路由 (CIDR) 表示法中，AWS WAF 最多可封鎖 10，000 個 IP 地址範圍。此解決方案建立的每個清單都受限於此配額。如需詳細資訊，請參閱 [AWS WAF 配額](https://docs.aws.amazon.com/waf/latest/developerguide/limits.html)。從 3.0 版開始，此解決方案會建立兩個要連接到每個規則的 IP 集，一個用於 IPv4，另一個用於 IPv6。

AWS WAF 允許每個帳戶、每個 AWS 區域每秒最多一個請求，以對任何個別 `Create`、 `Put`或 `Update`動作進行 API 呼叫。如果您在解決方案之外進行這些 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 不支援檢查 Web 請求元件內文、標頭或 Cookie 的過大內容。當您撰寫規則陳述式來檢查其中一個請求元件類型時，您可以選擇其中一個選項，告訴 AWS WAF 如何處理這些請求：
+  `yes` （繼續） - 根據規則檢查條件，正常檢查請求元件。AWS WAF 會檢查大小限制內的請求元件內容。這是解決方案中使用的預設選項。
+  `yes - MATCH` - 將 Web 請求視為與規則陳述式相符。AWS WAF 會將規則動作套用至請求，而不根據規則的檢查條件進行評估。對於具有 `Block`動作的規則，這會使用過大元件封鎖請求。
+  `yes - NO_MATCH` - 將 Web 請求視為不符合規則陳述式，而不根據規則的檢查條件進行評估。AWS WAF 會使用 Web 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 Logs 許可

```
        {
            "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/*"
        }
```