View a markdown version of this page

Exécuter un scan de code différentiel avec S3 - Agent de sécurité AWS

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Exécuter un scan de code différentiel avec S3

Exécutez une analyse de code différentielle (diff) pour analyser uniquement les lignes modifiées dans votre code source, plutôt que d'effectuer une analyse complète du référentiel. Les analyses différentielles sont plus rapides que les analyses complètes et produisent des résultats ciblés sur des modifications de code spécifiques, ce qui les rend idéales pour la validation avant la fusion dans les flux de travail de développement.

Contrairement à la révision du code basée sur les pull requests, qui est déclenchée automatiquement par les événements d'un fournisseur de contrôle de source tiers (voirPassez en revue les résultats de sécurité du code dans les pull requests), les analyses différentielles sont lancées par programmation via l'API ou le SDK de l'agent de sécurité AWS. Vous chargez un fichier de comparaison unifié dans S3 et vous le référencez lorsque vous démarrez une tâche de révision de code.

Comment fonctionnent les scans différentiels

Un scan différentiel analyse les modifications de code dans le contexte complet de votre référentiel. Lorsque vous créez une ressource de révision de code avec votre code source téléchargé sur S3, l'analyse différentielle utilise le référentiel complet comme contexte tout en concentrant les résultats spécifiquement sur les lignes modifiées dans votre diff. Cela permet à l'analyse d'identifier les problèmes de sécurité liés à la manière dont vos modifications interagissent avec le code existant, tels que des flux d'authentification interrompus, une gestion non sécurisée des données entre les modules ou des modifications révélant des vulnérabilités existantes.

Le processus de numérisation :. Vous chargez un fichier diff unifié (la sortie degit diff) dans un compartiment S3 connecté à votre espace agent. Vous appelez l'StartCodeReviewJobAPI avec un diffSource paramètre pointant vers l'emplacement S3 de votre différence. AWS Security Agent analyse uniquement le code modifié dans le diff pour détecter les vulnérabilités en matière de sécurité et la conformité aux exigences de sécurité de votre organisation. Les résultats sont limités aux lignes modifiées, avec des cotes de gravité, des emplacements de code et des conseils de correction.

Conditions préalables

Avant de commencer, assurez-vous de disposer des éléments suivants :

  • Un espace agent avec la révision du code activée (voirActiver la révision du code)

  • Une ressource de révision de code déjà créée pour le référentiel cible, avec le code source complet téléchargé dans le compartiment S3 connecté à votre espace agent. Le référentiel complet fournit un contexte qui permet une analyse plus approfondie de la manière dont vos modifications interagissent avec le code existant. Consultez Création d'une révision de code les instructions relatives à la création d'une révision de code et au téléchargement du code source.

  • Un compartiment S3 connecté à votre espace d'agent

  • Autorisations IAM pour le téléchargement vers le compartiment S3 et l'appel securityagent:StartCodeReviewJob

  • Un fichier de comparaison unifié généré à partir de vos modifications de code (par exemple, la sortie degit diff main..feature-branch)

Astuce

Pour obtenir les résultats les plus précis, assurez-vous que votre ressource de révision de code dispose de la dernière version de votre code source complet téléchargée sur S3. Le diff scan utilise ce référentiel complet comme contexte pour comprendre l'architecture de votre application, les flux de données et les contrôles de sécurité existants lors de l'analyse des lignes modifiées.

Étape 1 : générer un fichier diff

Générez un diff unifié qui représente les modifications de code que vous souhaitez scanner.

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

Vous pouvez également générer un diff pour les modifications progressives :

git diff --cached > changes.diff
Astuce

Le fichier diff doit être au format diff unifié standard. AWS Security Agent analyse les chemins des fichiers et modifie les lignes des en-têtes diff afin de préciser son analyse.

Étape 2 : télécharger le diff sur S3

Téléchargez le fichier diff dans un compartiment S3 connecté à votre espace agent.

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

Le compartiment S3 doit être déjà connecté à votre espace agent. Le rôle de service IAM associé à votre espace agent doit disposer d'un accès en lecture à cet emplacement. Consultez Activer la révision du code les instructions relatives à la connexion des compartiments S3.

Étape 3 : démarrer une tâche de révision du code différentiel

Appelez l'StartCodeReviewJobAPI avec le diffSource paramètre pour lancer un scan différentiel.

Utilisation de l'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"}'

Utilisation du kit SDK AWS (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']}")

Utilisation du kit SDK AWS () 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}`);

L'API revient immédiatement avec un codeReviewJobId et un status deIN_PROGRESS.

Étape 4 : Surveiller le scan

Vérifiez l'état de la tâche de révision du code jusqu'à ce qu'elle soit terminée.

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"

Le travail progresse selon les mêmes phases qu'une révision complète du code : Preflight → Analyse statique → Finalisation. Les analyses différentielles sont généralement plus rapides que les analyses complètes, car elles analysent moins de lignes de code.

Étape 5 : Examiner les résultats

Une fois la tâche terminée, dressez la liste des résultats de la tâche de révision du code.

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"

Chaque résultat inclut :

  • Description du problème de sécurité

  • Le niveau de gravité (critique, élevé, moyen ou faible)

  • Emplacements du code faisant référence à des lignes spécifiques dans le diff

  • Raisonnement fondé sur le risque expliquant l'impact potentiel

  • Conseils de remédiation

Pour plus d'informations sur la façon de comprendre les résultats et d'y donner suite, consultezExaminer les résultats d'une révision de code.

Quotas et limites

  • Nombre maximum de fichiers modifiés dans un différentiel : 3 000 fichiers ou taille totale du diff de 5 Mo

  • Les résultats sont plafonnés à 30 par scan, classés par ordre de gravité (Critique > Élevé > Moyen > Faible)

Étapes suivantes

Après avoir effectué un scan différentiel :