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.
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 (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 etbulkWrite()
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_logs
est 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 :
-
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_logs
parall
. -
Modification des groupes de paramètres du cluster Amazon DocumentDB
Étape 2. Activer l'exportation d'Amazon CloudWatch Logs
Lorsque la valeur du paramètre de audit_logs
cluster estenabled
,, ou ddl
dml_read
dml_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.
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.
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 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
, user
namespace
, 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 setAuditConfig
filter
,, 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 } )