Collecter les journaux AWS Redshift
Ce document explique comment ingérer des journaux AWS Redshift dans Google Security Operations à l'aide d'Amazon S3.
Amazon Redshift est un service d'entrepôt de données cloud entièrement géré, à l'échelle du pétaoctet, proposé par Amazon Web Services. Il permet d'effectuer des requêtes et des analyses rapides sur de grands ensembles de données à l'aide d'outils basés sur SQL et d'applications d'informatique décisionnelle. Les journaux Amazon Redshift enregistrent l'activité de la base de données, y compris les tentatives d'authentification, les connexions, les déconnexions, les modifications de définition des utilisateurs et les requêtes exécutées sur la base de données. Cette intégration utilise la fonctionnalité de journalisation d'audit native d'Amazon Redshift pour fournir des fichiers journaux à 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
- Un accès privilégié à la console AWS Management Console avec les autorisations permettant de gérer les éléments suivants :
- Amazon Redshift (clusters, groupes de paramètres)
- Amazon S3 (buckets, règles de bucket)
- AWS IAM (utilisateurs, règles)
Configurer un bucket S3 pour la journalisation d'audit Amazon Redshift
Amazon Redshift importe les fichiers journaux d'audit dans un bucket S3. Vous devez configurer la règle de bucket S3 pour autoriser le service Amazon Redshift à écrire des fichiers journaux.
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,
redshift-audit-logs-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 de bucket, cliquez sur Modifier.
Ajoutez la règle de bucket suivante (remplacez
redshift-audit-logs-to-secopspar le nom de votre bucket) :{ "Version": "2012-10-17", "Statement": [ { "Sid": "Put bucket policy needed for audit logging", "Effect": "Allow", "Principal": { "Service": "redshift.amazonaws.com" }, "Action": [ "s3:PutObject", "s3:GetBucketAcl" ], "Resource": [ "arn:aws:s3:::redshift-audit-logs-to-secops", "arn:aws:s3:::redshift-audit-logs-to-secops/*" ] } ] }Cliquez sur Enregistrer les modifications.
Activer le paramètre de journal d'activité des utilisateurs
Le journal de connexion et le journal utilisateur sont capturés automatiquement lorsque la journalisation d'audit est activée. Pour capturer également le journal d'activité des utilisateurs (qui enregistre chaque requête avant son exécution sur la base de données), vous devez activer le paramètre de base de données enable_user_activity_logging.
- Connectez-vous à la console Amazon Redshift à l'adresse https://console.aws.amazon.com/redshiftv2/.
- Dans le menu de navigation, accédez à Configurations > Workload management (Gestion des charges de travail).
- Sélectionnez le groupe de paramètres associé à votre cluster.
- Sélectionnez l'onglet Paramètres.
- Cliquez sur Modifier les paramètres.
- Définissez la valeur du paramètre enable_user_activity_logging sur true.
Cliquez sur Enregistrer.
Activer la journalisation d'audit Amazon Redshift dans S3
- Connectez-vous à la console Amazon Redshift à l'adresse https://console.aws.amazon.com/redshiftv2/.
- Dans le menu de navigation, sélectionnez Clusters, puis le cluster que vous souhaitez configurer.
- Sélectionnez l'onglet Propriétés.
- Dans le panneau Configurations de la base de données, cliquez sur Modifier, puis sélectionnez Modifier la journalisation d'audit.
- Sur la page Modifier la journalisation d'audit, sélectionnez Activer.
- Pour Destination du journal, sélectionnez Bucket S3.
- Pour Bucket S3, sélectionnez le bucket que vous avez configuré (par exemple,
redshift-audit-logs-to-secops). - Facultatif : Saisissez un préfixe de clé S3 pour organiser les fichiers journaux dans le bucket (par exemple,
audit-logs/). - Sélectionnez les journaux à exporter :
- Journal de connexion : tentatives d'authentification, connexions et déconnexions
- Journal utilisateur : modifications apportées aux définitions des utilisateurs de la base de données
- Journal d'activité des utilisateurs : chaque requête avant son exécution sur la base de données
- Cliquez sur Enregistrer les modifications.
Pour en savoir plus, consultez la section Journalisation d'audit de la base de données dans le guide de gestion Amazon Redshift.
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 journaux d'audit 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 Create Access Key (Créer une clé d'accès) dans la section Access Keys (Clés d'accès).
- Sélectionnez Third-party service (Service tiers) comme Use case (Cas d'utilisation).
- Cliquez sur Suivant.
- Facultatif : ajoutez un tag de description.
- Cliquez sur Créer une clé d'accès.
- Cliquez sur Download .csv file (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 Permissions policies (Règles d'autorisation).
- Sélectionnez Ajouter des autorisations.
- Sélectionnez Joindre directement des 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 Redshift
- Accédez à Paramètres SIEM > Flux.
- Cliquez sur Add New Feed (Ajouter un flux).
- Sur la page suivante, cliquez sur Configure a single feed (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 Redshift comme type de journal.
- Cliquez sur Suivant , puis sur Envoyer.
Spécifiez des valeurs pour les champs suivants :
- URI S3:
s3://redshift-audit-logs-to-secops/audit-logs/ - Option de suppression de la source : sélectionnez l'option de suppression de votre choix.
- Âge maximal des fichiers : 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 avec accès au bucket S3
- Clé d'accès secrète : clé secrète utilisateur avec accès au bucket S3
- Espace de noms de l'élément : l'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 |
|---|---|---|
func_label |
additional.fields |
Fusionné |
lpclagg_label |
additional.fields |
Fusionné |
lpcltype_label |
additional.fields |
Fusionné |
msg |
metadata.description |
Mappage direct |
has_principal |
metadata.event_type |
Mappé : true → STATUS_UPDATE |
has_target_resource |
metadata.event_type |
Mappé : true → USER_RESOURCE_ACCESS |
has_user |
metadata.event_type |
Mappé : true → USER_UNCATEGORIZED |
column1 |
metadata.product_event_type |
Mappage direct |
requestID |
metadata.product_log_id |
Mappage direct |
column20 |
network.application_protocol_version |
Mappage direct |
column9 |
network.session_duration.seconds |
Renommé/mappé |
column21 |
network.session_id |
Mappage direct |
xid |
network.session_id |
Mappage direct |
column11 |
network.tls.cipher |
Mappage direct |
column10 |
network.tls.version |
Mappage direct |
column16 |
principal.application |
Mappage direct |
column3 |
principal.asset.ip |
Fusionné |
log_event.src_ip |
principal.asset.ip |
Fusionné |
column3 |
principal.hostname |
Mappage direct |
column3 |
principal.ip |
Fusionné |
log_event.src_ip |
principal.ip |
Fusionné |
region |
principal.location.name |
Mappage direct |
column17 |
principal.platform_version |
Mappage direct |
column4 |
principal.port |
Mappage direct |
column5 |
principal.process.pid |
Mappage direct |
pid |
principal.process.pid |
Mappage direct |
accountID |
principal.user.userid |
Mappage direct |
user_id |
principal.user.userid |
Mappage direct |
authmethod_label |
security_result.detection_fields |
Fusionné |
compression_label |
security_result.detection_fields |
Fusionné |
driver_version_label |
security_result.detection_fields |
Fusionné |
iamauthguid_label |
security_result.detection_fields |
Fusionné |
mtu_label |
security_result.detection_fields |
Fusionné |
plugin_name_label |
security_result.detection_fields |
Fusionné |
ssl_compression_label |
security_result.detection_fields |
Fusionné |
ssl_expansion_label |
security_result.detection_fields |
Fusionné |
level |
security_result.severity |
Mappé : (?i)Info → INFORMATIONAL, (?i)Error → ERROR, (?i)Warning → MEDIUM |
file |
target.file.full_path |
Mappage direct |
expected_bucket_label |
target.resource.attribute.labels |
Fusionné |
expected_s3_prefix_label |
target.resource.attribute.labels |
Fusionné |
sql_query_label |
target.resource.attribute.labels |
Fusionné |
time_zone_label |
target.resource.attribute.labels |
Fusionné |
ClusterIdentifier |
target.resource.name |
Mappage direct |
column6 |
target.resource.name |
Mappage direct |
db |
target.resource.name |
Mappage direct |
column7 |
target.user.user_display_name |
Mappage direct |
user |
target.user.user_display_name |
Mappage direct |
| N/A | metadata.event_type |
Constante : USER_RESOURCE_ACCESS |
| N/A | security_result.severity |
Constante : INFORMATIONAL |
| N/A | target.resource.type |
Constante : DATABASE |
Vous avez encore besoin d'aide ? Obtenez des réponses auprès des membres de la communauté et des professionnels Google SecOps.