Collecter les journaux AWS Inspector
Version de l'analyseur : 1.0
Ce document explique comment ingérer des journaux AWS Inspector dans Google Security Operations à l'aide d'Amazon S3.
Amazon Inspector est un service de gestion des failles qui détecte automatiquement les charges de travail et les analyse en continu pour identifier les failles logicielles et l'exposition involontaire du réseau. Il analyse les instances Amazon EC2, les images de conteneurs dans Amazon ECR et les fonctions AWS Lambda, et génère des résultats détaillés avec des scores de gravité et des recommandations de correction. Cette intégration utilise la fonctionnalité d'exportation des résultats intégrée à Amazon Inspector pour fournir des rapports de résultats au format JSON à un bucket S3, que Google SecOps ingère ensuite à l'aide d'un flux Amazon S3 V2.
Avant de commencer
Assurez-vous de remplir les conditions suivantes :
- Une instance Google SecOps
- Accès privilégié à la console de gestion AWS avec les autorisations nécessaires pour gérer les éléments suivants :
- Amazon Inspector (résultats, rapports)
- Amazon S3 (buckets, règles de bucket)
- AWS KMS (règles de clé)
- AWS IAM (rôles, règles, utilisateurs)
Configurer un bucket S3 pour l'exportation des résultats Amazon Inspector
Amazon Inspector chiffre les rapports sur les résultats à l'aide d'une clé AWS KMS avant de les stocker dans un bucket S3. Vous devez configurer la stratégie de bucket S3 et la stratégie de clé KMS pour autoriser l'accès à Amazon Inspector.
Créer et configurer le bucket S3
- Créez un bucket Amazon S3 en suivant ce guide de l'utilisateur : Créer un bucket.
Enregistrez le nom et la région du bucket pour référence ultérieure (par exemple,
inspector-findings-to-secops).Sélectionnez le bucket créé dans la console Amazon S3 à l'adresse https://console.aws.amazon.com/s3.
Sélectionnez l'onglet Autorisations.
Dans la section Règle du bucket, cliquez sur Modifier.
Ajoutez l'instruction suivante à la règle de bucket (remplacez
inspector-findings-to-secopspar le nom de votre bucket,111122223333par l'ID de votre compte AWS etus-east-1par votre région AWS) :{ "Version": "2012-10-17", "Statement": [ { "Sid": "allow-inspector", "Effect": "Allow", "Principal": { "Service": "inspector2.amazonaws.com" }, "Action": [ "s3:PutObject", "s3:PutObjectAcl", "s3:AbortMultipartUpload" ], "Resource": "arn:aws:s3:::inspector-findings-to-secops/*", "Condition": { "StringEquals": { "aws:SourceAccount": "111122223333" }, "ArnLike": { "aws:SourceArn": "arn:aws:inspector2:us-east-1:111122223333:report/*" } } } ] }Cliquez sur Enregistrer les modifications.
Configurer une clé AWS KMS
Amazon Inspector nécessite une clé de chiffrement symétrique AWS KMS gérée par le client dans la même région que le bucket S3 pour chiffrer les rapports de résultats.
- Ouvrez la console AWS KMS à l'adresse https://console.aws.amazon.com/kms.
- Dans le volet de navigation, sélectionnez Clés gérées par le client.
- Sélectionnez la clé KMS que vous souhaitez utiliser (ou créez une clé de chiffrement symétrique).
- Sélectionnez l'onglet Stratégie de clé, puis cliquez sur Modifier.
Ajoutez l'instruction suivante à la règle de clé (remplacez
111122223333par votre ID de compte AWS etus-east-1par votre région AWS) :{ "Sid": "Allow Amazon Inspector to use the key", "Effect": "Allow", "Principal": { "Service": "inspector2.amazonaws.com" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey*" ], "Resource": "*", "Condition": { "StringEquals": { "aws:SourceAccount": "111122223333" }, "ArnLike": { "aws:SourceArn": "arn:aws:inspector2:us-east-1:111122223333:report/*" } } }Cliquez sur Enregistrer les modifications.
Exporter les résultats Amazon Inspector vers S3
- Connectez-vous à la console Amazon Inspector à l'adresse https://console.aws.amazon.com/inspector/v2/home.
- Dans le volet de navigation, accédez à Résultats > Tous les résultats.
Facultatif : Utilisez la barre de filtre au-dessus du tableau Résultats pour spécifier les résultats à inclure dans le rapport.
Cliquez sur Exporter les résultats.
Dans la section Paramètres d'exportation, sélectionnez JSON pour le champ Type de fichier d'exportation.
Sous Emplacement d'exportation, pour URI S3, cliquez sur Parcourir S3 et sélectionnez le bucket S3
inspector-findings-to-secops.Pour Clé KMS, sélectionnez la clé AWS KMS que vous avez configurée.
Cliquez sur Exporter.
Automatiser l'exportation des résultats à l'aide de la CLI AWS
Pour exporter des rapports sur les résultats de manière récurrente, utilisez la commande create-findings-report de l'AWS CLI. Vous pouvez programmer cette commande à l'aide d'Amazon EventBridge Scheduler ou d'un job cron.
Exemple de commande :
aws inspector2 create-findings-report \ --report-format JSON \ --s3-destination bucketName=inspector-findings-to-secops,keyPrefix=findings/,kmsKeyArn=arn:aws:kms:us-east-1:111122223333:key/your-kms-key-id
Pour en savoir plus, consultez la documentation de référence de l'AWS CLI create-findings-report.
Configurer un utilisateur IAM pour Google SecOps
Google SecOps a besoin d'un utilisateur IAM disposant d'un accès en lecture au bucket S3 pour ingérer les résultats exportés.
- Créez un utilisateur en suivant ce guide de l'utilisateur : Créer un utilisateur IAM.
- Sélectionnez l'utilisateur créé.
- Sélectionnez l'onglet Security credentials (Identifiants de sécurité).
- Cliquez sur Créer une clé d'accès dans la section Clés d'accès.
- Sélectionnez Service tiers comme Cas d'utilisation.
- Cliquez sur Suivant.
- Facultatif : Ajoutez une balise de description.
- Cliquez sur Créer une clé d'accès.
- Cliquez sur Télécharger le fichier .csv pour enregistrer la clé d'accès et la clé d'accès secrète pour référence ultérieure.
- Cliquez sur OK.
- Sélectionnez l'onglet Autorisations.
- Cliquez sur Ajouter des autorisations dans la section Règles d'autorisation.
- Sélectionnez Ajouter des autorisations.
- Sélectionnez Associer directement les règles.
- Recherchez la règle AmazonS3FullAccess.
- Sélectionnez la règle.
- Cliquez sur Suivant.
- Cliquez sur Ajouter des autorisations.
Configurer un flux dans Google SecOps pour ingérer les journaux AWS Inspector
- Accédez à Paramètres SIEM> Flux.
- Cliquez sur Ajouter un flux d'actualités.
- Sur la page suivante, cliquez sur Configurer un seul flux.
- Saisissez un nom unique pour le nom du flux.
- Sélectionnez Amazon S3 V2 comme Type de source.
- Sélectionnez AWS Inspector comme Type de journal.
- Cliquez sur Suivant, puis sur Envoyer.
Spécifiez les valeurs des champs suivants :
- URI S3 :
s3://inspector-findings-to-secops/findings/ - Option de suppression de la source : sélectionnez l'option de suppression de votre choix.
- Âge maximal du fichier : incluez les fichiers modifiés au cours des derniers jours (180 jours par défaut).
- ID de clé d'accès : clé d'accès utilisateur ayant accès au bucket S3
- Clé d'accès secrète : clé secrète de l'utilisateur ayant accès au bucket S3
- Espace de noms de l'élément : espace de noms de l'élément
- Libellés d'ingestion : libellé à appliquer aux événements de ce flux
- URI S3 :
Cliquez sur Suivant, puis sur Envoyer.
Table de mappage UDM
| Champ du journal | Mappage UDM | Logique |
|---|---|---|
duration_ms_label |
additional.fields |
Fusionné |
evnt_app_class_label |
additional.fields |
Fusionné |
evnt_cloud_application_class_label |
additional.fields |
Fusionné |
evnt_cloud_sandbox_md5_label |
additional.fields |
Fusionné |
evnt_cloudapp_rule_label |
additional.fields |
Fusionné |
evnt_content_type_label |
additional.fields |
Fusionné |
evnt_customer_label |
additional.fields |
Fusionné |
evnt_department_label |
additional.fields |
Fusionné |
evnt_location_label |
additional.fields |
Fusionné |
evnt_lpclagg_label |
additional.fields |
Fusionné |
evnt_lpcltype_label |
additional.fields |
Fusionné |
evnt_network_service_label |
additional.fields |
Fusionné |
evnt_tenant_label |
additional.fields |
Fusionné |
evnt_url_category_label |
additional.fields |
Fusionné |
exception_label |
additional.fields |
Fusionné |
function_label |
additional.fields |
Fusionné |
id_label |
additional.fields |
Fusionné |
level_no_label |
additional.fields |
Fusionné |
line_label |
additional.fields |
Fusionné |
location_label |
additional.fields |
Fusionné |
logger_field |
additional.fields |
Fusionné |
msg_location_label |
additional.fields |
Fusionné |
msg_record_functionName_label |
additional.fields |
Fusionné |
msg_record_functionVersion_label |
additional.fields |
Fusionné |
msg_record_initializationType_label |
additional.fields |
Fusionné |
msg_record_instancId_label |
additional.fields |
Fusionné |
msg_record_instanceMaxMemory_label |
additional.fields |
Fusionné |
msg_record_phase_label |
additional.fields |
Fusionné |
msg_service_label |
additional.fields |
Fusionné |
msg_type_label |
additional.fields |
Fusionné |
msg_xray_trace_id_label |
additional.fields |
Fusionné |
protocol_label |
additional.fields |
Fusionné |
record_version_label |
additional.fields |
Fusionné |
repr_label |
additional.fields |
Fusionné |
service_label |
additional.fields |
Fusionné |
sourcetype_label |
additional.fields |
Fusionné |
thread_name_label |
additional.fields |
Fusionné |
type_label |
additional.fields |
Fusionné |
xray_trace_id_label |
additional.fields |
Fusionné |
evnt_device_hostname |
intermediary.hostname |
Mappé directement |
evnt_fwd_method_label |
intermediary.resource.attribute.labels |
Fusionné |
desc_msg |
metadata.description |
Mappage direct |
message |
metadata.description |
Mappé directement |
msg |
metadata.description |
Mappé directement |
msg_desc_msg |
metadata.description |
Mappé directement |
msg_record_desc_msg |
metadata.description |
Mappé directement |
msg_text |
metadata.description |
Mappage direct |
msg.time |
metadata.event_timestamp |
Analysé en tant que ISO8601 |
repr_time |
metadata.event_timestamp |
Analysé en tant que ISO8601 |
timestamp |
metadata.event_timestamp |
Analysé en tant que ISO8601 |
has_host |
metadata.event_type |
Mappé : true → STATUS_UPDATE |
has_user |
metadata.event_type |
Mapped: true → USER_COMMUNICATION, true → USER_UNCATEGORIZED |
msg_record_module |
metadata.product_event_type |
Mappé directement |
id_1 |
metadata.product_log_id |
Mappé directement |
evnt_bytes_in |
network.received_bytes |
Mappé directement |
evnt_bytes_out |
network.sent_bytes |
Mappé directement |
evnt_app_name |
principal.application |
Mappé directement |
msg_record_process_name |
principal.application |
Mappage direct |
evnt_device_app_version_label |
principal.asset.attribute.labels |
Fusionné |
evnt_ssl_policy_label |
principal.asset.attribute.labels |
Fusionné |
evnt_server_ip |
principal.asset.ip |
Fusionné |
evnt_src_ip |
principal.asset.ip |
Fusionné |
evnt_src_translated_ip |
principal.asset.ip |
Fusionné |
msg_record_file_path |
principal.file.full_path |
Mappé directement |
msg_record_file_name |
principal.file.names |
Fusionné |
evnt_hostname |
principal.hostname |
Mappage direct |
host |
principal.hostname |
Mappage direct |
evnt_server_ip |
principal.ip |
Fusionné |
evnt_src_ip |
principal.ip |
Fusionné |
evnt_src_translated_ip |
principal.ip |
Fusionné |
evnt_os |
principal.platform |
Mapped: Windows → WINDOWS, Linux → LINUX |
evnt_src_port |
principal.port |
Mappé directement |
port_number |
principal.port |
Mappé directement |
msg_record_process_id |
principal.process.pid |
Mappage direct |
cmd_status_label |
principal.resource.attribute.labels |
Fusionné |
evnt_format_label |
principal.resource.attribute.labels |
Fusionné |
evnt_os_label |
principal.resource.attribute.labels |
Fusionné |
msg_record_runtimeVersionArn_label |
principal.resource.attribute.labels |
Fusionné |
msg_record_runtimeVersion_label |
principal.resource.attribute.labels |
Fusionné |
record_requestId_labels |
principal.resource.attribute.labels |
Fusionné |
requestId_labels |
principal.resource.attribute.labels |
Fusionné |
msg_record_name |
principal.resource.name |
Mappage direct |
id |
principal.resource.product_object_id |
Mappé directement |
evnt_url |
principal.url |
Mappé directement |
evnt_device_owner |
principal.user.user_display_name |
Mappé directement |
evnt_user |
principal.user.userid |
Mappé directement |
msg_extra_desc_msg_body_account_id |
principal.user.userid |
Mappé directement |
evnt_action |
security_result.action |
Mappé : allow → security_result_action |
security_result_action |
security_result.action |
Fusionné |
security_result_category_details |
security_result.category_details |
Fusionné |
security_result_url_super_category |
security_result.category_details |
Fusionné |
elapsed_time_label |
security_result.detection_fields |
Fusionné |
evnt_session_count_label |
security_result.detection_fields |
Fusionné |
evnt_ssl_decrypted_label |
security_result.detection_fields |
Fusionné |
evnt_url_class_label |
security_result.detection_fields |
Fusionné |
level_icon_label |
security_result.detection_fields |
Fusionné |
level |
security_result.severity |
Mappé : INFO → INFORMATIONAL, WARNING → MEDIUM |
msg_level |
security_result.severity |
Mappé : INFO → INFORMATIONAL, WARNING → MEDIUM |
evnt_dest_ip |
target.ip |
Fusionné |
evnt_dest_country |
target.location.country_or_region |
Mappage direct |
evnt_dest_port |
target.port |
Mappé directement |
dst_url |
target.url |
Mappé directement |
| N/A | metadata.event_type |
Constante : USER_COMMUNICATION |
| N/A | metadata.product_name |
Constante : AWS Inspector |
| N/A | metadata.vendor_name |
Constante : AWS Inspector |
| N/A | network.ip_protocol |
Constante : UDP |
| N/A | principal.platform |
Constante : WINDOWS |
| N/A | security_result.detection_fields |
Constante : client_tunnel_ip_label |
| N/A | security_result.severity |
Constante : INFORMATIONAL |
Journal des modifications
Afficher le journal des modifications de cet analyseur
Vous avez encore besoin d'aide ? Obtenez des réponses de membres de la communauté et de professionnels Google SecOps.