Audit des événements Amazon DocumentDB - Amazon DocumentDB

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.

Audit des événements Amazon DocumentDB

Avec Amazon DocumentDB (compatible avec MongoDB), vous pouvez auditer les événements qui ont été effectués dans votre cluster. Les exemples d'événements enregistrés incluent les tentatives d'authentification réussies et celles ayant échoué, la suppression d'une collection dans une base de données ou la création d'un index. Par défaut, l'audit est désactivé sur Amazon DocumentDB et nécessite que vous acceptiez d'utiliser cette fonctionnalité.

Lorsque l'audit est activé, Amazon DocumentDB enregistre les événements relatifs au langage de définition des données (DDL), au langage de manipulation des données (DML), à l'authentification, à l'autorisation et à la gestion des utilisateurs dans Amazon CloudWatch Logs. Lorsque l'audit est activé, Amazon DocumentDB exporte les enregistrements d'audit (JSONdocuments) de votre cluster vers Amazon CloudWatch Logs. Vous pouvez utiliser Amazon CloudWatch Logs pour analyser, surveiller et archiver vos événements d'audit Amazon DocumentDB.

Bien qu'Amazon DocumentDB ne facture aucun coût supplémentaire pour activer l'audit, des tarifs standard vous sont facturés pour l'utilisation des CloudWatch journaux. Pour plus d'informations sur la tarification des CloudWatch journaux, consultez CloudWatch les tarifs Amazon.

La fonctionnalité d'audit Amazon DocumentDB est nettement différente de l'utilisation des ressources de service surveillée avec. AWS CloudTrail CloudTrail enregistre les opérations effectuées avec le AWS Command Line Interface (AWS CLI) ou AWS Management Console sur des ressources telles que des clusters, des instances, des groupes de paramètres et des instantanés. L'audit des ressources CloudTrail est activé par défaut et ne peut pas être désactivé. La fonctionnalité d'audit Amazon DocumentDB est une fonctionnalité optionnelle. Elle enregistre les opérations qui ont lieu au sein de votre cluster sur des objets, par exemple sur des bases de données, des collections, des index et des utilisateurs.

Événements pris en charge

L'audit Amazon DocumentDB prend en charge les catégories d'événements suivantes :

  • Langage de définition des données (DDL) : inclut les opérations de gestion de base de données, les connexions, la gestion des utilisateurs et les autorisations.

  • Événements de lecture (DMLlectures) du langage de manipulation des données : incluent find() les différents opérateurs d'agrégation, les opérateurs arithmétiques, les opérateurs booléens et les autres opérateurs de requête de lecture.

  • Événements d'écriture (écritures) du langage de manipulation de données (DMLécritures) : insert(), update(), delete(), inclusions et bulkWrite() opérateurs

Les types d'événements sont les suivants.

Type d’événement Catégorie Description
authCheck Autorisation Code de résultat 0 : Succès
Code de résultat 13 : Tentatives non autorisées d'exécution d'une opération.
authenticate Connexion Tentatives d'authentification réussies ou en échec sur une nouvelle connexion.
auditConfigure DDL Configuration du filtre d'audit.
createDatabase DDL Création d'une nouvelle base de données.
createCollection DDL Création d'une nouvelle collection dans une base de données.
createIndex DDL Création d'un nouvel index dans une collection.
dropCollection DDL Suppression d'une collection dans une base de données.
dropDatabase DDL Suppression d'une base de données.
dropIndex DDL Suppression d'un index dans une collection.
modifyChangeStreams DDL Un flux de modifications a été créé.
renameCollection DDL Modification du nom d'une collection au sein d'une base de données.
createRole Gestion des rôles Création d'un rôle
dropAllRolesFromDatabase Gestion des rôles Suppression de tous les rôles dans une base de données.
dropRole Gestion des rôles Supprimer un rôle.
grantPrivilegesToRole Gestion des rôles Accorder des privilèges à un rôle.
grantRolesToRole Gestion des rôles Attribution de rôles à un rôle défini par l'utilisateur.
revokePrivilegesFromRole Gestion des rôles Révocation des privilèges d'un rôle.
revokeRolesFromRole Gestion des rôles Révocation des rôles d'un rôle défini par l'utilisateur.
updateRole Gestion des rôles Mettre à jour un rôle
createUser Gestion des utilisateurs Création d'un nouvel utilisateur.
dropAllUsersFromDatabase Gestion des utilisateurs Suppression de tous les utilisateurs dans une base de données.
dropUser Gestion des utilisateurs Suppression d'un utilisateur existant.
grantRolesToUser Gestion des utilisateurs Attribution de rôles à un utilisateur.
revokeRolesFromUser Gestion des utilisateurs Révoquer les rôles d'un utilisateur.
updateUser UserManagement Mise à jour d'un utilisateur existant.
insert DMLécrire Insère un ou plusieurs documents dans une collection.
delete DMLécrire Supprime un ou plusieurs documents d'une collection.
update DMLécrire Modifie un ou plusieurs documents existants d'une collection.
bulkWrite DMLécrire Effectue plusieurs opérations d'écriture avec des contrôles pour l'ordre d'exécution.
setAuditConfig DMLécrire Définissez un nouveau filtre pour l'DMLaudit.
count DMLlire Renvoie le nombre de documents susceptibles de correspondre à une requête find () pour la collection ou la vue.
countDocuments DMLlire Renvoie le nombre de documents correspondant à la requête pour une collection ou une vue.
find DMLlire Sélectionne les documents d'une collection ou d'une vue et renvoie le curseur sur les documents sélectionnés.
getAuditConfig DMLlire Récupérez le filtre actuel pour DML l'audit.
findAndModify DMLlire et DML écrire Modifie et renvoie un seul document.
findOneAndDelete DMLlire et DML écrire Supprime un seul document en fonction du filtre et des critères de tri, renvoyant le document supprimé.
findOneAndReplace DMLlire et DML écrire Remplace un seul document en fonction du filtre spécifié.
findOneAndUpdate DMLlire et DML écrire Met à jour un seul document en fonction du filtre et des critères de tri.
aggregate DMLlire et DML écrire Supports APIs dans le pipeline d'agrégation.
distinct DMLlire Recherche les valeurs distinctes d'un champ spécifié dans une collection ou une vue unique et renvoie les résultats sous forme de tableau.
Note

Les valeurs du champ de paramètres du document d'DMLévénement ont une limite de taille de 1 Ko. Amazon DocumentDB tronque la valeur si elle dépasse 1 Ko.

Note

TTLles événements de suppression ne sont pas audités pour le moment.

Permettre l'audit

L'activation de l'audit sur un cluster est un processus en deux étapes. Assurez-vous que les deux étapes sont terminées, sinon les journaux d'audit ne seront pas envoyés à CloudWatch Logs.

Étape 1. Activer le paramètre de cluster audit_logs

Pour activer l'audit, vous devez modifier le audit_logs paramètre dans le groupe de paramètres. audit_logsest une liste d'événements à consigner, séparés par des virgules. Les événements doivent être spécifiés en minuscules et il ne doit y avoir aucun espace entre les éléments de la liste.

Vous pouvez définir les valeurs suivantes pour le groupe de paramètres :

Valeur Description
ddl Cette configuration permettra d'auditer des DDL événements tels quecreateDatabase,dropDatabase,createCollection,dropCollection,createIndex,dropIndex,authCheck,, authentifier,createUser,dropUser, grantRolesTo Utilisateur, revokeRolesFrom UtilisateurupdateUser, et dropAllUsers FromDatabase
dml_read Cette configuration permettra d'auditer les événements de DML lecture tels que find, sort count, distinct, group, projecta, unwind,, et geoWithin d'autres opérateurs geoNear de geoIntersects requête de lecture MongoDB.
dml_write Cette configuration permettra d'auditer les événements d'DMLécriture tels que insert (), update (), delete () et bulkWrite ()
all Cette configuration permettra d'auditer les événements de votre base de données, tels que les requêtes de lecture, les requêtes d'écriture, les actions de base de données et les actions d'administrateur.
none Cette configuration désactivera l'audit
enabled (hérité) Il s'agit d'un ancien paramètre équivalent à « ddl ». Cette configuration permettra d'auditer des DDL événements tels quecreateDatabase,dropDatabase,createCollection,dropCollection,createIndex,dropIndex,authCheck,, authentifiercreateUser,,dropUser, grantRolesTo Utilisateur, revokeRolesFrom UtilisateurupdateUser, et dropAllUsersFromDatabase. Nous vous déconseillons d'utiliser ce paramètre car il s'agit d'un ancien paramètre.
disabled (héritage) Il s'agit d'un ancien paramètre équivalent à « aucun ». Nous vous déconseillons d'utiliser ce paramètre car il s'agit d'un ancien paramètre.
Note

La valeur par défaut du paramètre de cluster audit_logs est none (legacy "disabled«).

Vous pouvez également utiliser les valeurs mentionnées ci-dessus dans des combinaisons.

Valeur Description
ddl, dml_read Cette configuration permettra d'auditer les DDL événements et de DML lire les événements.
ddl, dml_write Cette configuration permettra d'auditer les DDL événements et d'DMLécrire
dml_read, dml_write Cette configuration permettra d'effectuer un audit pour tous les DML événements
Note

Vous ne pouvez pas modifier un groupe de paramètres par défaut.

Pour plus d’informations, consultez les ressources suivantes :

Étape 2. Activer l'exportation d'Amazon CloudWatch Logs

Lorsque la valeur du paramètre de audit_logs cluster estenabled,, ou ddl dml_readdml_write, vous devez également activer Amazon DocumentDB pour exporter les journaux vers Amazon. CloudWatch Si vous omettez l'une de ces étapes, les journaux d'audit ne seront pas envoyés à CloudWatch.

Lorsque vous créez un cluster, effectuez un point-in-time-restore instantané ou restaurez un instantané, vous pouvez activer CloudWatch les journaux en suivant ces étapes.

Using the AWS Management Console

Pour permettre à Amazon DocumentDB d'exporter des journaux à CloudWatch l'aide de la console, consultez les rubriques suivantes :

Using the AWS CLI
Pour activer les journaux d'audit lors de la création d'un cluster

Le code suivant crée le cluster sample-cluster et active les journaux CloudWatch d'audit.

Pour Linux, macOS ou Unix :

aws docdb create-db-cluster \ --db-cluster-identifier sample-cluster \ --port 27017 \ --engine docdb \ --master-username master-username \ --master-user-password password \ --db-subnet-group-name default \ --enable-cloudwatch-logs-exports audit

Pour Windows :

aws docdb create-db-cluster ^ --db-cluster-identifier sample-cluster ^ --port 27017 ^ --engine docdb ^ --master-username master-username ^ --master-user-password password ^ --db-subnet-group-name default ^ --enable-cloudwatch-logs-exports audit
Pour activer les journaux d'audit lors de la modification d'un cluster existant

Le code suivant modifie le cluster sample-cluster et active les journaux CloudWatch d'audit.

Pour Linux, macOS ou Unix :

aws docdb modify-db-cluster \ --db-cluster-identifier sample-cluster \ --cloudwatch-logs-export-configuration '{"EnableLogTypes":["audit"]}'

Pour Windows :

aws docdb modify-db-cluster ^ --db-cluster-identifier sample-cluster ^ --cloudwatch-logs-export-configuration '{"EnableLogTypes":["audit"]}'

Le résultat de ces opérations ressemble à ce qui suit (JSONformat).

{ "DBCluster": { "HostedZoneId": "ZNKXH85TT8WVW", "StorageEncrypted": false, "DBClusterParameterGroup": "default.docdb4.0", "MasterUsername": "<user-name>", "BackupRetentionPeriod": 1, "Port": 27017, "VpcSecurityGroups": [ { "Status": "active", "VpcSecurityGroupId": "sg-77186e0d" } ], "DBClusterArn": "arn:aws:rds:us-east-1:900083794985:cluster:sample-cluster", "Status": "creating", "Engine": "docdb", "EngineVersion": "4.0.0", "MultiAZ": false, "AvailabilityZones": [ "us-east-1a", "us-east-1c", "us-east-1f" ], "DBSubnetGroup": "default", "DBClusterMembers": [], "ReaderEndpoint": "sample-cluster.cluster-ro-corcjozrlsfc.us-east-1.docdb.amazonaws.com", "EnabledCloudwatchLogsExports": [ "audit" ], "PreferredMaintenanceWindow": "wed:03:08-wed:03:38", "AssociatedRoles": [], "ClusterCreateTime": "2019-02-13T16:35:04.756Z", "DbClusterResourceId": "cluster-YOS52CUXGDTNKDQ7DH72I4LED4", "Endpoint": "sample-cluster.cluster-corcjozrlsfc.us-east-1.docdb.amazonaws.com", "PreferredBackupWindow": "07:16-07:46", "DBClusterIdentifier": "sample-cluster" } }

Désactivation de l'audit

Vous pouvez désactiver l'audit en désactivant l'exportation CloudWatch des journaux et en désactivant le audit_logs paramètre.

Désactivation de l'exportation CloudWatch des journaux

Vous pouvez désactiver l'exportation des journaux d'audit à l'aide du AWS Management Console ou du AWS CLI.

Using the AWS Management Console

La procédure suivante utilise le AWS Management Console pour désactiver l'exportation des journaux vers Amazon DocumentDB vers. CloudWatch

Pour désactiver les journaux d'audit
  1. Connectez-vous à la AWS Management Console console Amazon DocumentDB et ouvrez-la à https://console.aws.amazon.com l'adresse /docdb.

  2. Dans le panneau de navigation, choisissez Clusters. Choisissez ensuite le bouton à gauche du nom du cluster pour lequel vous souhaitez désactiver l'exportation des journaux.

  3. Choisissez Actions, puis Modify (Modifier).

  4. Faites défiler jusqu'à la section Log exports (Exportations de journaux), puis choisissez Disabled (Désactivé).

  5. Choisissez Continuer.

  6. Vérifiez vos modifications, puis choisissez quand cette modification devra être appliquée à votre cluster.

    • Appliquer pendant la fenêtre de maintenance planifiée suivante

    • Appliquer immédiatement

  7. Choisissez Modifier le cluster.

Using the AWS CLI

Le code suivant modifie le cluster sample-cluster et désactive les journaux CloudWatch d'audit.

Pour Linux, macOS ou Unix :

aws docdb modify-db-cluster \ --db-cluster-identifier sample-cluster \ --cloudwatch-logs-export-configuration '{"DisableLogTypes":["audit"]}'

Pour Windows :

aws docdb modify-db-cluster ^ --db-cluster-identifier sample-cluster ^ --cloudwatch-logs-export-configuration '{"DisableLogTypes":["audit"]}'

Le résultat de cette opération ressemble à ce qui suit (JSONformat).

{ "DBCluster": { "DBClusterParameterGroup": "default.docdb4.0", "HostedZoneId": "ZNKXH85TT8WVW", "MasterUsername": "<user-name>", "Status": "available", "Engine": "docdb", "Port": 27017, "AvailabilityZones": [ "us-east-1a", "us-east-1c", "us-east-1f" ], "EarliestRestorableTime": "2019-02-13T16:35:50.387Z", "DBSubnetGroup": "default", "LatestRestorableTime": "2019-02-13T16:35:50.387Z", "DBClusterArn": "arn:aws:rds:us-east-1:900083794985:cluster:sample-cluster2", "Endpoint": "sample-cluster2.cluster-corcjozrlsfc.us-east-1.docdb.amazonaws.com", "ReaderEndpoint": "sample-cluster2.cluster-ro-corcjozrlsfc.us-east-1.docdb.amazonaws.com", "BackupRetentionPeriod": 1, "EngineVersion": "4.0.0", "MultiAZ": false, "ClusterCreateTime": "2019-02-13T16:35:04.756Z", "DBClusterIdentifier": "sample-cluster2", "AssociatedRoles": [], "PreferredBackupWindow": "07:16-07:46", "DbClusterResourceId": "cluster-YOS52CUXGDTNKDQ7DH72I4LED4", "StorageEncrypted": false, "PreferredMaintenanceWindow": "wed:03:08-wed:03:38", "DBClusterMembers": [], "VpcSecurityGroups": [ { "Status": "active", "VpcSecurityGroupId": "sg-77186e0d" } ] } }

Désactivation du paramètre audit_logs

Pour désactiver le paramètre audit_logs de votre cluster, vous pouvez modifier ce dernier de façon à ce qu'il utilise un groupe de paramètres dans lequel la valeur du paramètre audit_logs est disabled. Vous pouvez également modifier la valeur du paramètre audit_logs dans le groupe de paramètres du cluster afin qu'elle soit disabled.

Pour plus d’informations, consultez les rubriques suivantes :

Accès à vos événements d'audit

Suivez les étapes ci-dessous pour accéder à vos événements d'audit sur Amazon CloudWatch.

  1. Ouvrez la CloudWatch console à l'adresse https://console.aws.amazon.com/cloudwatch/.

  2. Assurez-vous que vous vous trouvez dans la même région que votre cluster Amazon DocumentDB.

  3. Dans le panneau de navigation, sélectionnez Logs (Journaux).

  4. Pour rechercher les journaux d'audit de votre cluster, dans la liste, trouvez et choisissez /aws/docdb/yourClusterName/audit.

    Les événements d'audit pour chacune de vos instances sont disponibles sous chacun des noms d'instance respectifs.

Filtrage DML des événements d'audit

Commencer à utiliser le filtrage DML des audits

DMLles événements d'audit peuvent être filtrés avant d'être écrits sur Amazon CloudWatch. Pour utiliser cette fonctionnalité, le journal d'audit et la DML journalisation doivent être activés. Amazon DocumentDB prend en charge le filtrage suratype,command, usernamespace, et. auditAuthorizationSuccess

Note

DDLles événements ne sont pas filtrés.

Vous pouvez activer le filtrage d'audit à tout moment en spécifiant le filtre d'audit à l'aide des auditAuthorizationSuccess paramètres setAuditConfigfilter,, et de l'db.adminCommand( { command } )opération :

db.admin.runCommand( { setAuditConfig: 1, filter: { //filter conditions }, auditAuthorizationSuccess: true | false } )

Vous pouvez également récupérer les paramètres du filtre d'audit en exécutant la commande suivante :

db.admin.runCommand( { getAuditConfig: 1})

Exigences en matière de sécurité

Seuls les utilisateurs/rôles de base de données disposant d'une action privilégiée auditConfigure peuvent exécuter les commandes ci-dessus admindb lors de la définition ou de la liste des filtres DML d'audit. Vous pouvez soit utiliser l'un des rôles intégrés de [clusterAdmin,,root]hostManager, soit créer des rôles personnalisés dotés de auditConfigure privilèges. Voici un exemple d'utilisation de rôles existants avec le auditConfigure privilège et un exemple avec des rôles personnalisés.

Utilisateur doté d'un rôle intégré :

use admin db.createUser( { user: "myClusterAdmin", pwd: "password123", roles: [ { role: "clusterAdmin", db: "admin" } ] } )

Utilisateur doté de rôles personnalisés :

use admin db.createRole( { role: "myRole", privileges: [ { resource: { cluster: true }, actions: [ "auditConfigure" ] } ], roles: [] } ) db.createUser( { user: "myUser", pwd: "myPassword", roles: [ { role: "myRole", db: "admin" } ] } )

Cas d'utilisation du filtrage

Exemple : filtrage des événements par commandes

db.admin.runCommand( { setAuditConfig: 1, filter: { "$and": [ { "param.command": { $in: [ "find","count", "insert", "delete", "update", "findandmodify" ] } } ] }, auditAuthorizationSuccess: true } )

Exemple : filtrage des événements par nom d'utilisateur

Dans cet exemple, seul l'utilisateur myUser « » sera connecté :

db.admin.runCommand( { setAuditConfig: 1, filter: { "$and": [ { "param.user": { $in: [ "myUser" ] } } ]}, auditAuthorizationSuccess: true})

Exemple : filtrage par atype

db.admin.runCommand( { setAuditConfig: 1, filter: {atype: "authCheck"}, auditAuthorizationSuccess: true })
Note

Tous les DML journaux ont authCheck unatype. DDLIl n'y a qu'une différenceatype. Si vous entrez une valeur autre que authCheck lefilter, cela ne produira pas de DML connexion CloudWatch.

Exemple : filtrage à l'aide de plusieurs filtres joints par des opérateurs

db.admin.runCommand( { setAuditConfig: 1, filter: { "$and": [ { "param.command": { $in: [ "find","count", "insert", "delete", "update", "findandmodify" ] } } ], "$nor": [ { "param.command": { $in: ["count", "insert", "delete", "update", "findandmodify" ] } }] }, auditAuthorizationSuccess: true})
Note

Au plus haut niveau, uniquement $and$or, et $nor sont pris en charge. Tous les autres opérateurs ne sont pas pris en charge et provoqueront une erreur.

Exemple : filtrage par événements par auditAuthorizationSuccess

Dans ce filtre, toutes les commandes ayant passé avec succès l'autorisation ne seront pas enregistrées :

db.admin.runCommand( { setAuditConfig: 1, filter: {}, auditAuthorizationSuccess: false } )

Exemple : filtrage avec $in et $nin conditions

Lorsque vous utilisez à la fois in $in et$nin, la commande ne sera pas enregistrée car il y aura un « et » implicite entre les conditions. Dans cet exemple, regex bloquera la find commande afin que rien ne soit enregistré :

db.admin.runCommand( { setAuditConfig: 1, filter: { "$and": [ { atype: "authCheck", "param.command": { $in: [ "find", "insert", "delete", "update", "findandmodify" ], $nin: ["count", "insert", "delete", "update", "findandmodify" ], $not: /^^find.*/ } }, ], "$or": [ { "param.command": { $nin: ["count", "insert", "delete", "update", "findandmodify" ] } }] }, auditAuthorizationSuccess: true})

Exemple : filtrage par namespace

db.admin.runCommand( { setAuditConfig: 1, filter: { "$and": [ { "param.ns": { $in: [ "test.foo" ] } } ]}, auditAuthorizationSuccess: true})

Exemple : réinitialisation du filtre par défaut

La réinitialisation à la valeur par défaut signifie que chaque événement DML d'audit sera enregistré. Pour rétablir la valeur par défaut du filtrage, exécutez la commande suivante :

db.admin.runCommand( { setAuditConfig: 1, filter: {}, auditAuthorizationSuccess: true } )