

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

# S3 で差分コードスキャンを実行する
<a name="run-diff-scan-s3"></a>

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

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

## 差分スキャンの仕組み
<a name="_how_differential_scans_work"></a>

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

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

## 前提条件
<a name="_prerequisites"></a>

開始する前に、以下があることを確認してください。
+ コードレビューが有効になっているエージェントスペース (「」を参照[コードレビューを有効にする](enable-code-review-scan.md))
+ ターゲットリポジトリ用に作成済みのコードレビューリソース。完全なソースコードが エージェントスペースに接続された S3 バケットにアップロードされています。完全なリポジトリは、変更が既存のコードとどのように相互作用するかをより詳細に分析できるコンテキストを提供します。コードレビューを作成し、ソースコードをアップロードする手順[コードレビューを作成する](perform-code-review-scan.md)については、「」を参照してください。
+ エージェントスペースに接続された S3 バケット
+ S3 バケットにアップロードして を呼び出すための IAM アクセス許可 `securityagent:StartCodeReviewJob` 
+ コード変更から生成された統合差分ファイル ( の出力など`git diff main..feature-branch`)

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

## ステップ 1: 差分ファイルを生成する
<a name="_step_1_generate_a_diff_file"></a>

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

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

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

```
git diff --cached > changes.diff
```

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

## ステップ 2: 差分を S3 にアップロードする
<a name="_step_2_upload_the_diff_to_s3"></a>

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

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

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

## ステップ 3: 差分コードレビュージョブを開始する
<a name="_step_3_start_a_differential_code_review_job"></a>

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

### AWS CLI の使用
<a name="_using_the_aws_cli"></a>

```
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)
<a name="_using_the_aws_sdk_python"></a>

```
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)
<a name="_using_the_aws_sdk_javascripttypescript"></a>

```
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 はすぐに `codeReviewJobId`と `status` を返します`IN_PROGRESS`。

## ステップ 4: スキャンをモニタリングする
<a name="_step_4_monitor_the_scan"></a>

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

```
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: 検出結果を確認する
<a name="_step_5_review_findings"></a>

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

```
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"
```

各検出結果には以下が含まれます。
+ セキュリティ問題の説明
+ 重要度レベル (重大、高、中、低)
+ 差分内の特定の行を参照するコードの場所
+ 潜在的な影響を説明するリスク推論
+ 修正ガイダンス

結果の理解と対応の詳細については、「」を参照してください[コードレビューの結果を確認する](review-code-scan-findings.md)。

## クォータと制限
<a name="_quotas_and_limits"></a>
+ 差分内の変更されたファイルの最大数: 3,000 ファイルまたは 5 MB の合計差分サイズ
+ 検出結果はスキャンごとに 30 に制限され、重要度 (重大 > 高 > 中 > 低) によって優先順位が付けられます。

## 次の手順
<a name="_next_steps"></a>

差分スキャンを実行した後:
+ 検出結果を確認し、修復ガイダンスを適用する (「」を参照[コードレビューの結果を確認する](review-code-scan-findings.md))
+ すべてのプルリクエストで自動コードレビューのプルリクエストコメントを有効にする (「」を参照[GitHub リポジトリのプルリクエストコードレビューを有効にする](enable-code-review.md))
+ 完全なコードレビューを定期的に実行して、個々の変更以外の問題を検出する (「」を参照[コードレビューを作成する](perform-code-review-scan.md))
+ IDE 統合を使用して、開発環境から直接差分スキャンを実行する (「」を参照[IDE からコードセキュリティスキャンを実行する](code-review-ide-integration.md))