Journaux d’audit AWS RDS PostgreSQL dans DataSunrise
Aujourd’hui, il n’est presque plus surprenant de voir un autre titre lié 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 soin de vos données. Cela vous concerne également professionnellement ; en tant que personne qui travaille avec des données, vous êtes ce ‘quelqu’un’ pour vos clients. Un bon enregistrement d’audit est un outil important dans la ceinture d’un professionnel des données conscient de la sécurité. Dans cet article, nous discutons des 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 ont 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 des mécanismes d’audit de base de données natifs. Cet article se concentrera également sur l’audit natif d’une base de données AWS RDS PostgreSQL.
Il y a différents paramètres que vous pouvez configurer pour enregistrer l’activité sur votre base de données AWS RDS PostgreSQL. L’enregistrement basique des déclarations peut être fourni par l’installation de journalisation 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. Avoir une liste de toutes les opérations effectuées contre la base de données n’est pas suffisant. Il doit également être possible de trouver des déclarations particulières qui intéressent un auditeur. L’installation de journalisation standard montre ce que l’utilisateur a demandé. Pour obtenir des informations plus détaillées et structurées, vous pouvez utiliser l’extension pgaudit (https://github.com/pgaudit/pgaudit), que vous pouvez également configurer. Le plugin pgaudit fournit des journaux d’audit de session et d’objet détaillés pour Amazon RDS PostgreSQL. Après avoir 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 changez les valeurs de paramètres par défaut par celles indiquées 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 avec un client quelconque (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 Postgres pour appliquer les modifications (Instance RDS → Action → Reboot)
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 de votre moteur de base de données en utilisant la console de gestion AWS :
- Sur la console Amazon RDS, choisissez le nom de l’instance DB PostgreSQL qui possède le fichier journal que vous voulez consulter.
- Choisissez l’onglet Logs & events.
- Défilez vers le bas jusqu’à la section Logs.
- Dans la section Logs, choisissez le journal que vous voulez consulter, puis choisissez View.
Pour tester la journalisation d’audit, exécutez plusieurs commandes que vous avez choisies d’auditer. Par exemple, vous pourriez 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 devraient contenir une entrée similaire à celle-ci.
... 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>",,,,,,,,,"" ...
Regardons le format des journaux pgAudit :
La CLASS catégorise le type de déclaration (READ, WRITE, DDL, etc.) et COMMAND indique la sous-classe. Le champ STATEMENT contient le texte intégral de l’INSERT INTO et le nom entièrement qualifié d’une table particulière.
Nous devons souligner que du point de vue de l’auditeur, de tels journaux d’audit natifs sont assez difficiles à lire et à analyser. L’audit natif nécessite des logiciels/ressources supplémentaires (comme DataSunrise) pour le déchiffrer et le traiter afin de produire des pistes d’audit conviviales. De plus, l’audit natif implique une surcharge sur le serveur de base de données, les archives d’audit volumineuses nécessitent le stockage de 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 des informations de manière significative et les mécanismes de bases de données natives ne peuvent pas leur fournir le type de journaux requis.
Voici DataSunrise
Compte tenu des 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 base de données Trailing pour PostgreSQL. Cette option vous permet d’obtenir les résultats de l’audit collectés par les outils d’audit natifs de PostgreSQL.
La base de données PostgreSQL effectue un audit à l’aide de 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 plus d’informations sur les sessions, télécharge les données d’audit du serveur de base de données en utilisant l’API RDS et les transfère vers le stockage d’audit pour une analyse ultérieure. Avant tout, cette configuration est conçue pour être utilisée pour les bases de données Amazon RDS car DataSunrise ne prend pas en charge la lecture furtive sur RDS. Ce mode de fonctionnement présente trois principaux inconvénients :
- 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 impacte négativement les performances de la base de données.
- Il est impossible de déterminer quelles données ont été reçues pour une demande spécifique.
Configuration des journaux d’audit de base de données Trailing pour PostgreSQL
Pour utiliser la piste d’audit pour auditer les requêtes de base de données Amazon RDS PostgreSQL, vous devez procéder comme suit :
- Attribuez des rôles IAM appropriés à votre instance EC2 avec des 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 (Policies → Policy actions → Attach)
- Attachez le rôle IAM à votre machine EC2 DataSunrise (EC2 machine → Instance Settings → Attach/Replace IAM Role)
- Connectez-vous à la console Web de DataSunrise.
- Créez un profil de base de données dans Configurations → Databases. Dans la liste déroulante Mode, sélectionnez Suivi des journaux d’audit de la base de données et remplissez tous les champs requis :
Élément de l’interface Description Serveur Serveur DataSunrise Type de format Format du fichier pour stocker les données d’audit Région Région AWS où se trouve votre base de données cible Identifiant de la base de données Nom de l’instance de base de données Méthode d’authentification - Rôle IAM : utiliser le rôle IAM attaché pour l’authentification
- Régulier : authentification utilisant la clé AWS Access/Secret
Demander des données avec la périodicité suivante (secondes) 10 par défaut
- Allez dans l’audit et configurez une règle d’audit pour l’instance PostgreSQL.
- Vérifiez qu’il n’y a pas de sessions en cours.
- Connectez-vous directement à la base de données PostgreSQL et exécutez des requêtes.
- Allez dans Audit → Pistes Transactionnelles pour vérifier les résultats de l’audit.
Pourquoi DataSunrise est utile pour gérer les journaux d’audit PostgreSQL?
Le composant DataSunrise Data Audit 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 tout simplement pas du type d’utilisateur de la base de données. Ainsi, il peut auditer les requêtes des utilisateurs réguliers et 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 eux 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 forme de rapport personnalisable, adapté aux besoins de votre auditeur. Vous pouvez également créer des rapports périodiques selon un calendrier.