View a markdown version of this page

侵入テストを作成する - AWS セキュリティエージェント

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

侵入テストを作成する

テストスコープ、ターゲットドメイン、AWS リソースアクセスを設定して、ウェブアプリケーションの自動侵入テストを設定します。侵入テストは、検証済みドメインに対する実際の攻撃シナリオをシミュレートすることで、実行中のアプリケーションのセキュリティ脆弱性を特定するのに役立ちます。

AWS セキュリティエージェントは、設定されたスコープとアクセス許可に基づいてウェブアプリケーションに対して包括的なセキュリティテストを実行し、攻撃者が脆弱性を発見する前に、悪用可能な脆弱性に関する詳細な検出結果を提供します。

この手順では、テストの詳細を設定し、テストスコープを定義し、必要なアクセス許可を設定して、ペネトレーションテストを作成します。

前提条件

開始する前に、以下があることを確認してください。

  • AWS Security Agent ウェブアプリケーションへのアクセス

  • テスト用に少なくとも 1 つの検証済みドメイン

  • AWS セキュリティエージェントに適切なアクセス許可を持つ IAM ロール

  • アプリケーションのアーキテクチャと重要なパスの理解

侵入テストの作成を開始する

エージェントウェブアプリの侵入テストの作成ページに移動します。

  1. AWS セキュリティエージェントのウェブアプリケーションにログインします。

  2. 侵入テストセクションに移動します。

  3. 「侵入テストを作成する」を選択します。

ヒント

ペネトレーションテストに含めることができるのは、検証済みドメインのみです。管理者に AWS マネジメントコンソールでドメインを検証するように依頼します。「ペネトレーションテスト用のアプリケーションドメインを有効にする」を参照してください。

侵入テストに名前を付ける

このペネトレーションテストの目的と範囲を特定するのに役立つわかりやすい名前を入力します。

  1. 侵入テスト名フィールドに、侵入テストのわかりやすい名前を入力します。

    名前は、テスト対象のアプリケーション、環境、またはコンポーネントを明確に識別する必要があります。最大 100 文字。

ペネトレーションテストスコープを設定する

テストするドメインと URL パスを定義し、テスト境界を制御するためにオプションの除外を設定します。

ターゲットドメインを追加する

セキュリティの脆弱性についてアクティブにテストされる検証済みドメインを指定します。

  1. 「侵入テストスコープ」セクションで、ターゲット URLs

  2. Verified domains セクションを展開して、使用可能なドメインを表示します。

  3. ターゲット URL フィールドに、ターゲットドメイン URL を入力します。

    重要

    検証済みドメインのみをテストできます。URL は、AWS セキュリティエージェントで以前に検証したドメインにある必要があります。検証済みドメインのサブドメインには、個別の検証は必要ありません。

  4. 複数のターゲットドメインを追加するには:

    1. [ドメインを追加する] を選択します。

    2. 追加の各ドメイン URL を入力します。

  5. ターゲットドメインを削除するには、ドメイン URL の横にある削除を選択します。

ヒント

最良の結果を得るには、APIs のサブドメイン、認証サービス、コンテンツ配信など、アプリケーションのユーザーフローの一部であるすべてのドメインを含めます。検証済みの親ドメインのサブドメインには、個別の検証は必要ありません。

リスクタイプを除外する (オプション)

アプリケーションに当てはまらない場合は、テストから除外する特定のリスクカテゴリを選択します。

  1. Exclude risk types フィールドを見つけます。

  2. ドロップダウンを選択して、利用可能なリスクタイプを表示します。

  3. ペネトレーションテストから除外するリスクタイプを 1 つ以上選択します。

    注記

    リスクタイプを除外すると、テストの範囲が制限されます。アプリケーションに関連しないリスクタイプ、または個別にテストするリスクタイプのみを除外します。

out-of-scope URL パスを追加する (オプション)

ペネトレーションテスト中にテストすべきでない URL パスを指定します。AWS セキュリティエージェントは、指定されたパスとその下にネストされたすべてのパスを除外します。たとえば、 をout-of-scopehttps://example.com/adminとして追加すると、 https://example.com/admin/tools もout-of-scope。

  1. Out-of-scopeURLs

  2. Out-of-scope URLs入力フィールドに、除外する URL パス ( /admin/deleteや など/api/reset) を入力します。

    警告

    Out-of-scopeのパスは脆弱性についてテストされません。破壊的な操作や機密性の高い管理機能など、テスト中にアクセスすべきではないパスのみを除外してください。

  3. out-of-scopeのパスを複数追加するには:

    1. URL の追加 を選択します。

    2. 追加の各パスを入力します。

  4. パスを削除するには、パスの横にある削除を選択します。

アクセス可能なドメインを追加する (オプション)

テストには必要ですが、脆弱性テストのターゲットではないドメインを指定します。

  1. アクセス可能な URLsセクションを見つけます。

  2. アクセス可能な URLs の入力フィールドに、テスト中にアクセス可能なドメインを入力します。

    注記

    ターゲットドメイン外のサードパーティーサービス (Okta、Auth0、Stripe など) にアクセス可能なドメインを追加します。これは、AWS セキュリティエージェントがテスト中にログインとナビゲーションのためにこれらの URLs にアクセスできるようにするために必要です。AWS セキュリティエージェントはこれらのドメインをペネトレーションテストしません。これらのドメインはアクセス目的でのみ使用されます。アクセス可能なドメインは、ターゲットとは異なるドメインに属していても、所有権の検証を必要としません。ターゲットドメインのみが、検証済みの所有権を必要とします。

  3. 複数のアクセス可能なドメインを追加するには:

    1. URL の追加 を選択します。

    2. 追加の各ドメインを入力します。

  4. ドメインを削除するには、ドメインの横にある削除を選択します。

カスタム HTTP ヘッダーを追加する (オプション)

侵入テスト中に AWS セキュリティエージェントによって行われたリクエストに追加されるカスタム HTTP ヘッダーを指定します。

  1. カスタム HTTP ヘッダーセクションを見つけます

  2. カスタム HTTP ヘッダー入力フィールドに、アウトバウンドリクエストに関連付けられるヘッダー名と値を入力します。

    注記

    デフォルトでは、AWS セキュリティエージェントは、別のカスタム User-Agent ヘッダー値が指定されていない限り、セキュリティエージェントに設定された User-Agent のカスタムヘッダーを追加します。

  3. 複数のカスタムヘッダーを追加するには:

    1. [ヘッダーの追加] を選択します。

    2. 追加の各カスタムヘッダーを入力します。

  4. カスタムヘッダーを削除するには、ヘッダーの横にある削除を選択します。

IAM ロールを設定する

このペネトレーションテスト用に事前設定されたサービスロールを選択します。AWS セキュリティエージェントは、エージェントスペースをセットアップするときに管理者が IAM ロールを設定するエージェントスペースベースのアクセス許可モデルを使用します。すでに設定され、すぐに使用できるロールから選択します。

  1. アクセス許可セクションで、サービスロールドロップダウンを見つけます。

  2. 必要な AWS リソースへのアクセス権を AWS セキュリティエージェントに付与する IAM ロールを選択します。

    重要

    選択した IAM ロールには、VPC リソース、CloudWatch Logs、およびペネトレーションテストに必要なその他の AWS サービスにアクセスするためのアクセス許可が必要です。ロールに AWS セキュリティエージェントとの正しい信頼関係があることを確認します。

  3. CloudWatch ロググループのドロップダウンを見つけます。

  4. 侵入テストログが保存されるロググループを選択します (オプション)。

    注記

    選択した CloudWatch ロググループは、行われたリクエスト、受信したレスポンス、検出された脆弱性など、侵入テスト実行の詳細なログを保存します。

    ロググループを選択しない場合、新しい CloudWatch ロググループが /aws/securityagent プレフィックスで自動的に作成され、侵入テストログが保存されます。

自動コード修復

自動修復を有効にするチェックボックスをオンにします。

重要

ソースコードリポジトリのセキュリティ検出結果を修復するために、AWS セキュリティエージェントはリポジトリにプルリクエストを送信する場合があります。プルリクエストは、リポジトリへの読み取りアクセス権を持つすべてのユーザーに表示される場合があります。

VPC リソースを設定する (オプション)

ターゲットドメインがプライベートで VPC 内でホストされている場合は、AWS セキュリティエージェントがペネトレーションテストを実行する VPC 設定を構成します。このステップは、パブリックにアクセスできないアプリケーションにのみ必要です。

注記

ターゲットドメインがパブリックにアクセスできる場合は、このステップをスキップします。VPC 設定は、Amazon Virtual Private Cloud 内でホストされているプライベートアプリケーションのテストにのみ必要です。

ペネトレーションテスト環境の VPC、サブネット、セキュリティグループを選択します。

  1. VPC セクションで、VPC ID ドロップダウンを見つけます。

  2. ターゲットドメインがホストされている VPC を選択します。

    重要

    選択した VPC には、ステップ 3 で指定したターゲットドメインが含まれている必要があります。AWS セキュリティエージェントがアプリケーションにアクセスできるように、VPC に適切なルーティングとネットワーク設定があることを確認します。

  3. Subnets ドロップダウンを見つけます。

  4. ペネトレーションテストを実行するサブネットを 1 つ以上選択します。

    注記

    ターゲットアプリケーションへのネットワークアクセスを持つサブネットを選択します。ペネトレーションテストは、これらのサブネットにデプロイされたリソースから実行されます。

  5. セキュリティグループのドロップダウンを見つけます。

  6. ペネトレーションテストのネットワークアクセスを制御するセキュリティグループを選択します。

    重要

    選択したセキュリティグループは、ターゲットドメインとアクセス可能なドメインへのアウトバウンドトラフィックを許可する必要があります。セキュリティグループのルールで、包括的なテストに必要なネットワークアクセスが許可されていることを確認します。

認証情報を設定する (オプション)

ターゲットドメインに認証が必要な場合は、AWS セキュリティエージェントがペネトレーションテスト中にアプリケーションの保護領域にアクセスできるようにする認証情報を指定します。このステップは、ユーザー認証を必要とするアプリケーションにのみ必要です。

注記

ターゲットドメインが認証を必要としない場合、またはテストするすべての領域がパブリックにアクセスできる場合は、このステップをスキップします。AWS セキュリティエージェントがアプリケーションの認証済みセクションをテストする必要がある場合にのみ、認証情報を設定します。

認証情報の追加

AWS セキュリティエージェントがアプリケーションへのアクセスに使用する認証情報を指定します。

  1. 認証情報 #1 セクションで、認証情報の入力方法を選択します。

    • 認証情報の入力 - 認証情報を AWS セキュリティエージェントに直接入力します。

    • 詳細設定 - 機密情報については、AWS Secrets Manager や AWS Lambda 関数などの詳細オプションを使用します。詳細については、「ペネトレーションテスト用の認証情報を提供する」を参照してください。

      ヒント

      本番環境または機密認証情報の場合は、高度な設定オプションを使用して、AWS Secrets Manager または Systems Manager パラメータストアに保存されている認証情報を安全に参照することをお勧めします。

認証情報の詳細を入力する

認証されたアカウントのユーザー名とパスワードを入力します。

  1. ユーザー名フィールドに、認証用のユーザー名を入力します。

  2. パスワード フィールドに、認証用のパスワードを入力します。

    重要

    指定する認証情報に、テストする領域に適したアクセスレベルがあることを確認します。認証情報は、管理者権限ではなく、一般的なユーザーのアクセスレベルを表す必要があります。

アクセスドメインの選択

これらの認証情報を認証に使用するターゲットドメインを指定します。

  1. アクセスドメインドロップダウンで、これらの認証情報を使用するドメインを選択します。

    注記

    異なる認証情報を必要とする複数のターゲットドメインがある場合は、この認証情報設定を完了した後に別の認証情報を追加をクリックして、認証情報セットを追加できます。

エージェントログインプロンプトを設定する (オプション)

アプリケーションの認証プロセスを通じて AWS セキュリティエージェントをガイドする手順を提供します。

  1. 認証フローに特定の手順が必要な場合は、 エージェントログインプロンプトセクションを展開します。

  2. 提供された認証情報をアプリケーションのログインフローで使用する方法を説明する手順を入力します。

    注記

    エージェントログインプロンプトは、アプリケーションに認証情報を適用する方法をエージェントに指示します。これは、複雑な認証フロー、複数ステップのログインプロセス、または標準以外のログイン手順を使用するアプリケーションに役立ちます。「/login に移動し、「Email」フィールドにユーザー名を入力し、パスワードを入力して「Sign In」を選択する」などのstep-by-stepの手順を含めます。

複数の認証情報を追加する (オプション)

アプリケーションで複数の認証情報セットが必要な場合、または異なるドメインに個別の認証が必要な場合は、追加の認証情報セットを追加します。

  1. 最初の認証情報設定が完了したら、別の認証情報を追加を選択します。

  2. 追加の認証情報セットごとに認証情報設定手順を繰り返します。

  3. 認証情報セットを削除するには、認証情報ヘッダーの横にある削除を選択します。

ヒント

さまざまなユーザーロールをテストするとき、複数の認証済みドメインにアクセスするとき、またはアプリケーションでロールベースのアクセスコントロールを検証するときに、複数の認証情報を設定します。

追加のリソースをアタッチする (オプション)

AWS セキュリティエージェントがより徹底的かつ正確な侵入テストを実施するのに役立つ補足リソースを提供します。追加のリソースには、アーキテクチャ図、API ドキュメント、設定ファイル、GitHub リポジトリ、またはアプリケーションに関するコンテキストを提供する S3-hostedマテリアルが含まれます。

注記

追加のリソースはオプションですが、推奨されます。アプリケーションに関する包括的な情報を提供すると、徹底的なテストカバレッジを確保し、誤検出を減らし、より実用的な結果を得ることができます。

侵入テストにリソースを追加する

既存のリソースを選択するか、ペネトレーションテストのガイドに役立つ新しいファイルをアップロードします。

  1. 接続されたリソースセクションでは、次のことができます。

    • Select from available を選択して、AWS セキュリティエージェントに既に接続されているリソース (GitHub リポジトリや S3 バケットなど) から選択します。

    • アップロードを選択して、ローカルシステムから新しいファイルを直接追加します。

ヒント

便利なリソースには、API ドキュメント、アーキテクチャ図、OpenAPI/Swagger 仕様、設定ファイル、認証フロー図、およびアプリケーションの構造と動作を説明するその他の資料が含まれます。

使用可能なリソースから選択する

AWS セキュリティエージェントと既に統合されているリソースから選択します。

  1. 既存のリソースから選択を選択します

  2. 次のような接続されたソースから使用可能なリソースのリストを参照します。

    • GitHub リポジトリタブの GitHub リポジトリ

    • S3 バケット

    • 以前にアップロードされたファイル

    • ドキュメントリポジトリ

  3. ペネトレーションテストに含めるリソースを選択します。

  4. ペネトレーションテストに追加 を選択して、選択したリソースをアタッチします。

AWS セキュリティエージェントがアプリケーションコンテキストの理解を深め、プルリクエストを通じてready-to-implementできるコード修正を生成できるように (有効になっている場合)、関連する GitHub リポジトリを選択してペンテストに追加することをお勧めします。

注記

使用可能なソースから選択されたリソースは、元の場所と同期されたままになります。GitHub リポジトリまたは S3 ファイルを更新すると、ペネトレーションテストでは更新されたバージョンが使用されます。

注記

ペンテストに関連付けられたプライベート VPC があり、GitHub リポジトリが設定されている場合は、GitHub リソースをプルするためにプライベート VPC 経由で GitHub にアクセスできることを確認してください。ほとんどの場合、VPC NAT Gateway 経由のアウトバウンドトラフィックがデフォルトで許可されていることを確認するか、GitHub IPs のアウトバウンドトラフィックを許可するように特定のルールを設定する必要があります (GitHub Meta API Endpoint を参照)。

新しいリソースをアップロードする

ローカルシステムから直接ファイルをアップロードするか、AWS セキュリティエージェントにプレーンテキストコンテンツを提供します。

  1. アップロード を選択します。

  2. 次のいずれかの入力方法を選択します。

    • ローカルファイルをアップロードする - ローカルシステムから 1 つ以上のファイルを選択します。

    • プレーンテキストの貼り付け - テキストコンテンツを入力フィールドに直接入力または貼り付けます。アップロード を選択します。

  3. 次に、追加を選択してアップロードを完了します。

  4. アップロードされたリソースは、Connected resources テーブルに表示されます。

ヒント

個別のファイルを作成せずに API エンドポイントリスト、URL パターン、テスト手順、またはその他のテキストベースの情報をすばやく提供する場合は、プレーンテキストオプションを使用します。

重要

アップロードされたファイルと貼り付けられたコンテンツに、本番認証情報、プライベートキー、個人を特定できる情報 (PII) などの機密情報が含まれていないことを確認します。設定ファイルとドキュメントのサニタイズされたバージョンを使用します。

既存のリソースを接続する

既存のリソースは、以前に AWS セキュリティエージェントにアップロードしたもの、S3 バケット、および統合された GitHub リポジトリから取得できます。既存のリソースから選択を選択して選択します。

接続されたリソースを管理する

ペネトレーションテストにアタッチされたリソースを確認、整理、削除します。

接続されたリソーステーブルには、ペネトレーションテストに含まれるすべてのリソースが以下の情報とともに表示されます。

  • 名前 - ファイル名またはリソース識別子

  • タイプ - リソースカテゴリ (アップロードされたファイル、S3 リソース、GitHub リポジトリなど)

リソースを管理するには:

  1. チェックボックスを使用して 1 つ以上のリソースを選択します。

  2. 選択したリソースをデタッチするには、ペネトレーションテストから削除を選択します。

注記

列ヘッダーをクリックして、テーブルを名前またはタイプでソートできます。これにより、多くのファイルを操作するときにリソースを整理できます。

侵入テストを作成する

ペネトレーションテスト設定を確定して起動します。

すべての設定を設定したら、ペネトレーションテストを作成する準備が整います。

  1. すべての設定セクションを確認して、正確性を確認します。

  2. 以下のオプションのいずれかを選択してください。

    • ネトレーションの作成を選択して、設定をすぐに実行せずに保存します。

    • Create and execute を選択して設定を保存し、すぐにペネトレーションテストを開始します。

    • キャンセルを選択して、ペネトレーションテスト設定を破棄します。

重要

侵入テストを実行する前に、以下を確認してください。

  • すべてのターゲットドメインが正しく検証され、アクセス可能である

  • IAM ロールに適切なアクセス許可がある

  • Out-of-scopeパスは、破壊的なオペレーションのテストを防ぐために適切に設定されています

  • すべてのターゲットドメインでセキュリティテストを実行する権限がある

注記

ペネトレーションテストが開始されたら、「ペネトレーションテストの実行」セクションから進捗状況をモニタリングできます。テストが完了するまでに数時間かかる場合があります。ほとんどは、アプリケーションの範囲と複雑さに応じて、16 時間以内に完了します。