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 (avec compatibilité avec MongoDB), vous pouvez auditer les événements qui ont été exécuté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 vous devez vous inscrire pour utiliser cette fonctionnalité.
Lorsque l'audit est activé, Amazon DocumentDB enregistre les événements liés 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 Logs. CloudWatch Lorsque l'audit est activé, Amazon DocumentDB exporte les enregistrements d'audit de votre cluster (documents JSON) 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 de CloudWatch Logs, consultez la page CloudWatch Tarification Amazon
La fonction d'audit d'Amazon DocumentDB est nettement différente de l'utilisation des ressources de service qui est surveillée. AWS CloudTrail CloudTrail enregistre les opérations effectuées avec le AWS Command Line Interface (AWS CLI) ou Console de gestion AWS 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 d'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.
Rubriques
É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 du langage de manipulation des données (lectures DML) : inclut
find()les différents opérateurs d'agrégation, opérateurs arithmétiques, opérateurs booléens et autres opérateurs de requête de lecture. -
Événements d'écriture dans le langage de manipulation des données (écritures DML) : inclut
insert(), update(), delete(),et opérateursbulkWrite()
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 | Le flux de modifications a été créé. |
renameCollection |
DDL | Renommer 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 | Octroi de 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 de 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évocation des rôles d'un utilisateur. |
updateUser |
UserManagement | Mise à jour d'un utilisateur existant. |
insert |
écriture DML | Insère un ou plusieurs documents dans une collection. |
delete |
écriture DML | Supprime un ou plusieurs documents d'une collection. |
update |
écriture DML | Modifie un ou plusieurs documents existants dans une collection. |
bulkWrite |
écriture DML | Effectue plusieurs opérations d'écriture avec des commandes pour l'ordre d'exécution. |
setAuditConfig |
écriture DML | Définissez un nouveau filtre pour l'audit DML. |
count |
Lecture DML | Renvoie le nombre de documents qui correspondraient à une requête find () pour la collection ou la vue. |
countDocuments |
Lecture DML | Renvoie le nombre de documents correspondant à la requête pour une collection ou une vue. |
find |
Lecture DML | Sélectionne les documents d'une collection ou d'une vue et renvoie le curseur sur les documents sélectionnés. |
getAuditConfig |
Lecture DML | Récupérez le filtre actuel pour l'audit DML. |
findAndModify |
Lecture DML et écriture DML | Modifie et renvoie un seul document. |
findOneAndDelete |
Lecture DML et écriture DML | Supprime un seul document en fonction des critères de filtrage et de tri, et renvoie le document supprimé. |
findOneAndReplace |
Lecture DML et écriture DML | Remplace un seul document en fonction du filtre spécifié. |
findOneAndUpdate |
Lecture DML et écriture DML | Met à jour un document unique en fonction des critères de filtrage et de tri. |
aggregate |
Lecture DML et écriture DML | Supporte les API dans le pipeline d'agrégation. |
distinct |
Lecture DML | Recherche les valeurs distinctes d'un champ spécifié dans une collection ou une vue unique et renvoie les résultats dans un tableau. |
Note
Les valeurs du champ de paramètres du document d'événement DML ont une taille limite de 1 Ko. Amazon DocumentDB tronque la valeur si elle dépasse 1 Ko.
Note
Les événements de suppression TTL ne sont pas audités pour le moment.
Activation de 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 aux CloudWatch journaux.
Étape 1. Activez 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 à enregistrer, séparés par des virgules. Les événements doivent être spécifiés en minuscules et il ne doit pas y avoir d'espace entre les éléments de la liste.
Vous pouvez définir les valeurs suivantes pour le groupe de paramètres :
| Value | Description |
|---|---|
ddl |
Cette configuration permettra d'auditer les événements DDL tels que CreateDatabase, DropDatabase, CreateCollection, DropCollection, CreateIndex, DropIndex, AuthCheck, authenticate, CreateUser, DropUser, grant, revoke, UpdateUser et drop RolesToUser RolesFromUser AllUsersFromDatabase |
dml_read |
Cette configuration permettra d'auditer les événements de lecture DML tels que find, sort count, distinct, group, projecta, unwind, GeoNear, GeoIntersects, GeoWithin et d'autres opérateurs de requêtes de lecture MongoDB. |
dml_write |
Cette configuration permettra d'auditer les événements d'écriture DML 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 de l'administrateur. |
none |
Cette configuration désactivera l'audit |
enabled (hérité) |
Il s'agit d'un paramètre existant équivalent à « ddl ». Cette configuration permettra d'auditer les événements DDL tels que CreateDatabase, DropDatabase, CreateCollection, DropCollection, CreateIndex, DropIndex, AuthCheck, authenticate, CreateUser, DropUser, grant, revoke, UpdateUser et drop. RolesToUser RolesFromUser AllUsersFromDatabase Nous vous déconseillons d'utiliser ce paramètre car il s'agit d'un paramètre existant. |
disabled (héritage) |
Il s'agit d'un paramètre existant qui est équivalent à « aucun ». Nous vous déconseillons d'utiliser ce paramètre car il s'agit d'un paramètre existant. |
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 en combinaison.
| Value | Description |
|---|---|
ddl, dml_read |
Ce réglage permettra d'auditer les événements DDL et les événements de lecture DML. |
ddl, dml_write |
Ce réglage activera l'audit des événements DDL et l'écriture DML. |
dml_read, dml_write |
Ce réglage activera l'audit de tous les événements DML |
Note
Vous ne pouvez pas modifier un groupe de paramètres par défaut.
Pour plus d’informations, consultez les ressources suivantes :
-
Création de groupes de paramètres de cluster Amazon DocumentDB
Après avoir créé un groupe de paramètres, modifiez-le en remplaçant la valeur du paramètre
audit_logsparall. -
Modification des groupes de paramètres de cluster Amazon DocumentDB
Étape 2. Activer l'exportation d'Amazon CloudWatch Logs
Lorsque la valeur du paramètre de audit_logs cluster estenabled,ddl, ou dml_readdml_write, vous devez également autoriser Amazon DocumentDB à 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 une restauration ponctuelle ou restaurez un instantané, vous pouvez activer les CloudWatch journaux en suivant ces étapes.
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 Console de gestion AWS ou du AWS CLI.
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.
Ouvrez la CloudWatch console à l'adresse https://console.aws.amazon.com/cloudwatch/
. -
Assurez-vous que vous vous trouvez dans la même région que votre cluster Amazon DocumentDB.
-
Dans le panneau de navigation, sélectionnez Logs (Journaux).
-
Pour rechercher les journaux d'audit de votre cluster, dans la liste, trouvez et choisissez
/aws/docdb/.yourClusterName/auditLes événements d'audit pour chacune de vos instances sont disponibles sous chacun des noms d'instance respectifs.
Filtrage des événements d'audit DML
Commencer à utiliser le filtrage d'audit DML
Les événements d'audit DML peuvent être filtrés avant d'être écrits sur Amazon CloudWatch. Pour utiliser cette fonctionnalité, le journal d'audit et la journalisation DML doivent être activés. Amazon DocumentDB prend en charge le filtrage sur atype commanduser,namespace, etauditAuthorizationSuccess.
Note
Les événements DDL 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é
Seule la base de données users/roles dotée d'une action privilégiée auditConfigure peut exécuter les commandes ci-dessus admindb lors de la définition ou de la liste des filtres d'audit DML. Vous pouvez utiliser l'un des rôles intégrés de [clusterAdmin,hostManager,root] ou créer des rôles personnalisés dotés de auditConfigure privilèges. Voici un exemple d'utilisation de rôles existants avec ce auditConfigure privilège et un exemple avec des rôles personnalisés.
Utilisateur avec 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" } ] } )
Filtrer les cas d'utilisation
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 enregistré :
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 journaux DML ont authCheck commeatype. Seul le DDL a une différence. atype Si vous saisissez une valeur autre que celle authCheck defilter, aucune connexion DML ne sera générée 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 niveau supérieur, seuls $and$or, et $nor sont pris en charge. Tout autre opérateur n'est pas pris en charge et provoquera une erreur.
Exemple : filtrage par événements par auditAuthorizationSuccess
Dans ce filtre, toutes les commandes qui ont été autorisées avec succès 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établissement du filtre par défaut
La réinitialisation de la valeur par défaut signifie que chaque événement d'audit DML 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 } )