View a markdown version of this page

プルリクエストでコードセキュリティの検出結果を確認する - AWS セキュリティエージェント

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

プルリクエストでコードセキュリティの検出結果を確認する

リポジトリのプルリクエストのコードレビューを有効にすると、AWS セキュリティエージェントはプルリクエストを自動的に分析し、セキュリティ検出結果をソースコントロールプロバイダーに直接投稿します。これにより、開発者はプルリクエストを離れることなく、通常のワークフロー内のセキュリティ問題に対処できます。

注記

このページは、GitHub プルリクエスト、GitLab マージリクエスト、Bitbucket プルリクエストに適用されます。エクスペリエンスはすべてのプロバイダーで類似しています。

プルリクエストでのコードレビューの仕組み

コードレビューが有効になっているリポジトリでプルリクエスト (または GitLab のマージリクエスト) を送信すると、AWS セキュリティエージェントは自動的に分析を開始します。

  1. プルリクエスト分析トリガー - コードレビュー機能を有効にしたリポジトリでプルリクエストが「レビュー準備完了」とマークされると、コードレビューがトリガーされます。ドラフトプルリクエストは分析されません。

  2. 分析確認 - AWS セキュリティエージェントがプルリクエストの分析を開始すると、「AWS セキュリティエージェントがコードを分析しています...」という最初のコメントが投稿されます。これにより、分析が開始され、進行中であることがわかります。

  3. レビューの完了 - 分析が完了すると、AWS セキュリティエージェントは結果を含むレビューをプルリクエストに投稿します。すべてのセキュリティ検出結果は 1 回のレビューでまとめてバッチ処理され、プルリクエストを整理し、通知を最小限に抑えます。

コードレビュー結果について

AWS セキュリティエージェントは、分析中に検出した内容に応じてさまざまなタイプの結果を提供します。

セキュリティの問題が見つかった場合

AWS セキュリティエージェントは、コード変更でセキュリティの問題を特定した場合、以下を含むレビューを投稿します。

  • 概要 - 特定された問題のタイプとその潜在的な影響を説明する、すべてのセキュリティ検出結果の概要

  • 個々の検出結果 - 詳細なセキュリティ検出結果は、メインレビューでスレッドコメントとして表示され、各検出結果には以下が含まれます。

    • セキュリティ問題の説明

    • 問題が見つかったコード内の場所

    • 問題に対処する方法を説明する修復ガイダンス

    • コードレビュー設定に基づく関連コンテキスト (セキュリティ要件違反、一般的な脆弱性、またはその両方)

注記

分析されるセキュリティ問題のタイプは、コードレビュー設定によって異なります。セキュリティ要件の検証を設定した場合、検出結果は組織のカスタムセキュリティ要件を参照します。セキュリティ脆弱性の検出結果を設定した場合、検出結果は一般的なセキュリティの脆弱性を特定します。コードレビュー設定の詳細については、「」を参照してくださいGitHub リポジトリのプルリクエストコードレビューを有効にする

セキュリティ上の問題が見つからない場合

AWS Security Agent が分析を完了し、コードの変更でセキュリティの問題が見つからない場合は、「問題は特定されていません」というコメントを投稿します。これにより、レビューが正常に終了し、コードの変更によって、設定したコードレビュー設定に基づいてセキュリティ検出結果がトリガーされなかったことが確認されます。

セキュリティ検出結果への対応

AWS Security Agent によって投稿されたセキュリティ検出結果を確認したら、ソースコントロールプロバイダーで直接アクションを実行できます。

  • 検出結果に対処する - 検出結果に記載されている修復ガイダンスに基づいてコードを更新し、新しいコミットをプルリクエストにプッシュします。AWS セキュリティエージェントは、更新されたコードを分析します。

  • 会話の解決 - セキュリティ検出結果に対処したら、会話を解決済みとしてマークして進行状況を追跡します。

ヒント

各検出結果には、特定されたセキュリティ問題に合わせた特定の修復ガイダンスが含まれています。このガイダンスをよく読んで、セキュリティリスクとその効果的な対処方法を理解してください。

コードレビューの結果のフィルタリング

リポジトリにfiltering.mdファイルを追加することで、AWS セキュリティエージェントがコードを分析する方法をカスタマイズできます。このファイルを使用すると、コードベースに関するコンテキストを提供し、分析からファイルやフォルダを除外することで、誤検出を減らすことができます。

フィルタリングファイルの作成

リポジトリのルートにある .awssecurityagent ディレクトリfiltering.mdに という名前のファイルを作成します。

.awssecurityagent/filtering.md

AWS セキュリティエージェントは、プルリクエストを分析するときに、リポジトリのメインブランチ ( mainや などmainline) からこのファイルを読み取ります。

ファイル構造

このfiltering.mdファイルは、AWS セキュリティエージェントが認識する特定のセクションで標準の Markdown 形式を使用します。ファイルには、Code Review見出しの後に次のセクションの 1 つまたは両方を含める必要があります: IgnorePatternsおよび ContextHints (スペースなし)。

次の例は、filtering.mdファイルの完全な構造を示しています。

# filtering.md

## Code Review

### IgnorePatterns

**/*.md

/myapp/src/**/*.snap

/myapp/config/README

### ContextHints

- The backend is a trusted system and won't return non-standard protocols.
- URL is generated from server with presigned token, so no SSRF security vulnerabilities.
- AppSec has verified that we are allowed to use cache with an eviction policy.

パターンを無視する

このセクションでは、コードレビュー中に AWS セキュリティエージェントがスキップするファイルとフォルダIgnorePatternsを指定します。を使用してglob patterns、分析から除外するパスを定義します。

フォーマット要件:

  • 各パターンは独自の行にある必要があります。

  • 各パターンを空の行で区切ります。これにより、GitHub またはコードレビューツールで表示したときにファイルが正しくレンダリングされます。

  • パターンは標準の glob 形式に従います。たとえば、 はすべてのマークダウンファイル**/*.mdと一致し、 はルートの /myapp/src/フォルダ内のすべての.snapファイル/myapp/src/**/*.snapと一致します。

  • このセクションでは、最大 1000 個の無視パターンがサポートされています。

コンテキストヒント

このセクションではContextHints、AWS セキュリティエージェントがより正確な評価を行うのに役立つコードベースに関する追加のコンテキストを提供します。コンテキストヒントを使用して、アーキテクチャ上の決定、セキュリティ例外、または検出結果の解釈方法に影響を与える可能性のあるその他の情報について説明します。

フォーマット要件:

  • 各ヒントはダッシュ (-) で始まり、スペースが続く必要があります。

  • 各ヒントは、500 文字に制限された自由形式のテキストの 1 行として記述します。

  • 各ヒントは、コードベースに関する特定のコンテキストを 1 つ記述する必要があります。

  • このセクションでは、最大 20 のコンテキストヒントをサポートしています。

コンテキストヒントは、AWS セキュリティエージェントが最初の分析を完了すると適用され、特定のユースケースに適用されない検出結果をフィルタリングするのに役立ちます。

次の手順

コードセキュリティの検出結果を確認した後:

  • 修復ガイダンスに基づいてコードを更新する

  • 新しいコミットをプッシュして変更の再分析をトリガーする

  • 必要に応じてコードレビュー設定を調整する (「」を参照GitHub リポジトリのプルリクエストコードレビューを有効にする)

  • 組織のセキュリティ要件を確認して検証基準を理解する

  • デプロイされたアプリケーションの包括的なセキュリティ検証のための侵入テストを検討する