

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# 複数の から Prowler セキュリティ検出結果の統合レポートを作成する AWS アカウント
<a name="create-a-consolidated-report-of-prowler-security-findings-from-multiple-aws-accounts"></a>

*Amazon Web Services、Mike Virgilio、Jay Durga、および Andrea Di Fabio*

## 概要
<a name="create-a-consolidated-report-of-prowler-security-findings-from-multiple-aws-accounts-summary"></a>

「[Prowler](https://github.com/prowler-cloud/prowler)」(GitHub) はオープンソースのコマンドラインツールで、Amazon Web Services (AWS) アカウントがセキュリティのベストプラクティスを順守しているかどうかを評価、監査、監視するのに役立ちます。このパターンでは、Prowler を組織 AWS アカウント 内の一元管理された にデプロイし AWS Organizations、Prowler を使用して組織内のすべてのアカウントのセキュリティ評価を実行します。

Prowler をデプロイして評価に使用する方法は多くありますが、このソリューションは迅速な導入、組織内のすべてのアカウントまたは定義済みのターゲットアカウントの完全な分析及びセキュリティ検出結果レポートに容易にアクセスできるように設計されています。このソリューションでは、Prowler が組織内のすべてのアカウントのセキュリティ評価を完了すると、結果を統合します。また、Prowler がプロビジョニングされたアカウントの Amazon Simple Storage Service (Amazon S3) バケットをスキャンすることを妨げている制限に関連するエラーなど、予想されるエラーメッセージはすべて除外されます AWS Control Tower。除外された統合結果は、このパターンに含まれている Microsoft Excel テンプレートで報告されます。このレポートを使用して、組織のセキュリティ管理の潜在的な改善点を特定できます。

このソリューションは、以下を念頭に置いて設計されました。
+  AWS CloudFormation テンプレートは、このパターンで AWS リソースをデプロイするために必要な労力を削減します。
+ デプロイ時に CloudFormation テンプレートと **prowler\$1scan.sh** スクリプトのパラメータを調整し、環境に合わせてテンプレートをカスタマイズできます。
+ Prowler の評価とレポートの速度は、並列処理 AWS アカウント、集計結果、推奨される修復による統合レポート、および自動的に生成された視覚化によって最適化されます。
+ ユーザーはスキャンの進行状況をモニタリングする必要がありません。評価が完了すると、ユーザーはレポートを受信できるように Amazon Simple Notification Service (Amazon SNS) トピックを通じて通知を受信します。
+ レポートテンプレートを使用すると、組織全体に関連する結果のみを読んで評価できます。

## 前提条件と制限事項
<a name="create-a-consolidated-report-of-prowler-security-findings-from-multiple-aws-accounts-prereqs"></a>

**前提条件**
+ 組織のメンバーアカウントとして管理されるセキュリティサービスとツールをホスト AWS アカウント するための AWS Organizations。このパターンでは、このアカウントは*セキュリティアカウント*と呼ばれています。
+ このセキュリティアカウントには、アウトバウンドインターネットアクセスを可能にするプライベート・サブネットが必要です。手順については、「Amazon Virtual Private Cloud (Amazon VPC) ドキュメント」の「[プライベートサブネットにサーバーを持つ VPC と NAT](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-example-private-subnets-nat.html)」を参照してください。パブリックサブネットにプロビジョニングされた「[NAT ゲートウェイ](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html)」を使用してインターネットアクセスを確立できます。
+ CloudFormation の管理者権限を委任された AWS Organizations 管理アカウントまたはアカウントへのアクセス。手順については、「CloudFormation のドキュメント」の「[委任管理者の登録](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-orgs-delegated-admin.html)」を参照してください。
+  AWS Organizations と CloudFormation 間の信頼されたアクセスを有効にします。手順については、「CloudFormation ドキュメント」の「[ 信頼できるアクセスを有効にする AWS Organizations](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-orgs-enable-trusted-access.html)」を参照してください。

**制限事項**
+ ターゲットは の組織として管理 AWS アカウント する必要があります AWS Organizations。を使用していない場合は AWS Organizations、環境の **IAM-ProwlerExecRole.yaml** CloudFormation テンプレートと **prowler\$1scan.sh** スクリプトを更新できます。代わりに、スクリプトを実行する AWS アカウント IDs とリージョンのリストを指定します。
+ CloudFormation テンプレートは、アウトバウンドインターネットアクセスのあるプライベートサブネットに Amazon Elastic Compute Cloud (Amazon EC2) インスタンスをデプロイするように設計されています。 AWS Systems Manager エージェント (SSM エージェント) は、 AWS Systems Manager サービスエンドポイントに到達するためにアウトバウンドアクセスを必要とし、コードリポジトリのクローンを作成して依存関係をインストールするにはアウトバウンドアクセスが必要です。パブリックサブネットを使用する場合は、**prowler-resources.yaml** テンプレートを変更して [Elastic IP アドレス](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html)を EC2 インスタンスに関連付ける必要があります。

**製品バージョン**
+ Prowler バージョン 4.0 以降

## アーキテクチャ
<a name="create-a-consolidated-report-of-prowler-security-findings-from-multiple-aws-accounts-architecture"></a>

![\[Prowler を一元化されたセキュリティアカウントにデプロイしたアーキテクチャ図。\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/81ba9037-9958-4e4a-95b7-d68896075a5b/images/4a3c281c-f108-4e35-9683-72783ceb3336.png)


図表に示す内容は以下のステップです。

1. の一機能である Session Manager を使用して AWS Systems Manager、ユーザーは EC2 インスタンスを認証し、**prowler\$1scan.sh** スクリプトを実行します。このシェルスクリプトはステップ 2 ～ 8 を実行します。

1. EC2 インスタンスは IAM ロールを担当します。`ProwlerEC2Role` IAM ロールは S3 バケットにアクセスし、組織内の他のアカウントの `ProwlerExecRole` IAM ロールを担当する権限を付与します。

1. EC2 インスタンスは、組織の管理アカウントで `ProwlerExecRole` IAM ロールを引き受けるため、組織内のアカウントのリストが生成されます。

1. EC2 インスタンスは、組織のメンバーアカウント (アーキテクチャ図では*ワークロードアカウント*と呼ばれる) の `ProwlerExecRole` IAM ロールを引き受け、各アカウントのセキュリティ評価を実行します。検出結果として、EC2 インスタンスに CSV と HTML ファイルとして保存されます。
**注記**  
 HTML ファイルは Prowler 評価から生成された出力です。HTML の性質上、このパターンでは連結、処理または直接使用されることはありません。ただし、これらは個別のアカウントレポートレビューには役立つ場合があります。

1. EC2 インスタンスはすべての CSV ファイルを処理して既知の予想されるエラーを削除し、残りの検出結果を一つの CSV ファイルに統合します。

1. EC2 インスタンスは、個々のアカウント結果および集計結果を zip ファイルに格納します。

1. EC2 インスタンスは zip ファイルを S3 バケットにアップロードします。

1. EventBridge ルールはファイルのアップロードを検出し、Amazon SNS トピックを使用して、評価が完了したことを通知する E メールをユーザーに送信します。

1. ユーザーは S3 バケットから zip ファイルをダウンロードします。ユーザーは結果を Excel テンプレートにインポートし、その結果を確認します。

## ツール
<a name="create-a-consolidated-report-of-prowler-security-findings-from-multiple-aws-accounts-tools"></a>

**AWS のサービス**
+ [Amazon Elastic Compute Cloud (Amazon EC2)](https://docs.aws.amazon.com/ec2/) は、 AWS クラウドでスケーラブルなコンピューティング容量を提供します。仮想サーバーを必要な数だけ起動して、迅速にスケールアップまたはスケールダウンができます。
+ [Amazon EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html) は、アプリケーションをさまざまなソースのリアルタイムデータに接続できるようにするサーバーレスイベントバスサービスです。例えば、 AWS Lambda 関数、API 送信先を使用する HTTP 呼び出しエンドポイント、その他のイベントバスなどです AWS アカウント。
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) は、誰を認証し、誰に使用する権限を付与するかを制御することで、 AWS リソースへのアクセスを安全に管理するのに役立ちます。
+ [AWS Organizations](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_introduction.html) は、作成して一元管理する AWS アカウント 組織に複数の を統合するのに役立つアカウント管理サービスです。
+ 「[Amazon Simple Notiﬁcation Service (Amazon SNS)](https://docs.aws.amazon.com/sns/latest/dg/welcome.html)」は、ウェブサーバーやメールアドレスなど、パブリッシャーとクライアント間のメッセージの交換を調整および管理するのに役立ちます。
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) は、あらゆる量のデータを保存、保護、取得できるクラウドベースのオブジェクトストレージサービスです。
+ 「[AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/what-is-systems-manager.html)」は、 AWS クラウドで実行されるアプリケーションとインフラストラクチャの管理に役立ちます。これにより、アプリケーションとリソースの管理が簡素化され、運用上の問題を検出して解決する時間を短縮し、 AWS リソースを大規模に安全に管理できます。このパターンは、Systems Manager の機能である Session Manager を使用します。

その他のツール
+ [Prowler](https://github.com/prowler-cloud/prowler/#requirements-and-installation) は、 AWS セキュリティのベストプラクティスやその他のセキュリティフレームワークや標準への準拠についてアカウントを評価、監査、モニタリングするのに役立つオープンソースのコマンドラインツールです。

コードリポジトリ

このパターンのコードは、GitHub 内の「[Prowler によるマルチアカウントのセキュリティ評価](https://github.com/aws-samples/multi-account-security-assessment-via-prowler)」リポジトリで利用できます。コードリポジトリには、以下のファイルが含まれます。
+ **prowler\$1scan.sh** – この bash スクリプトは AWS アカウント、複数の Prowler セキュリティ評価を並行して開始するために使用されます。**Prowler-resources.yaml** の CloudFormationTemplate で定義されているように、このスクリプトは EC2 インスタンスの `usr/local/prowler` フォルダに自動的に展開されます。
+ **Prowler-Resources.yaml** – この CloudFormation テンプレートを使用して、組織のセキュリティアカウントにスタックを作成します。このテンプレートは、ソリューションをサポートするためにこのアカウントに必要なリソースをすべてデプロイします。このスタックは **IAM-ProwlerExecRole.yaml** テンプレートの前に展開する必要があります。重要な本番環境のワークロードをホストするアカウントにこれらのリソースをデプロイすることはお勧めしません。
**注記**  
このスタックを削除して再展開した場合、IAM ロール間のクロスアカウント依存関係を再構築するために `ProwlerExecRole` スタックセットを再構築する必要があります。
+ **IAM-prowlerexecrole.yaml** – この CloudFormation テンプレートを使用して、管理アカウントを含む組織内のすべてのアカウントに `ProwlerExecRole` IAM ロールをデプロイするスタックセットを作成します。
+ **prowler-report-template.xlsm** – この Excel テンプレートを使用して Prowler の検出結果を処理します。レポート内のピボットテーブルには、検索機能、グラフと統合した検出結果が表示されます。

## エピック
<a name="create-a-consolidated-report-of-prowler-security-findings-from-multiple-aws-accounts-epics"></a>

### デプロイの準備
<a name="prepare-for-deployment"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| コードリポジトリを複製します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/create-a-consolidated-report-of-prowler-security-findings-from-multiple-aws-accounts.html) | AWS DevOps | 
| テンプレートを確認します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/create-a-consolidated-report-of-prowler-security-findings-from-multiple-aws-accounts.html) | AWS DevOps | 

### CloudFormation スタックの作成
<a name="create-the-cfnshort-stacks"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| セキュリティアカウントにリソースをプロビジョニングします。 | **prowler-resources.yaml** テンプレートを使用して、セキュリティアカウントに必要なすべてのリソースをデプロイする CloudFormation スタックを作成します。手順については、「CloudFormation ドキュメント」の「[スタックの作成](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-create-stack.html)」を参照してください。このテンプレートを展開する際には、次の点に注意してください。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/create-a-consolidated-report-of-prowler-security-findings-from-multiple-aws-accounts.html) | AWS DevOps | 
| メンバーアカウントで IAM ロールをプロビジョニングします。 |  AWS Organizations 管理アカウントまたは CloudFormation の委任管理者権限を持つアカウントで、**IAM-ProwlerExecRole.yaml** テンプレートを使用して CloudFormation スタックセットを作成します。スタックセットは、組織内のすべてのメンバーアカウントに `ProwlerExecRole` IAM ロールをデポロイします。手順については、CloudFormation ドキュメントの「[サービスマネージド型のアクセス許可を持つスタックセットの作成](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-getting-started-create.html#stacksets-orgs-associate-stackset-with-org)」を参照してください。このテンプレートを展開する際には、次の点に注意してください。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/create-a-consolidated-report-of-prowler-security-findings-from-multiple-aws-accounts.html) | AWS DevOps | 
| 管理アカウントに IAM ロールをプロビジョニングします。 | **IAM-ProwlerExecRole.yaml** テンプレートを使用して、組織の管理アカウントに `ProwlerExecRole` IAM ロールを展開する CloudFormation スタックを作成します。以前に作成したスタックセットでは、管理アカウントに IAM ロールはデプロイされません。手順については、「CloudFormation ドキュメント」の「[スタックの作成](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-create-stack.html)」を参照してください。このテンプレートを展開する際には、次の点に注意してください。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/create-a-consolidated-report-of-prowler-security-findings-from-multiple-aws-accounts.html) | AWS DevOps | 

### Prowlerのセキュリティ評価を実行します。
<a name="perform-the-prowler-security-assessment"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| スキャンを実行します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/create-a-consolidated-report-of-prowler-security-findings-from-multiple-aws-accounts.html) | AWS 管理者 | 
| Prowler の調査結果を取得します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/create-a-consolidated-report-of-prowler-security-findings-from-multiple-aws-accounts.html) | AWS 全般 | 
| EC2 インスタンスを停止します。 | インスタンスがアイドル状態のときに課金されないようにするには、Prowler を実行している EC2 インスタンスを停止します。手順については、「Amazon EC2 ドキュメント」の「[インスタンスの停止と起動](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Stop_Start.html#starting-stopping-instances)」を参照してください。 | AWS DevOps | 

### 検出結果のレポートを作成します。
<a name="create-a-report-of-the-findings"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 検出結果をインポートします。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/create-a-consolidated-report-of-prowler-security-findings-from-multiple-aws-accounts.html) | AWS 全般 | 
| レポートを完成します。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/create-a-consolidated-report-of-prowler-security-findings-from-multiple-aws-accounts.html) | AWS 全般 | 

### (オプション) Prowler またはコードリポジトリ内のリソースを更新します。
<a name="optional-update-prowler-or-the-resources-in-the-code-repository"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| Prowler をアップデートします。 | Prowler を最新バージョンに更新するには、次の操作を実行します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/create-a-consolidated-report-of-prowler-security-findings-from-multiple-aws-accounts.html) | AWS 全般 | 
| ［prowler\$1scan.sh］スクリプトを更新してください。 | **prowler\$1scan.sh** スクリプトをリポジトリ内で最新バージョンに更新するには、次の操作を実行します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/create-a-consolidated-report-of-prowler-security-findings-from-multiple-aws-accounts.html)検出結果のレポートなど、GitHub リポジトリにないローカルで生成されたファイルに関する警告が表示される場合があります。**prowler\$1scan.sh** が「ローカルで非表示になっている変更が再マージされる」と表示している限り、警告を無視しても差し支えありません。 | AWS 全般 | 

### (オプション) クリーンアップする
<a name="optional-clean-up"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| デプロイされたリソースをすべて削除します。 | リソースをアカウントにデプロイしたままにしておくことができます。未使用のときに EC2 インスタンスをシャットダウンし、S3 バケットを空のままにしておくと、将来のスキャンのためにリソースを維持するコストを削減できます。すべてのリソースのプロビジョニングを解除するには、次の操作を実行します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/create-a-consolidated-report-of-prowler-security-findings-from-multiple-aws-accounts.html) | AWS DevOps | 

## トラブルシューティング
<a name="create-a-consolidated-report-of-prowler-security-findings-from-multiple-aws-accounts-troubleshooting"></a>


| 問題 | ソリューション | 
| --- | --- | 
| Session Manager を使用した EC2 インスタンスに接続できません。 | SSM エージェントは、Systems Manager エンドポイントと通信できる必要があります。以下の操作を実行します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/create-a-consolidated-report-of-prowler-security-findings-from-multiple-aws-accounts.html) | 
| スタックセットをデプロイすると、CloudFormation コンソールに `Enable trusted access with AWS Organizations to use service-managed permissions` を求めるメッセージが表示されます。 | これは、 AWS Organizations と CloudFormation の間で信頼されたアクセスが有効になっていないことを示します。サービスマネージド型のスタックセットをデプロイするには、信頼されたアクセスが必要です。このボタンを選択すると、信頼されたアクセスは有効になります。詳細については、「CloudFormation ドキュメント」の「[信頼されたアクセスの有効化](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-orgs-enable-trusted-access.html)」を参照してください。 | 

## 関連リソース
<a name="create-a-consolidated-report-of-prowler-security-findings-from-multiple-aws-accounts-resources"></a>

**AWS ドキュメント**
+ [に対するセキュリティコントロールの実装 AWS](https://docs.aws.amazon.com/prescriptive-guidance/latest/aws-security-controls/introduction.html) (AWS 規範ガイダンス)

**その他のリソース**
+ [「Prowler」](https://github.com/prowler-cloud/prowler) (GitHub)

## 追加情報
<a name="create-a-consolidated-report-of-prowler-security-findings-from-multiple-aws-accounts-additional"></a>

プログラムによるエラーの削除

`Access Denied` 結果にエラーを含んでいる場合は、そのエラーを検出結果から削除する必要があります。これらのエラーは通常、Prowler が特定のリソースを評価できないようにする外部からの影響を受けた権限により生じます。たとえば、プロビジョニングされた S3 バケットを確認すると、一部のチェックが失敗します AWS Control Tower。これらの結果をプログラムで抽出し、除外した結果を新しいファイルとして保存できます。

次のコマンドは、1 つのテキスト文字列 (パターン) を含む行を削除し、その結果を新しいファイルに出力します。
+ Linux または MacOS (Grep) の場合

  ```
  grep -v -i "Access Denied getting bucket" myoutput.csv > myoutput_modified.csv
  ```
+ Windows (PowerShell) の場合

  ```
  Select-String -Path myoutput.csv -Pattern 'Access Denied getting bucket' -NotMatch > myoutput_modified.csv
  ```

次のコマンドは、複数のテキスト文字列と一致する行を削除し、その結果を新しいファイルに出力します。
+ Linux または MacOS の場合 (文字列間にエスケープパイプを使用する)

  ```
  grep -v -i 'Access Denied getting bucket\|Access Denied Trying to Get' myoutput.csv > myoutput_modified.csv
  ```
+ Windows の場合 (文字列間にはカンマを使用します)

  ```
  Select-String -Path myoutput.csv -Pattern 'Access Denied getting bucket', 'Access Denied Trying to Get' -NotMatch > myoutput_modified.csv
  ```

レポートの例

次の画像は、統合された Prowler 検出結果のレポートの **[検出結果]** ワークシート例を示しています。

![\[Prowler スキャン結果のレポートにおける検出結果タブの例\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/81ba9037-9958-4e4a-95b7-d68896075a5b/images/70311fc4-b919-4848-b200-40b35ce81826.png)


次の画像は、統合された Prowler 検出結果のレポートに含まれる **[合否]** ワークシート例を示しています。(デフォルトでは、合格結果は出力から除外されます)。

![\[Prowler スキャン結果のレポートにおける合格不合格タブの例\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/81ba9037-9958-4e4a-95b7-d68896075a5b/images/4823e2be-4d5e-4676-9fa3-d47b065dc6d8.png)


次の画像は、統合された Prowler 検出結果のレポートに含まれる **[重要度]** ワークシート例を示しています。

![\[Prowler スキャン結果のレポートにおける重要度タブの例\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/81ba9037-9958-4e4a-95b7-d68896075a5b/images/b7cbbff1-bca3-4667-9a1e-cc92e2e4adcd.png)
