Journaux d’audit AWS RDS PostgreSQL dans DataSunrise
Aujourd’hui, il n’est presque plus surprenant de voir un nouveau titre relatif aux violations de données ou à la confidentialité des données. Cela vous concerne personnellement en tant que client de ces entreprises – vous voulez que quelqu’un prenne bien soin de vos données. Cela vous concerne également professionnellement ; en tant que personne travaillant avec des données, vous êtes ce « quelqu’un » pour vos clients. Un bon enregistrement des journaux d’audit est un outil important dans l’arsenal d’un professionnel des données soucieux de la sécurité. Dans cet article, nous abordons les journaux d’audit RDS PostgreSQL et comment les configurer avec DataSunrise.
L’idée générale de l’audit de base de données est de savoir qui et quand a accédé à vos tables de base de données, et quelles modifications y ont été apportées. Théoriquement, toutes ces exigences peuvent être satisfaites en utilisant les mécanismes d’audit natifs de la base de données. Cet article se concentrera également sur l’audit natif d’une base de données AWS RDS PostgreSQL.
Il existe différents paramètres que vous pouvez définir pour enregistrer l’activité de votre base de données AWS RDS PostgreSQL. L’enregistrement de base des instructions peut être assuré par le mécanisme d’enregistrement standard avec log_statement = all. Cela est acceptable pour la surveillance et d’autres usages, mais ne fournit pas le niveau de détail généralement requis pour un audit. Il ne suffit pas d’avoir une liste de toutes les opérations effectuées sur la base de données. Il doit également être possible de retrouver des instructions particulières qui intéressent un auditeur. Le mécanisme d’enregistrement standard montre ce que l’utilisateur a demandé. Pour des informations plus détaillées et structurées, vous pouvez utiliser l’extension pgaudit (pgAudit sur GitHub), que vous pouvez également configurer. Le plugin pgaudit fournit un enregistrement détaillé des sessions et des objets pour Amazon RDS PostgreSQL. Une fois que vous avez activé l’extension pgAudit, vous pouvez configurer le paramètre pgaudit.log pour auditer des bases de données, des rôles, des tables et des colonnes spécifiques.
Activation de l’extension pgAudit sur une instance AWS RDS exécutant PostgreSQL
- Créez un groupe de paramètres RDS et modifiez les valeurs par défaut des paramètres comme indiqué ci-dessous:
Nom du paramètre Valeur à définir Log_checkpoints (optionnel) 0 log_connections 1 log_destination csvlog log_disconnections 1 pgaudit.log all pgaudit.role rds_pgaudit shared_preload_libraries pg_stat_statements, pgaudit Attribuez le groupe de paramètres à votre instance de base de données RDS PostgreSQL (Instance RDS → Configuration → Modifier → Configuration supplémentaire de la base de données → Groupe de paramètres DB);
Connectez-vous à votre base de données RDS PostgreSQL à l’aide d’un client (psql, PgAdmin, etc.) et exécutez la requête suivante pour créer un rôle de base de données nommé rds_pgaudit:
CREATE ROLE rds_pgaudit;
Redémarrez votre instance de base de données RDS Postgres pour appliquer les modifications (Instance RDS → Action → Redémarrer)
Assurez-vous que pgAudit est initialisé en exécutant la commande suivante:
show shared_preload_libraries;
Vous devriez recevoir la réponse suivante:
shared_preload_libraries -------------------------- Rdsutils,pg_stat_statements,pgaudit
Créez l’extension pgaudit en exécutant la commande suivante:
CREATE EXTENSION pgaudit;
Assurez-vous que pgaudit.role est défini sur rds_pgaudit en exécutant la commande suivante:
SHOW pgaudit.role;
Vous devriez recevoir la réponse suivante:
Pgaudit.role ------------------ Rds_pgaudit
Vous pouvez consulter les fichiers journaux de la base de données pour votre moteur DB en utilisant la console de gestion AWS:
- Dans la console Amazon RDS, choisissez le nom de l’instance DB PostgreSQL qui contient le fichier journal que vous souhaitez consulter.
- Choisissez l’onglet Journaux & événements.
- Faites défiler vers le bas jusqu’à la section Journaux.
- Dans la section Journaux, choisissez le fichier journal que vous souhaitez visualiser, puis cliquez sur Afficher.
Pour tester l’enregistrement des audits, exécutez plusieurs commandes que vous avez choisi d’auditer. Par exemple, vous pouvez exécuter la commande suivante:
INSERT INTO pgbench_history (tid, bid, aid, delta, mtime) VALUES (7, 1, 68611, 1557, CURRENT_TIMESTAMP);
Les journaux de la base de données doivent contenir une entrée similaire à la suivante.
... 2020-12-08 11:05:14.093 UTC,"postgres","pg_test",9937,"18.222.214.187:45210",5fcf5de8.26d1,99, "INSERT",2020-12-08 11:05:12 UTC,7/1305,5563,LOG,00000,"AUDIT: SESSION,97,1,WRITE,INSERT,,,"" INSERT INTO pgbench_history (tid, bid, aid, delta, mtime) VALUES (7, 1, 68611, 1557, CURRENT_TIMESTAMP); "",<not logged>",,,,,,,,,"" ...
Examinons le format des journaux pgAudit:

La CLASSE catégorise le type d’instruction (READ, WRITE, DDL, etc.) et COMMAND vous indique à quelle sous-classe elle appartient. Le champ STATEMENT contient le texte complet de l’INSERT INTO et le nom complet d’une table particulière.
Nous devons souligner que, du point de vue de l’auditeur, ces journaux d’audit natifs sont assez difficiles à lire et à analyser. L’audit natif nécessite des logiciels/ressources supplémentaires (comme DataSunrise) pour l’analyse et le traitement afin de produire des pistes d’audit conviviales. De plus, l’audit natif signifie une surcharge sur le serveur de base de données, de vastes archives d’audit nécessitent un espace de stockage pour la base de données, et les données d’audit ne sont pas capturées dans le format requis par les auditeurs et les équipes de sécurité. En d’autres termes, les auditeurs ont besoin de journaux présentant les informations de manière significative et les mécanismes natifs de la base de données ne peuvent pas leur fournir le type de journaux requis.
Voici DataSunrise
En se basant sur les limitations des mécanismes d’audit natifs mentionnées ci-dessus, examinons de plus près les capacités de DataSunrise. DataSunrise peut être déployé dans des configurations de journaux d’audit de traçage PostgreSQL. Cette option vous permet d’obtenir les résultats d’audit collectés par les outils d’audit natifs de PostgreSQL.

La base de données PostgreSQL effectue l’audit en utilisant ses mécanismes d’audit intégrés et enregistre les résultats de l’audit dans un fichier CSV dédié en fonction de la configuration sélectionnée. Ensuite, DataSunrise établit une connexion avec la base pour obtenir davantage d’informations sur la session, télécharge les données d’audit depuis le serveur de base de données en utilisant l’API RDS, et les transmet au stockage d’audit pour une analyse ultérieure. Avant tout, cette configuration est destinée à être utilisée pour les bases de données Amazon RDS, car DataSunrise ne prend pas en charge l’analyse sur RDS. Ce mode de fonctionnement présente trois inconvénients majeurs:
- Si l’administrateur de la base de données a accès aux journaux de la base de données, il peut les supprimer.
- L’audit natif a un impact négatif sur les performances de la base de données.
- Il est impossible de savoir quelles données ont été reçues pour une requête spécifique.
Configuration des journaux d’audit traçants PostgreSQL
Pour utiliser le suivi d’audit pour auditer les requêtes de la base de données Amazon RDS PostgreSQL, vous devez faire ce qui suit:
- Attribuez les rôles IAM appropriés à votre instance EC2 contenant les instances DataSunrise:
Créez une politique AWS IAM en utilisant le JSON suivant:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "rds:DownloadDBLogFilePortion", "rds:DescribeDBLogFiles", "rds:DownloadCompleteDBLogFile" ], "Resource": "arn:aws:rds:<region>:<012345678901>:db:<db-instance-name>" } ] }- Attachez la politique à votre rôle IAM (Politiques → Actions sur la politique → Attacher)
- Attachez le rôle IAM à votre machine EC2 DataSunrise (Machine EC2 → Paramètres de l’instance → Attacher/Remplacer le rôle IAM)
- Connectez-vous à la Console Web de DataSunrise.
- Créez un profil de base de données dans Configurations → Bases de données. Dans la liste déroulante Mode, sélectionnez Trailing the db audit logs et remplissez tous les champs requis:
Élément de l’interface Description Server Serveur DataSunrise Format Type Format du fichier dans lequel les données d’audit sont enregistrées Region Région AWS dans laquelle se trouve votre base de données cible DB Identifier Nom de l’instance de base de données Authentication method IAM Role : utilisez le rôle IAM attaché pour l’authentification
Regular : authentification à l’aide de la clé d’accès/clé secrète AWS
Request data with the following periodicity (seconds) 10 par défaut

- Allez dans Audit et configurez une règle d’audit pour l’instance PostgreSQL.
- Vérifiez qu’aucune session n’est en cours.
- Connectez-vous directement à la base PostgreSQL et exécutez des requêtes.
- Allez dans Audit → Pistes transactionnelles pour vérifier les résultats d’audit.
Pourquoi DataSunrise est-il utile pour gérer les journaux d’audit PostgreSQL ?
Le composant d’audit de données de DataSunrise est capable d’auditer TOUTES les actions des utilisateurs et les requêtes envoyées à la base de données cible. L’audit ne dépend pas uniquement du type d’utilisateur de la base de données. Ainsi, il peut auditer les requêtes des utilisateurs ordinaires ainsi que celles des utilisateurs privilégiés.
DataSunrise stocke ses résultats d’audit dans une base de données SQLite intégrée ou dans une base de données externe telle que PostgreSQL, MS SQL Server, Vertica, Redshift, Aurora MySQL, MySQL. DS vous permet également de filtrer les journaux d’audit DB, de les organiser et de générer des rapports basés sur ces derniers qui sont uniformes pour toutes les bases de données. Grâce au composant avancé de génération de rapports Report Gen, vous pouvez présenter vos données auditées sous la forme d’un rapport personnalisable répondant aux besoins de vos auditeurs. Vous pouvez également créer des rapports périodiquement selon un planning.