

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Ejecute un escaneo de código diferencial con S3
<a name="run-diff-scan-s3"></a>

Ejecute un escaneo de código diferencial (diff) para analizar solo las líneas modificadas del código fuente, en lugar de realizar un escaneo completo del repositorio. Los escaneos diferenciales son más rápidos que los escaneos completos y producen resultados basados en cambios de código específicos, lo que los hace ideales para la validación previa a la fusión en los flujos de trabajo de desarrollo.

A diferencia de la revisión de código basada en solicitudes de extracción, que se activa automáticamente mediante eventos de proveedores de control de código fuente externos (consulte[Revisa los hallazgos de seguridad del código en las solicitudes de cambios](review-code-findings-github.md)), los escaneos diferenciales se inician mediante programación a través de la API o el SDK de AWS Security Agent. Debe cargar un archivo diff unificado en S3 y hacer referencia a él al iniciar un trabajo de revisión de código.

## Cómo funcionan los escaneos diferenciales
<a name="_how_differential_scans_work"></a>

Un escaneo diferencial analiza los cambios de código en todo el contexto de su repositorio. Al crear un recurso de revisión de código con el código fuente cargado en S3, el escaneo diferencial utiliza todo el repositorio como contexto y, al mismo tiempo, centra los resultados específicamente en las líneas modificadas de la diferencia. Esto permite que el escaneo identifique los problemas de seguridad que se derivan de la forma en que los cambios interactúan con el código existente, como la interrupción de los flujos de autenticación, el manejo inseguro de los datos entre los módulos o los cambios que exponen las vulnerabilidades existentes.

El proceso de escaneo:. Debe cargar un archivo diff unificado (la salida de`git diff`) a un bucket de S3 conectado a su Agent Space. Llamas a la `StartCodeReviewJob` API con un `diffSource` parámetro que apunta a la ubicación en S3 de tu diferencial. AWS Security Agent analiza solo el código modificado en la diferencia para detectar vulnerabilidades de seguridad y cumplir con los requisitos de seguridad de su organización. Los resultados se basan en las líneas modificadas e incluyen índices de gravedad, ubicaciones de los códigos y directrices de corrección.

## Requisitos previos
<a name="_prerequisites"></a>

Antes de comenzar, asegúrese de que dispone de lo siguiente:
+ Un espacio de agentes con la revisión de código habilitada (consulte) [Habilitar la revisión de código](enable-code-review-scan.md)
+ Un recurso de revisión de código ya creado para el repositorio de destino, con todo el código fuente cargado en el depósito de S3 conectado a su espacio de agente. El repositorio completo proporciona un contexto que permite un análisis más profundo de la forma en que los cambios interactúan con el código existente. Consulta las [Crear una revisión de código](perform-code-review-scan.md) instrucciones sobre cómo crear una revisión de código y cargar el código fuente.
+ Un bucket de S3 conectado a su Agent Space
+ Permisos de IAM para cargar archivos en el depósito de S3 y llamar `securityagent:StartCodeReviewJob` 
+ Un archivo de diferencias unificado generado a partir de los cambios en el código (por ejemplo, el resultado de`git diff main..feature-branch`)

**sugerencia**  
Para obtener resultados más precisos, asegúrese de que su recurso de revisión de código tenga la última versión del código fuente completo cargada en S3. El análisis de diferencias utiliza este repositorio completo como contexto para comprender la arquitectura de la aplicación, los flujos de datos y los controles de seguridad existentes al analizar las líneas modificadas.

## Paso 1: Genera un archivo diff
<a name="_step_1_generate_a_diff_file"></a>

Genere una diferencia unificada que represente los cambios de código que desea escanear.

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

Como alternativa, genere una diferencia para los cambios por etapas:

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

**sugerencia**  
El archivo diff debe estar en un formato diff unificado estándar. AWS Security Agent analiza las rutas de los archivos y cambia las líneas de los encabezados de las diferencias para abarcar su análisis.

## Paso 2: Cargue la diferencia en S3
<a name="_step_2_upload_the_diff_to_s3"></a>

Cargue el archivo diff en un depósito de S3 que esté conectado a su espacio de agente.

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

**importante**  
El depósito de S3 debe ser uno que ya esté conectado a su espacio de agente. El rol de servicio de IAM asociado a su espacio de agente debe tener acceso de lectura a esta ubicación. Consulte las [Habilitar la revisión de código](enable-code-review-scan.md) instrucciones sobre cómo conectar los buckets de S3.

## Paso 3: Iniciar un trabajo de revisión del código diferencial
<a name="_step_3_start_a_differential_code_review_job"></a>

Llame a la `StartCodeReviewJob` API con el `diffSource` parámetro para iniciar un escaneo diferencial.

### Mediante la 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"}'
```

### Uso del 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']}")
```

### Uso del 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}`);
```

La API se devuelve inmediatamente con un `codeReviewJobId` y `status` de`IN_PROGRESS`.

## Paso 4: Supervise el escaneo
<a name="_step_4_monitor_the_scan"></a>

Compruebe el estado del trabajo de revisión del código hasta que se complete.

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

El trabajo pasa por las mismas fases que una revisión completa del código: comprobación previa → Análisis estático → Finalización. Los escaneos diferenciales suelen completarse más rápido que los escaneos completos porque analizan menos líneas de código.

## Paso 5: revisión de resultados
<a name="_step_5_review_findings"></a>

Una vez finalizado el trabajo, enumere los resultados del trabajo de revisión de código.

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

Cada resultado incluye:
+ Una descripción del problema de seguridad
+ El nivel de gravedad (crítico, alto, medio o bajo)
+ Ubicaciones de código que hacen referencia a líneas específicas de la diferencia
+ Razonamiento de riesgo que explica el impacto potencial
+ Asesoramiento de corrección

Para obtener más información sobre cómo comprender los hallazgos y actuar en función de ellos, consulte[Revise los resultados de una revisión del código](review-code-scan-findings.md).

## Cuotas y límites
<a name="_quotas_and_limits"></a>
+ Número máximo de archivos modificados en una diferencia: 3000 archivos o 5 MB de tamaño total de la diferencia
+ Los resultados se limitan a 30 por escaneo y se priorizan por gravedad (Crítico > Alto > Medio > Bajo)

## Siguientes pasos
<a name="_next_steps"></a>

Tras realizar un escaneo diferencial:
+ Revise los resultados y aplique las directrices de corrección (consulte[Revise los resultados de una revisión del código](review-code-scan-findings.md))
+ Habilita los comentarios de las solicitudes de extracción para la revisión automática del código en cada solicitud de extracción (consulta[Habilitar la revisión del código de las solicitudes de extracción para los GitHub repositorios](enable-code-review.md))
+ Realice periódicamente una revisión completa del código para detectar problemas ajenos a los cambios individuales (consulte[Crear una revisión de código](perform-code-review-scan.md))
+ Utilice la integración del IDE para ejecutar escaneos diferenciales directamente desde su entorno de desarrollo (consulte[Ejecute escaneos de seguridad de código desde su IDE](code-review-ide-integration.md))