

# デプロイを計画する
<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 ウェブ ACL | AWS Glue | Amazon Athena | Amazon Kinesis Data Firehose | 
| --- | --- | --- | --- | --- | 
|   **エンドポイントタイプ**   |  |  |  |  | 
|  CloudFront  |  ✓  |  |  |  | 
|  Application Load Balancer (ALB)  |  ✓  |  |  |  | 
|   **Activate HTTP Flood Protection**   |  |  |  |  | 
|  yes – AWS Lambda ログパーサー  |  |  |  |  ✓  | 
|  yes - Amazon Athena log parser  |  |  ✓  |  ✓  |  ✓  | 
|   **Activate Scanner & Probe Protection**   |  |  |  |  | 
|  yes - Amazon Athena log parser  |  |  ✓  |  ✓  |  | 

**注記**  
**エンドポイント**として `CloudFront` を選択した場合は、ソリューションを米国東部 (バージニア北部) リージョン (`us-east-1`) にデプロイする必要があります。

# Cost
<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 Flood Protection および Scanner & Probe Protection の Reputation List Protection、Bad Bot Protection、AWS Lambda、Log Parser をアクティブにする場合** 


| AWS のサービス | ディメンション/月 | コスト [USD] | 
| --- | --- | --- | 
|  Amazon Data Firehose  |  100 GB  |  ～2.90 USD  | 
|  Amazon S3  |  100 GB  |  ～2.30 USD  | 
|  AWS Lambda  |  128 MB: 3 つの関数。100 万回の呼び出しと、平均で 500 ミリ秒の各 Lambda の実行時間 512 MB: 2 つの関数。100 万回の呼び出しと、平均で 500 ミリ秒の各 Lambda の実行時間  |  ～5.40 USD  | 
|  AWS WAF ウェブ ACL  |  1  |  5.00 USD  | 
|  AWS WAF ルール  |  4  |  4.00 USD  | 
|  AWS WAF リクエスト  |  100 万回  |  0.60 USD  | 
|   **合計**   |  |   **～20.60 USD/月**   | 

 **例 2: HTTP Flood Protection および Scanner & Probe Protection の Reputation List Protection、Bad Bot Protection、Amazon Athena Log Parser をアクティブにする場合** 


| AWS のサービス | ディメンション/月 | コスト [USD] | 
| --- | --- | --- | 
|  Amazon Data Firehose  |  100 GB  |  ～2.90 USD  | 
|  Amazon S3  |  100 GB  |  ～2.30 USD  | 
|  AWS Lambda  |  128 MB: 3 つの関数。100 万回の呼び出しと、平均で 500 ミリ秒の各 Lambda の実行時間 512 MB: 2 つの関数。7560 回の呼び出しと、平均で 500 ミリ秒の各 Lambda の実行時間  |  ～1.26 USD  | 
|  Amazon Athena  |  Amazon CloudFront オブジェクトに対する 120 万回のヒット、もしくは 1 日あたり 120 万回の ALB リクエストが、ヒットもしくはリクエストごとに、最大で 500 バイトのログレコードを生成  |  ～4.32 USD  | 
|  AWS WAF ウェブ ACL  |  1  |  5.00 USD  | 
|  AWS WAF ルール  |  4  |  4.00 USD  | 
|  AWS WAF リクエスト  |  100 万回  |  0.60 USD  | 
|   **合計**   |  |   **〜20.38 USD****/月**   | 

 **例 3: 許可された IP セットと拒否された IP セットの IP 保持をアクティブにする** 


| AWS のサービス | ディメンション/月 | コスト [USD] | 
| --- | --- | --- | 
|  Amazon DynamoDB  |  1,000 回の書き込みと 1 MB のデータストレージ  |  ～0.00 USD  | 
|  AWS Lambda  |  128 MB: 1 つの関数。2000 回の呼び出しと、平均で 500 ミリ秒の各 AWS Lambda の実行時間 512 MB: 1 つの関数。2000 回の呼び出しと、平均で 500 ミリ秒の各 AWS Lambda の実行時間  |  ～0.01 USD  | 
|  Amazon CloudWatch  |  2,000 件のイベント  |  ～0.00 USD  | 
|  AWS WAF ウェブ ACL  |  1  |  5.00 USD  | 
|  AWS WAF ルール  |  2  |  2.00 USD  | 
|  WAS WAF リクエスト  |  100 万回  |  0.60 USD  | 
|   **合計**   |  |   **〜7.61 USD****/月**   | 

## 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)」を参照してください。

インストール時に 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 クエリは 5 分ごとに実行され、過去 4 時間のデータをスキャンします。このソリューションは、コストを最小限に抑えるために、ログと Athena クエリにパーティション化を適用します。**WAF Block Period** テンプレートパラメータの値を変更することで、クエリがスキャンするデータの時間数を設定できます。ただし、スキャンされるデータ量を増やすと、Athena のコストが増加する可能性があります。

**ヒント**  
CloudFront ログのコスト計算の例を次に示します。  
平均して、CloudFront のヒットごとに約 500 バイトのデータが生成される可能性があります。  
1 日あたり 120 万件の CloudFront オブジェクトのヒット数がある場合、データが一定の速度で受信すると仮定すると、4 時間あたり 200 万件 (1.2 M/6) のヒットが発生します。コストを計算するときは、実際のトラフィックパターンを考慮してください。  
 `[500 bytes of data] * [200K hits per four hours] = [an average 100 MB (0.0001TB) data scanned per query]`   
Athena では、スキャンされたデータ 1 TB あたり 5.00 USD が課金されます。  
 `[0.0001 TB] * [$5] = [$0.0005 per query scan]`   
Athena クエリは 5 分ごとに実行され、1 時間あたり 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 クラウドセキュリティ](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>

ウェブアプリケーションは、さまざまな攻撃に対して脆弱です。これらの攻撃には、脆弱性を悪用したりサーバーを制御したりするように特別に設計・作成されたリクエスト、ウェブサイトを破壊するように設計された帯域幅消費型攻撃、ウェブコンテンツを破壊し盗むようにプログラムされた悪質なボットやスクレイパーなどが含まれます。

このソリューションでは、CloudFormation を使用して、AWS マネージドルールのルールグループやカスタムルールなどの AWS WAF ルールを設定し、次のような一般的な攻撃をブロックします。
+  **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)が含まれます。ウェブ ACL のキャパシティユニット (WCU) クォータの上限まで、ウェブ ACL に 1 つまたは複数のルールグループを選択するオプションがあります。
+  **SQL インジェクション** – 攻撃者は、データベースからデータを抽出するために、ウェブリクエストに悪意のある SQL コードを挿入します。このソリューションは、悪意のある可能性がある SQL コードを含むウェブリクエストをブロックするように設計されています。
+  **XSS** – 攻撃者は悪質なウェブサイトの脆弱性を利用して、悪意のあるクライアントサイトスクリプトを正当なユーザーのウェブブラウザに挿入します。このソリューションは、XSS 攻撃を識別してブロックするために、一般的に調査される受信リクエストの要素を検査するように設計されています。
+  **HTTP フラッド** – ウェブサーバーやその他のバックエンドリソースには、HTTP フラッドなどの DDoS 攻撃のリスクがあります。このソリューションでは、クライアントからのウェブリクエストが設定したクォータを超えると、レートベースのルールが自動的に起動されます。または、Lambda 関数または Athena クエリを使用して AWS WAF ログを処理することで、このクォータを適用することもできます。
+  **スキャナーとプローブ** – 悪意のある送信元は、HTTP 4xx エラーコードを生成する一連のリクエストを送信することで、インターネットに接続しているウェブアプリケーションの脆弱性をスキャンして調査します。この履歴を使用して、悪意のある送信元 IP アドレスを識別してブロックできます。このソリューションは、CloudFront または ALB のアクセスログを自動的に解析し、1 分あたりの一意の送信元 IP アドレスからの不正リクエストの数をカウントして、定義されたエラークォータに達したアドレスからのさらなるスキャンをブロックするように AWS WAF を更新する Lambda 関数または Athena クエリを作成します。
+  **既知の攻撃元 (IP 評価リスト)** – 多くの組織が、スパマー、マルウェアディストリビューター、ボットネットなど、既知の攻撃者が用いる IP アドレスの評価リストを保持しています。このソリューションは、これらの評価リストの情報を活用して、悪質な送信元 IP アドレスからのリクエストをブロックするのに役立ちます。さらに、このソリューションは、Amazon の内部脅威インテリジェンスに基づいて IP 評価ルールグループによって識別される攻撃者をブロックします。
+  **ボットとスクレイパー** – 一般的に公開されたウェブアプリケーションの管理者は、コンテンツにアクセスするクライアントが自分自身を正確に識別し、意図したとおりにサービスを使用することを信頼する必要があります。ただし、コンテンツスクレイパーや悪質なボットなどの一部の自動化されたクライアントは、制限を回避するために自分自身を偽装しています。このソリューションは、悪質なボットやスクレイパーを識別してブロックするのに役立ちます。

# クォータ
<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 にある「[Service endpoints and quotas](https://docs.aws.amazon.com/general/latest/gr/aws-general.pdf#aws-service-information)」ページの情報を確認してください。

## AWS WAF クォータ
<a name="aws-waf-quotas"></a>

AWS WAF は、IP の一致条件ごとに、Classless Inter-Domain Routing (CIDR) で最大 10,000 の IP アドレス範囲をブロックできます。このソリューションが作成する各リストには、このクォータが適用されます。詳細については、「[AWS WAF クォータ](https://docs.aws.amazon.com/waf/latest/developerguide/limits.html)」を参照してください。バージョン 3.0 以降、このソリューションは各ルールにアタッチする 2 つの IP セット (IPv4 用、IPv6 用) を作成します。

AWS WAF では、個々の `Create`、`Put`、または `Update` アクションへの API コールに対して、アカウントごとに、1 秒あたり、AWS リージョンごとに最大 1 つのリクエストが許可されます。これらの API コールをソリューションの外部で行うと、API スロットリングの問題が発生する可能性があります。この問題を回避するには、このソリューションがデプロイされているのと同じアカウントとリージョンでこれらの API コールを行う他のアプリケーションを実行しないことをお勧めします。

# デプロイに関する考慮事項
<a name="deployment-considerations"></a>

次のセクションでは、このソリューションを実装するための制約と考慮事項について説明します。

## AWS WAF ルール
<a name="aws-waf-rules"></a>

このソリューションが生成するウェブ ACL は、ウェブアプリケーションを包括的に保護するように設計されています。このソリューションは、ウェブ ACL に追加できる一連の AWS マネージドルールおよびカスタムルールを提供します。ルールを含めるには、CloudFormation スタックを起動するときに関連するパラメータで [`yes`] を選択します。パラメータのリストに関しては「[ステップ 1. スタックを起動する](step-1.-launch-the-stack.md)」を参照してください。

**注記**  
すぐに使用できるソリューションは [AWS Firewall Manager](https://aws.amazon.com/firewall-manager) をサポートしていません。Firewall Manager でルールを使用する場合は、[ソースコード](https://github.com/aws-solutions/aws-waf-security-automations)にカスタマイズを適用することをお勧めします。

## ウェブ ACL トラフィックロギング
<a name="web-acl-traffic-logging"></a>

米国東部 (バージニア北部) 以外の AWS リージョンでスタックを作成して、**エンドポイント** を [`CloudFront`] に設定する場合は、**Activate HTTP Flood Protection** を [`no`] または [`yes - AWS WAF rate based rule`] に設定する必要があります。

他の 2 つのオプション (`yes - AWS Lambda log parser` と `yes - Amazon Athena log parser`) では、すべての AWS エッジロケーションで実行されるウェブ ACL で AWS WAF ログをアクティブ化する必要があります。これは米国東部 (バージニア北部) 以外ではサポートされていません。ウェブ ACL トラフィックのロギングに関する詳細については、「[AWS WAF 開発者ガイド](https://docs.aws.amazon.com/waf/latest/developerguide/logging.html)」を参照してください。

## 過剰サイズのリクエストコンポーネントの処理
<a name="oversize-handling-for-request-components"></a>

AWS WAF は、ウェブリクエストコンポーネント本文、ヘッダー、または cookie のオーバーサイズのコンテンツの検査をサポートしていません。これらのリクエストコンポーネントタイプの 1 つを検査するルールステートメントを作成する場合、これらのオプションのいずれかを選択して、これらのリクエストの処理方法を AWS WAF に指示できます。
+  `yes` (continue) – ルール検査基準に従って、リクエストコンポーネントを通常どおり検査します。AWS WAF は、サイズ制限内のリクエストコンポーネントのコンテンツを検査します。このソリューションで使用するデフォルトのオプションです。
+  `yes - MATCH` - ウェブリクエストをルールステートメントと一致するものとして扱います。AWS WAF は、ルールの検査基準に照らして評価することなく、ルールアクションをリクエストに適用します。`Block` アクションのルールの場合、オーバーサイズコンポーネントでのリクエストをブロックします。
+  `yes - NO_MATCH` – ルールの検査基準に対して評価せずに、ウェブリクエストをルールステートメントに一致しないものとして扱います。AWS WAF は、一致しないルールの場合と同様に、ウェブ ACL の残りのルールを使用してウェブリクエストの検査を続行します。

詳細については、「[AWS WAF でのオーバーサイズウェブリクエストコンポーネントの処理](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 App Registry のアクセス許可

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