翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
複数の から Prowler セキュリティ検出結果の統合レポートを作成する AWS アカウント
Mike Virgilio、Jay Durga、Andrea Di Fabio、Amazon Web Services
概要
「Prowler
Prowler をデプロイして評価に使用する方法は多くありますが、このソリューションは迅速な導入、組織内のすべてのアカウントまたは定義済みのターゲットアカウントの完全な分析及びセキュリティ検出結果レポートに容易にアクセスできるように設計されています。このソリューションでは、Prowler が組織内のすべてのアカウントのセキュリティ評価を完了すると、結果を統合します。また、Prowler がプロビジョニングされたアカウントの Amazon Simple Storage Service (Amazon S3) バケットをスキャンすることを妨げている制限に関連するエラーなど、予想されるエラーメッセージはすべて除外されます AWS Control Tower。除外された統合結果は、このパターンに含まれている Microsoft Excel テンプレートで報告されます。このレポートを使用して、組織のセキュリティ管理の潜在的な改善点を特定できます。
このソリューションは、以下を念頭に置いて設計されました。
AWS CloudFormation テンプレートは、このパターンで AWS リソースをデプロイするために必要な労力を削減します。
デプロイ時に CloudFormation テンプレートと[prowler_scan.sh]スクリプトのパラメーターを見直して、環境に合わせてテンプレートをカスタマイズできます。
Prowler の評価とレポートの速度は、並列処理 AWS アカウント、集計結果、推奨される修復による統合レポート、および自動的に生成された視覚化によって最適化されます。
ユーザーはスキャンの進行状況をモニタリングする必要がありません。評価が完了すると、ユーザーはレポートを受信できるように Amazon Simple Notification Service (Amazon SNS) トピックを通じて通知を受信します。
レポートテンプレートを使用すると、組織全体に関連する結果のみを読んで評価できます。
前提条件と制限
前提条件
組織のメンバーアカウントとして管理されるセキュリティサービスとツールをホスト AWS アカウント するための AWS Organizations。このパターンでは、このアカウントはセキュリティアカウントと呼ばれます。
このセキュリティアカウントには、アウトバウンドインターネットアクセスを可能にするプライベート・サブネットが必要です。手順については、「Amazon Virtual Private Cloud (Amazon VPC) ドキュメント」の「プライベートサブネットにサーバーを持つ VPC と NAT」を参照してください。パブリックサブネットにプロビジョニングされた「NAT ゲートウェイ」を使用してインターネットアクセスを確立できます。
AWS Organizations 管理アカウント、または CloudFormation の管理者権限を委任されたアカウントへのアクセス。手順については、「CloudFormation のドキュメント」の「委任管理者の登録」を参照してください。
AWS Organizations と CloudFormation 間の信頼されたアクセスを有効にします。手順については、「CloudFormation ドキュメント」の「 信頼できるアクセスを有効にする AWS Organizations」を参照してください。
制約事項
ターゲットは、 で組織として管理 AWS アカウント する必要があります AWS Organizations。を使用していない場合は AWS Organizations、環境の IAM-ProwlerExecRole.yaml CloudFormation テンプレートと prowler_scan.sh スクリプトを更新できます。代わりに、スクリプトを実行する AWS アカウント IDs とリージョンのリストを指定します。
CloudFormation テンプレートは、アウトバウンドインターネットアクセスのあるプライベートサブネットに Amazon Elastic Compute Cloud (Amazon EC2) インスタンスをデプロイするように設計されています。 AWS Systems Manager エージェント (SSM エージェント) は、 AWS Systems Manager サービスエンドポイントに到達するためにアウトバウンドアクセスを必要とし、コードリポジトリのクローンを作成して依存関係をインストールするにはアウトバウンドアクセスが必要です。パブリックサブネットを使用する場合は、[prowler-resources.yaml]テンプレートを変更して「Elastic IP アドレス」を EC2 インスタンスに関連付ける必要があります。
製品バージョン
Prowler バージョン 4.0 以降
アーキテクチャ

図表に示す内容は以下のステップです。
の一機能である Session Manager を使用して AWS Systems Manager、ユーザーは EC2 インスタンスを認証し、prowler_scan.sh スクリプトを実行します。このシェルスクリプトはステップ 2 ~ 8 を実行します。
EC2 インスタンスは IAM ロールを担当します。
ProwlerEC2Role
IAM ロールは S3 バケットにアクセスし、組織内の他のアカウントのProwlerExecRole
IAM ロールを担当する権限を付与します。EC2 インスタンスは、組織の管理アカウントで
ProwlerExecRole
IAM ロールを引き受けるため、組織内のアカウントのリストが生成されます。EC2 インスタンスは、組織のメンバーアカウント (アーキテクチャ図ではワークロードアカウントという) の
ProwlerExecRole
IAM ロールを担当し、各アカウントのセキュリティ評価を実行します。検出結果として、EC2 インスタンスに CSV と HTML ファイルとして保存されます。注記
HTML ファイルは Prowler 評価の出力です。HTML の性質上、このパターンでは連結、処理または直接使用されることはありません。ただし、これらは個別のアカウントレポートレビューには役立つ場合があります。
EC2 インスタンスはすべての CSV ファイルを処理して既知の予想されるエラーを削除し、残りの検出結果を一つの CSV ファイルに統合します。
EC2 インスタンスは、個々のアカウントの結果と集計結果を zip ファイルにパッケージ化します。
EC2 インスタンスは zip ファイルを S3 バケットにアップロードします。
EventBridge ルールはファイルのアップロードを検出し、Amazon SNS トピックを使用して、評価が完了したことを通知する E メールをユーザーに送信します。
ユーザーは S3 バケットから zip ファイルをダウンロードします。ユーザーは結果を Excel テンプレートにインポートし、その結果を確認します。
ツール
AWS のサービス
Amazon Elastic Compute Cloud (Amazon EC2) は、 AWS クラウドでスケーラブルなコンピューティング容量を提供します。必要な数の仮想サーバーを起動することができ、迅速にスケールアップまたはスケールダウンができます。
Amazon EventBridge は、アプリケーションをさまざまなソースのリアルタイムデータに接続できるようにするサーバーレスイベントバスサービスです。例えば、 AWS Lambda 関数、API 送信先を使用する HTTP 呼び出しエンドポイント、その他のイベントバスなどです AWS アカウント。
AWS Identity and Access Management (IAM) は、誰を認証し、誰に使用を認可するかを制御することで、 AWS リソースへのアクセスを安全に管理するのに役立ちます。
AWS Organizations は、作成して一元管理する AWS アカウント 組織に複数の を統合するのに役立つアカウント管理サービスです。
「Amazon Simple Notification Service (Amazon SNS)」は、ウェブサーバーやメールアドレスなど、パブリッシャーとクライアント間のメッセージの交換を調整および管理するのに役立ちます。
Amazon Simple Storage Service (Amazon S3) は、任意の量のデータの保存、保護、取得に役立つクラウドベースのオブジェクトストレージサービスです。
「AWS Systems Manager」は、 AWS クラウドで実行されるアプリケーションとインフラストラクチャの管理に役立ちます。これにより、アプリケーションとリソースの管理が簡素化され、運用上の問題を検出して解決する時間が短縮され、 AWS リソースを大規模に安全に管理できます。このパターンは、Systems Manager の機能である Session Manager を使用します。
その他のツール
Prowler
は、 AWS セキュリティのベストプラクティスやその他のセキュリティフレームワークや標準に準拠しているかどうかをアカウントで評価、監査、モニタリングするのに役立つオープンソースのコマンドラインツールです。
コードリポジトリ
このパターンのコードは、GitHub 内の「Prowler によるマルチアカウントのセキュリティ評価
prowler_scan.sh – この bash スクリプトは AWS アカウント、複数の Prowler セキュリティ評価を並行して開始するために使用されます。Prowler-resources.yaml CloudFormationTemplate で定義されているように、このスクリプトは EC2 インスタンスの
usr/local/prowler
フォルダに自動的にデプロイされます。prowler-resources.yaml — この CloudFormation テンプレートを使用して、組織のセキュリティアカウントにスタックを作成します。このテンプレートは、ソリューションをサポートするためにこのアカウントに必要なリソースをすべてデプロイします。このスタックは IAM-ProwleExecrole.yaml テンプレートの前にデプロイする必要があります。重要な本番環境のワークロードをホストするアカウントにこれらのリソースをデプロイすることはお勧めしません。
注記
このスタックを削除して再デプロイする場合は、IAM ロール間のクロスアカウント依存関係を再構築するために、
ProwlerExecRole
スタックセットを再構築する必要があります。IAM-prowlerexecrole.yaml — この CloudFormation テンプレートを使用して、管理アカウントを含む組織内のすべてのアカウントに
ProwlerExecRole
IAM ロールをデプロイするスタックセットを作成します。prowler-report-template.xlsm – この Excel テンプレートを使用して Prowler の検出結果を処理します。レポート内のピボットテーブルには、検索機能、グラフと統合した検出結果が表示されます。
エピック
タスク | 説明 | 必要なスキル |
---|---|---|
コードリポジトリを複製します。 |
| AWS DevOps |
テンプレートを確認します。 |
| AWS DevOps |
タスク | 説明 | 必要なスキル |
---|---|---|
セキュリティアカウントにリソースをプロビジョニングします。 | prowler-resources.yaml テンプレートを使用して、セキュリティアカウントに必要なすべてのリソースをデプロイする CloudFormation スタックを作成します。手順については、「CloudFormation ドキュメント」の「スタックの作成」を参照してください。このテンプレートを展開する際には、次の点に注意してください。
| AWS DevOps |
メンバーアカウントで IAM ロールをプロビジョニングします。 | AWS Organizations 管理アカウントまたは CloudFormation の委任管理者権限を持つアカウントで、IAM-ProwlerExecRole.yaml テンプレートを使用して CloudFormation スタックセットを作成します。スタックセットは、組織内のすべてのメンバーアカウントに
| AWS DevOps |
管理アカウントに IAM ロールをプロビジョニングします。 | IAM-prowlerexecrole.yaml テンプレートを使用して、組織の管理アカウントに
| AWS DevOps |
タスク | 説明 | 必要なスキル |
---|---|---|
スキャンを実行します。 |
| AWS 管理者 |
Prowler の調査結果を取得します。 |
| AWS 全般 |
EC2 インスタンスを停止します。 | インスタンスがアイドル状態のときに課金されないようにするには、Prowler を実行している EC2 インスタンスを停止します。手順については、「Amazon EC2 ドキュメント」の「インスタンスの停止と起動」を参照してください。 | AWS DevOps |
タスク | 説明 | 必要なスキル |
---|---|---|
検出結果をインポートします。 |
| AWS 全般 |
レポートを完成します。 |
| AWS 全般 |
タスク | 説明 | 必要なスキル |
---|---|---|
Prowler をアップデートします。 | Prowler を最新バージョンに更新するには、次の操作を実行します。
| AWS 全般 |
[prowler_scan.sh]スクリプトを更新してください。 | prowler_scan.sh スクリプトをリポジトリ内で最新バージョンに更新するには、次の操作を実行します。
注記検出結果レポートなど、GitHub リポジトリにないローカルに生成されたファイルに関連する警告が表示される場合があります。prowler_scan.sh によってローカルで非表示になっている変更がマージされる場合に限ります。 | AWS 全般 |
タスク | 説明 | 必要なスキル |
---|---|---|
デプロイされたリソースをすべて削除します。 | リソースをアカウントにデプロイしたままにしておくことができます。未使用のときに EC2 インスタンスをシャットダウンし、S3 バケットを空のままにしておくと、将来のスキャンのためにリソースを維持するコストを削減できます。 すべてのリソースのプロビジョニングを解除するには、次の操作を実行します。
| AWS DevOps |
トラブルシューティング
問題 | ソリューション |
---|---|
Session Manager を使用した EC2 インスタンスに接続できません。 | SSM エージェントは、Systems Manager エンドポイントと通信できる必要があります。以下の操作を実行します。
|
スタックセットをデプロイすると、CloudFormation コンソールに | これは、 AWS Organizations と CloudFormation の間で信頼されたアクセスが有効になっていないことを示します。サービスマネージド型のスタックセットをデプロイするには、信頼されたアクセスが必要です。このボタンを選択すると、信頼されたアクセスは有効になります。詳細については、「CloudFormation のドキュメント」の「信頼されたアクセスの有効化」を参照してください。 |
関連リソース
AWS ドキュメント
に対するセキュリティコントロールの実装 AWS (AWS 規範ガイダンス)
その他のリソース
「Prowler」
(GitHub)
追加情報
プログラムによるエラーの削除
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 の検出結果レポートに含まれる合格不合格ワークシート例を示しています。(デフォルトでは、合格結果は出力から除外されます)。

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