Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Amazon DocumentDB DocumentDB-Ereignisse prüfen
Mit Amazon DocumentDB (mit MongoDB-Kompatibilität) können Sie Ereignisse überprüfen, die in Ihrem Cluster durchgeführt wurden. Beispiele für protokollierte Ereignisse sind erfolgreiche und fehlgeschlagene Authentifizierungsversuche, Drop-Ereignisse für Sammlungen in einer Datenbank oder das Erstellen eines Index. Standardmäßig ist die Prüfung in Amazon DocumentDB deaktiviert und erfordert, dass Sie sich für die Nutzung dieser Funktion anmelden.
Wenn die Prüfung aktiviert ist, zeichnet Amazon DocumentDB Ereignisse in Data Definition Language (DDL), Data Manipulation Language (DML), Authentifizierung, Autorisierung und Benutzerverwaltung in Amazon CloudWatch Logs auf. Wenn Auditing aktiviert ist, exportiert Amazon DocumentDB die Auditing-Datensätze (JSONDokumente) Ihres Clusters nach Amazon CloudWatch Logs. Sie können Amazon CloudWatch Logs verwenden, um Ihre Amazon DocumentDB-Prüfungsereignisse zu analysieren, zu überwachen und zu archivieren.
Amazon DocumentDB berechnet zwar keine zusätzlichen Kosten für die Aktivierung der Prüfung, Ihnen werden jedoch Standardtarife für die Nutzung von CloudWatch Logs berechnet. Informationen zu den Preisen für CloudWatch Logs finden Sie unter CloudWatch Amazon-Preise
Die Amazon DocumentDB-Prüfungsfunktion unterscheidet sich deutlich von der Nutzung der Serviceressourcen, mit der überwacht wird. AWS CloudTrail CloudTrail zeichnet Operationen AWS Management Console auf, die mit AWS Command Line Interface (AWS CLI) oder mit Ressourcen wie Clustern, Instances, Parametergruppen und Snapshots ausgeführt werden. Die Überwachung von Ressourcen mit CloudTrail ist standardmäßig aktiviert und kann nicht deaktiviert werden. Die Amazon DocumentDB-Prüfungsfunktion ist eine optionale Funktion. Sie zeichnet Operationen auf, die innerhalb Ihres Clusters für Objekte, wie z. B. Datenbanken, Sammlungen, Indizes und Benutzer ausgeführt werden.
Themen
Unterstützte Ereignisse
Amazon DocumentDB DocumentDB-Auditing unterstützt die folgenden Ereigniskategorien:
-
Datendefinitionssprache (DDL) — umfasst Datenbankverwaltungsvorgänge, Verbindungen, Benutzerverwaltung und Autorisierung.
-
Leseereignisse (DMLLesevorgänge) in der Data Manipulation Language — umfasst
find()
die verschiedenen Aggregationsoperatoren, arithmetischen Operatoren, booleschen Operatoren und andere Leseabfrageoperatoren. -
Schreibereignisse (DMLSchreibvorgänge) in der Datenmanipulationssprache — beinhaltet Operatoren und
insert(), update(), delete(),
bulkWrite()
Folgende Ereignistypen werden unterstützt:
Ereignistyp | Kategorie | Beschreibung |
---|---|---|
authCheck |
Autorisierung | Ergebniscode 0: Erfolg |
Ergebniscode 13: Unbefugte Versuche, einen Vorgang auszuführen. | ||
authenticate |
Verbindung | Erfolgreiche oder fehlgeschlagene Authentifizierungsversuche bei einer neuen Verbindung. |
auditConfigure |
DDL | Überprüfen Sie die Filterkonfiguration. |
createDatabase |
DDL | Erstellung einer neuen Datenbank. |
createCollection |
DDL | Erstellung einer neuen Sammlung innerhalb einer Datenbank. |
createIndex |
DDL | Erstellung eines neuen Index innerhalb einer Sammlung. |
dropCollection |
DDL | Löschen einer Sammlung in einer Datenbank. |
dropDatabase |
DDL | Löschen einer Datenbank. |
dropIndex |
DDL | Löschen eines Index innerhalb einer Sammlung. |
modifyChangeStreams |
DDL | Der Change-Stream wurde erstellt. |
renameCollection |
DDL | Umbenennen einer Sammlung innerhalb einer Datenbank. |
createRole |
Rollenverwaltung | Eine Rolle erstellen. |
dropAllRolesFromDatabase |
Rollenverwaltung | Alle Rollen innerhalb einer Datenbank löschen. |
dropRole |
Rollenverwaltung | Eine Rolle löschen. |
grantPrivilegesToRole |
Rollenverwaltung | Einer Rolle Rechte gewähren. |
grantRolesToRole |
Rollenverwaltung | Einer benutzerdefinierten Rolle Rollen zuweisen |
revokePrivilegesFromRole |
Rollenverwaltung | Rechte einer Rolle entziehen. |
revokeRolesFromRole |
Rollenverwaltung | Sperren von Rollen aus einer benutzerdefinierten Rolle |
updateRole |
Rollenverwaltung | Eine Rolle aktualisieren. |
createUser |
Benutzerverwaltung | Anlegen eines neuen Benutzers. |
dropAllUsersFromDatabase |
Benutzerverwaltung | Löschen aller Benutzer innerhalb einer Datenbank. |
dropUser |
Benutzerverwaltung | Löschen eines bestehenden Benutzers. |
grantRolesToUser |
Benutzerverwaltung | Einem Benutzer Rollen zuweisen. |
revokeRolesFromUser |
Benutzerverwaltung | Einem Benutzer Rollen entziehen. |
updateUser |
UserManagement | Aktualisierung eines bestehenden Benutzers. |
insert |
DMLschreiben | Fügt ein oder mehrere Dokumente in eine Sammlung ein. |
delete |
DMLschreiben | Löscht ein oder mehrere Dokumente aus einer Sammlung. |
update |
DMLschreiben | Ändert ein vorhandenes Dokument oder Dokumente in einer Sammlung. |
bulkWrite |
DMLschreiben | Führt mehrere Schreiboperationen mit Steuerung der Ausführungsreihenfolge aus. |
setAuditConfig |
DMLschreiben | Stellen Sie einen neuen Filter für die DML Prüfung ein. |
count |
DMLlesen | Gibt die Anzahl der Dokumente zurück, die einer find () -Abfrage für die Sammlung oder Ansicht entsprechen würden. |
countDocuments |
DMLlesen | Gibt die Anzahl der Dokumente zurück, die der Abfrage für eine Sammlung oder Ansicht entsprechen. |
find |
DMLgelesen | Wählt Dokumente in einer Sammlung oder Ansicht aus und bringt einen Cursor zu den ausgewählten Dokumenten zurück. |
getAuditConfig |
DMLlesen | Ruft den aktuellen Filter für die DML Prüfung ab. |
findAndModify |
DMLlesen und DML schreiben | Ändert ein einzelnes Dokument und gibt es zurück. |
findOneAndDelete |
DMLliest und schreibt DML | Löscht ein einzelnes Dokument auf der Grundlage der Filter- und Sortierkriterien und gibt das gelöschte Dokument zurück. |
findOneAndReplace |
DMLliest und schreibt DML | Ersetzt ein einzelnes Dokument auf der Grundlage des angegebenen Filters. |
findOneAndUpdate |
DMLlesen und DML schreiben | Aktualisiert ein einzelnes Dokument auf der Grundlage der Filter- und Sortierkriterien. |
aggregate |
DMLliest und DML schreibt | Unterstützt APIs in der Aggregationspipeline. |
distinct |
DMLlesen | Findet die unterschiedlichen Werte für ein bestimmtes Feld in einer einzelnen Sammlung oder Ansicht und gibt die Ergebnisse in einem Array zurück. |
Anmerkung
Für Werte im Parameterfeld des DML Ereignisdokuments gilt eine Größenbeschränkung von 1 KB. Amazon DocumentDB kürzt den Wert, wenn er 1 KB überschreitet.
Anmerkung
TTLLöschereignisse werden derzeit nicht geprüft.
Überwachung wird aktiviert
Die Aktivierung des Prüfens für einen Cluster ist ein zweistufiger Prozess. Stellen Sie sicher, dass beide Schritte abgeschlossen sind, da andernfalls keine Auditprotokolle an CloudWatch Logs gesendet werden.
Schritt 1. Aktivieren Sie den Clusterparameter audit_logs
Um die Überwachung zu aktivieren, müssen Sie den audit_logs
Parameter in der Parametergruppe ändern. audit_logs
ist eine durch Kommas getrennte Liste von Ereignissen, die protokolliert werden sollen. Ereignisse müssen in Kleinbuchstaben angegeben werden und es darf kein Leerzeichen zwischen den Listenelementen sein.
Sie können die folgenden Werte für die Parametergruppe festlegen:
Wert | Beschreibung |
---|---|
ddl |
Diese Einstellung ermöglicht die Überwachung von DDL Ereignissen wiecreateDatabase,,dropDatabase,createCollection,dropCollection,,createIndex, dropIndexauthCheck, authenticate,, createUserdropUser, grantRolesTo User, revokeRolesFrom User,updateUser, und dropAllUsers FromDatabase |
dml_read |
Diese Einstellung ermöglicht die Prüfung von DML Leseereignissen wie find, sort count, distinct, group, projecta, unwind, geoNeargeoIntersects, geoWithin und anderen MongoDB-Leseabfrageoperatoren. |
dml_write |
Diese Einstellung ermöglicht die Überwachung von DML Schreibereignissen wie insert (), update (), delete () und () bulkWrite |
all |
Wenn Sie diese Einstellung festlegen, wird die Überwachung Ihrer Datenbankereignisse wie Leseabfragen, Schreibabfragen, Datenbankaktionen und Administratoraktionen aktiviert. |
none |
Wenn Sie diese Einstellung festlegen, wird die Überwachung deaktiviert |
enabled (veraltet) |
Dies ist eine ältere Parametereinstellung, die 'ddl' entspricht. Diese Einstellung ermöglicht die Überwachung von DDL Ereignissen wiecreateDatabase,,,dropDatabase,createCollection,dropCollection, createIndexdropIndex, authenticateauthCheck,,, grantRolesTo User createUserdropUser, revokeRolesFrom User, und. updateUser dropAllUsers FromDatabase Es wird nicht empfohlen, diese Einstellung zu verwenden, da es sich um eine ältere Einstellung handelt. |
disabled (veraltet) |
Dies ist eine ältere Parametereinstellung, die „none“ entspricht. Wir empfehlen, diese Einstellung nicht zu verwenden, da es sich um eine ältere Einstellung handelt. |
Anmerkung
Der Standardwert für den Clusterparameter audit_logs ist none
(legacy "disabled
„).
Sie können die oben genannten Werte auch in Kombinationen verwenden.
Wert | Beschreibung |
---|---|
ddl, dml_read |
Wenn Sie diese Einstellung festlegen, wird die Überwachung von DDL Ereignissen und DML Leseereignissen aktiviert. |
ddl, dml_write |
Wenn Sie diese Einstellung festlegen, wird die Überwachung von DDL Ereignissen und das DML Schreiben aktiviert |
dml_read, dml_write |
Wenn Sie diese Einstellung festlegen, wird die Überwachung für alle DML Ereignisse aktiviert |
Anmerkung
Eine Standardparametergruppe kann nicht abgeändert werden.
Weitere Informationen finden Sie hier:
-
Amazon DocumentDB-Cluster-Parametergruppen erstellen
Nach dem Erstellen einer Parametergruppe ändern Sie diese, indem Sie den
audit_logs
-Parameterwert aufall
ändern.
Schritt 2. Amazon CloudWatch Logs-Export aktivieren
Wenn der Wert des audit_logs
Cluster-Parametersenabled
,, oder dml_write
ist ddl
dml_read
, müssen Sie Amazon DocumentDB auch für den Export von Protokollen nach Amazon CloudWatch aktivieren. Wenn Sie einen dieser Schritte auslassen, werden keine Audit-Logs an gesendet. CloudWatch
Wenn Sie einen Cluster erstellen, einen Snapshot ausführen oder einen point-in-time-restore Snapshot wiederherstellen, können Sie CloudWatch Logs aktivieren, indem Sie die folgenden Schritte ausführen.
Auditing wird deaktiviert
Sie können die Überwachung deaktivieren, indem Sie den CloudWatch Protokollexport und den audit_logs
Parameter deaktivieren.
Den Export von Protokollen deaktivieren CloudWatch
Sie können den Export von Auditprotokollen entweder mit dem AWS Management Console oder dem AWS CLI deaktivieren.
Deaktivierung des Parameters audit_logs
Um den Parameter audit_logs
für Ihren Cluster zu deaktivieren, können Sie den Cluster so ändern, dass er eine Parametergruppe mit dem Wert disabled
für den Parameter audit_logs
verwendet. Sie können auch den Wert des Parameters audit_logs
in der Parametergruppe des Clusters in disabled
ändern.
Weitere Informationen finden Sie unter den folgenden Themen:
Zugriff auf Ihre Prüfereignisse
Gehen Sie wie folgt vor, um auf Ihre Prüfereignisse bei Amazon zuzugreifen CloudWatch.
Öffnen Sie die CloudWatch Konsole unter https://console.aws.amazon.com/cloudwatch/
. -
Stellen Sie sicher, dass Sie sich in derselben Region wie Ihr Amazon DocumentDB-Cluster befinden.
-
Wählen Sie im Navigationsbereich Protokolle aus.
-
Um die Prüfprotokolle für Ihren Cluster zu finden, suchen Sie in der Liste und wählen Sie
/aws/docdb/
aus.yourClusterName
/auditDie Prüfereignisse für Ihre Instances sind unter dem jeweiligen Instance-Namen verfügbar.
DMLPrüfereignisse filtern
Erste Schritte mit der DML Auditfilterung
DMLPrüfereignisse können gefiltert werden, bevor sie an Amazon geschrieben werden CloudWatch. Um diese Funktion nutzen zu können, müssen das Auditprotokoll und die DML Protokollierung aktiviert sein. Amazon DocumentDB unterstützt das Filtern nach atype
command
,user
,namespace
, undauditAuthorizationSuccess
.
Anmerkung
DDLEreignisse werden nicht gefiltert.
Sie können die Überwachungsfilterung jederzeit aktivieren, indem Sie den Überwachungsfilter mithilfe der auditAuthorizationSuccess
Parameter setAuditConfig
filter
, und im db.adminCommand( { command } )
Vorgang angeben:
db.admin.runCommand( { setAuditConfig: 1, filter: { //filter conditions }, auditAuthorizationSuccess: true | false } )
Sie können die Auditfiltereinstellungen auch abrufen, indem Sie den folgenden Befehl ausführen:
db.admin.runCommand( { getAuditConfig: 1})
Sicherheitsanforderungen
Nur Datenbankbenutzer/Rollen mit privilegierten Aktionen auditConfigure
können die oben genannten Befehle admindb
beim Setzen oder Auflisten von DML Auditfiltern ausführen. Sie können entweder eine der integrierten Rollen von [clusterAdmin
,hostManager
,root
] verwenden oder benutzerdefinierte Rollen mit Rechten erstellen. auditConfigure
Im Folgenden finden Sie ein Beispiel für die Verwendung vorhandener Rollen mit dieser auditConfigure
Berechtigung und ein Beispiel für benutzerdefinierte Rollen.
Benutzer mit integrierter Rolle:
use admin db.createUser( { user: "myClusterAdmin", pwd: "password123", roles: [ { role: "clusterAdmin", db: "admin" } ] } )
Benutzer mit benutzerdefinierten Rollen:
use admin db.createRole( { role: "myRole", privileges: [ { resource: { cluster: true }, actions: [ "auditConfigure" ] } ], roles: [] } ) db.createUser( { user: "myUser", pwd: "myPassword", roles: [ { role: "myRole", db: "admin" } ] } )
Anwendungsfälle filtern
Beispiel: Ereignisse nach Befehlen filtern
db.admin.runCommand( { setAuditConfig: 1, filter: { "$and": [ { "param.command": { $in: [ "find","count", "insert", "delete", "update", "findandmodify" ] } } ] }, auditAuthorizationSuccess: true } )
Beispiel: Ereignisse nach Benutzernamen filtern
In diesem Beispiel wird nur der Benutzer myUser "" protokolliert:
db.admin.runCommand( { setAuditConfig: 1, filter: { "$and": [ { "param.user": { $in: [ "myUser" ] } } ]}, auditAuthorizationSuccess: true})
Beispiel: Filtern nach atype
db.admin.runCommand( { setAuditConfig: 1, filter: {atype: "authCheck"}, auditAuthorizationSuccess: true })
Anmerkung
Alle DML Protokolle haben authCheck
alsatype
. DDLHat nur eine andereatype
. Wenn Sie einen anderen Wert als authCheck
in eingebenfilter
, führt dies nicht zu einer DML Anmeldung CloudWatch.
Beispiel: Filterung mithilfe mehrerer Filter, die durch Operatoren miteinander verbunden sind
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})
Anmerkung
Auf der obersten Ebene $nor
werden nur $and
$or
, und unterstützt. Alle anderen Operatoren werden nicht unterstützt und verursachen einen Fehler.
Beispiel: Filterung nach Ereignissen nach auditAuthorizationSuccess
In diesem Filter werden alle Befehle, die die Autorisierung erfolgreich bestanden haben, nicht protokolliert:
db.admin.runCommand( { setAuditConfig: 1, filter: {}, auditAuthorizationSuccess: false } )
Beispiel: Filtern mit $in
und $nin
-Bedingungen
Wenn Sie $in
sowohl in als auch verwenden$nin
, wird der Befehl nicht protokolliert, da zwischen den Bedingungen ein implizites „und“ steht. In diesem Beispiel blockiert Regex den find
Befehl, sodass nichts protokolliert wird:
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})
Beispiel: Filtern nach namespace
db.admin.runCommand( { setAuditConfig: 1, filter: { "$and": [ { "param.ns": { $in: [ "test.foo" ] } } ]}, auditAuthorizationSuccess: true})
Beispiel: Zurücksetzen auf den Standardfilter
Das Zurücksetzen auf den Standardwert bedeutet, dass jedes DML Prüfereignis protokolliert wird. Führen Sie den folgenden Befehl aus, um die Filterung auf den Standardwert zurückzusetzen:
db.admin.runCommand( { setAuditConfig: 1, filter: {}, auditAuthorizationSuccess: true } )