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 aux événements de 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 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 du langage de manipulation des données (lectures DML) : 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 du langage de manipulation de données (écritures DML) : inclusions
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 | 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 |
é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 d'une collection. |
bulkWrite |
écriture DML | Effectue plusieurs opérations d'écriture en contrôlant 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 susceptibles de correspondre à 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 du filtre et des critères de tri, renvoyant 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 seul document en fonction du filtre et des critères de tri. |
aggregate |
Lecture DML et écriture DML | Supports APIs 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 sous forme de tableau. |
Note
Les valeurs du champ de paramètre du document d'événement DML sont limitées à 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.
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 les événements DDL tels que CreateDatabase, DropDatabase, CreateCollection, DropCollection, CreateIndex, DropIndex, AuthCheck, authenticate, CreateUser, DropUser, User, User, UpdateUser et grantRolesTo revokeRolesFrom dropAllUsers FromDatabase |
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ête 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 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 les événements DDL tels que CreateDatabase, DropDatabase, CreateCollection, DropCollection, CreateIndex, DropIndex, AuthCheck, authenticate, CreateUser, DropUser, User, User, User, UpdateUser et. grantRolesTo revokeRolesFrom dropAllUsers FromDatabase 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 événements DDL et les événements de lecture DML. |
ddl, dml_write |
Cette configuration activera l'audit des événements DDL et de l'écriture DML. |
dml_read, dml_write |
Cette configuration permettra d'effectuer un audit pour 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_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 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 suratype
,command
, user
namespace
, et. auditAuthorizationSuccess
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 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 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 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 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 unauthCheck
. atype
Seul le DDL en a une autre. atype
Si vous entrez une valeur autre que authCheck
lefilter
, cela ne produira pas de connexion DML. 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, 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 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 } )