View a markdown version of this page

S3 で差分コードスキャンを実行する - AWS セキュリティエージェント

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

S3 で差分コードスキャンを実行する

差分 (差分) コードスキャンを実行して、完全なリポジトリスキャンを実行するのではなく、ソースコード内の変更された行のみを分析します。差分スキャンはフルスキャンよりも高速で、特定のコード変更を対象とした結果を生成するため、開発ワークフローでの事前マージ検証に最適です。

サードパーティーのソースコントロールプロバイダーイベントによって自動的にトリガーされるプルリクエストベースのコードレビュー (「」を参照プルリクエストでコードセキュリティの検出結果を確認する) とは異なり、差分スキャンは AWS セキュリティエージェント API または SDK を介してプログラムで開始されます。統合差分ファイルを S3 にアップロードし、コードレビュージョブを開始するときに参照します。

差分スキャンの仕組み

差分スキャンは、リポジトリの全コンテキストでコードの変更を分析します。ソースコードが S3 にアップロードされたコードレビューリソースを作成すると、差分スキャンは、差分内の変更された行に特に結果に焦点を当てながら、完全なリポジトリをコンテキストとして使用します。これにより、スキャンは、認証フローの破損、モジュール間の安全でないデータ処理、既存の脆弱性を公開する変更など、変更が既存のコードとどのように相互作用するかによって発生するセキュリティ問題を特定できます。

スキャンプロセス: 。エージェントスペースに接続されている S3 バケットに、統合差分ファイル ( の出力git diff) をアップロードします。差分 の S3 の場所を指すdiffSourceパラメータを使用して StartCodeReviewJob API を呼び出します。AWS セキュリティエージェントは、セキュリティの脆弱性と組織のセキュリティ要件への準拠について、差分で変更されたコードのみを分析します。検出結果は、重要度評価、コードの場所、修復ガイダンスなど、変更された行に限定されます。

前提条件

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

  • コードレビューが有効になっているエージェントスペース (「」を参照コードレビューを有効にする)

  • ターゲットリポジトリ用に作成済みのコードレビューリソース。完全なソースコードが エージェントスペースに接続された S3 バケットにアップロードされています。完全なリポジトリは、変更が既存のコードとどのように相互作用するかをより詳細に分析できるコンテキストを提供します。コードレビューを作成し、ソースコードをアップロードする手順コードレビューを作成するについては、「」を参照してください。

  • エージェントスペースに接続された S3 バケット

  • S3 バケットにアップロードして を呼び出すための IAM アクセス許可 securityagent:StartCodeReviewJob

  • コード変更から生成された統合差分ファイル ( の出力などgit diff main..feature-branch)

ヒント

最も正確な結果を得るには、コードレビューリソースに、完全なソースコードの最新バージョンが S3 にアップロードされていることを確認します。差分スキャンでは、この完全なリポジトリをコンテキストとして使用して、変更された行を分析するときにアプリケーションアーキテクチャ、データフロー、既存のセキュリティコントロールを理解します。

ステップ 1: 差分ファイルを生成する

スキャンするコード変更を表す統合差分を生成します。

git diff main..feature-branch > changes.diff

または、ステージングされた変更の差分を生成します。

git diff --cached > changes.diff
ヒント

差分ファイルは、標準の統一差分形式である必要があります。AWS セキュリティエージェントは、差分ヘッダーのファイルパスと変更された行を解析して、分析の範囲を絞り込みます。

ステップ 2: 差分を S3 にアップロードする

エージェントスペースに接続されている S3 バケットに差分ファイルをアップロードします。

aws s3 cp changes.diff s3://my-security-agent-bucket/diffs/changes.diff
重要

S3 バケットは、すでにエージェントスペースに接続されているバケットである必要があります。エージェントスペースに関連付けられた IAM サービスロールには、この場所への読み取りアクセス権が必要です。S3 バケットを接続する手順コードレビューを有効にするについては、「」を参照してください。

ステップ 3: 差分コードレビュージョブを開始する

diffSource パラメータを使用して StartCodeReviewJob API を呼び出し、差分スキャンを開始します。

AWS CLI の使用

aws securityagent start-code-review-job \
  --agent-space-id "your-agent-space-id" \
  --code-review-id "your-code-review-id" \
  --diff-source '{"s3Uri": "s3://my-security-agent-bucket/diffs/changes.diff"}'

AWS SDK の使用 (Python)

import boto3 client = boto3.client('securityagent') response = client.start_code_review_job( agentSpaceId='your-agent-space-id', codeReviewId='your-code-review-id', diffSource={ 's3Uri': 's3://my-security-agent-bucket/diffs/changes.diff' } ) print(f"Job started: {response['codeReviewJobId']}")

AWS SDK の使用 (JavaScript/TypeScript)

import { SecurityAgentClient, StartCodeReviewJobCommand } from '@aws-sdk/client-securityagent'; const client = new SecurityAgentClient({ region: 'us-east-1' }); const response = await client.send(new StartCodeReviewJobCommand({ agentSpaceId: 'your-agent-space-id', codeReviewId: 'your-code-review-id', diffSource: { s3Uri: 's3://my-security-agent-bucket/diffs/changes.diff', }, })); console.log(`Job started: ${response.codeReviewJobId}`);

API はすぐに codeReviewJobIdstatus を返しますIN_PROGRESS

ステップ 4: スキャンをモニタリングする

完了するまでコードレビュージョブのステータスをポーリングします。

aws securityagent get-code-review-job \
  --agent-space-id "your-agent-space-id" \
  --code-review-id "your-code-review-id" \
  --code-review-job-id "the-job-id"

ジョブは、フルコードレビューと同じフェーズで進行します。プリフライト → 静的分析 → 確定です。差分スキャンは、通常、コード行の分析が少ないため、フルスキャンよりも速く完了します。

ステップ 5: 検出結果を確認する

ジョブが完了したら、コードレビュージョブの結果を一覧表示します。

aws securityagent list-findings \
  --agent-space-id "your-agent-space-id" \
  --code-review-id "your-code-review-id" \
  --code-review-job-id "the-job-id"

各検出結果には以下が含まれます。

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

  • 重要度レベル (重大、高、中、低)

  • 差分内の特定の行を参照するコードの場所

  • 潜在的な影響を説明するリスク推論

  • 修正ガイダンス

結果の理解と対応の詳細については、「」を参照してくださいコードレビューの結果を確認する

クォータと制限

  • 差分内の変更されたファイルの最大数: 3,000 ファイルまたは 5 MB の合計差分サイズ

  • 検出結果はスキャンごとに 30 に制限され、重要度 (重大 > 高 > 中 > 低) によって優先順位が付けられます。

次の手順

差分スキャンを実行した後: