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 de
git 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 :
-
Examiner les résultats et appliquer les directives de remédiation (voirExaminer les résultats d'une révision de code)
-
Activez les commentaires sur les pull requests pour une révision automatique du code à chaque pull request (voirActiver la révision du code de pull request pour les GitHub référentiels)
-
Révisez régulièrement l'intégralité du code pour détecter les problèmes autres que ceux liés à des modifications individuelles (voirCréation d'une révision de code)
-
Utilisez l'intégration IDE pour exécuter des analyses différentielles directement depuis votre environnement de développement (voirExécutez des analyses de sécurité du code à partir de votre IDE)