databaseActivityEventJSON-Array für Datenbank-Aktivitätsstreams auflisten - Amazon Aurora

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.

databaseActivityEventJSON-Array für Datenbank-Aktivitätsstreams auflisten

Die Prüfprotokollnutzlast ist ein verschlüsseltes JSON-Array databaseActivityEventList. In der folgenden Tabelle sind die Felder für jedes Aktivitätsereignis im entschlüsselten Array DatabaseActivityEventList eines Prüfprotokolls alphabetisch aufgelistet. Die Felder unterscheiden sich je nachdem, ob Sie Aurora PostgreSQL oder Aurora MySQL verwenden. Näheres entnehmen Sie bitte der Tabelle, die für Ihre Datenbank-Engine gilt.

Wichtig

Die Ereignisstruktur kann sich ändern. Aurora könnte in Zukunft neue Felder zu Aktivitätsereignissen hinzufügen. Stellen Sie bei Anwendungen, welche die JSON-Daten analysieren, sicher, dass Ihr Code unbekannte Feldnamen ignorieren oder entsprechende Aktionen durchführen kann.

databaseActivityEventFelder für Aurora PostgreSQL auflisten

Die folgenden databaseActivityEventList Felder sind für Aurora PostgreSQL.

Feld Datentyp Beschreibung
class string

Die Aktivitätsereignisklasse. Gültige Werte für Aurora PostgreSQL sind die folgenden:

  • ALL

  • CONNECT – Ein Verbindungs- oder Verbindungstrennungsereignis.

  • DDL – eine DDL-Anweisung, die nicht in der Liste der Anweisungen für die Klasse ROLE enthalten ist.

  • FUNCTION – ein Funktionsaufruf oder ein DO-Block.

  • MISC – ein sonstiger Befehl wie z. B. DISCARD, FETCH, CHECKPOINT oder VACUUM.

  • NONE

  • READ – eine Anweisung SELECT oder COPY, wenn es sich bei der Quelle um eine Relation oder Abfrage handelt.

  • ROLE – eine Anweisung in Zusammenhang mit Rollen und Berechtigungen wie z. B. GRANT, REVOKE und CREATE/ALTER/DROP ROLE.

  • WRITE – eine Anweisung INSERT, UPDATE, DELETE, TRUNCATE, oder COPY, wenn das Ziel eine Relation ist.

clientApplication string Die Anwendung, die der Client laut Meldung für die Verbindung verwendet hat. Der Client muss diese Informationen nicht angeben, der Wert kann daher Null sein.
command string Der Name des SQL-Befehls ohne Befehlsdetails.
commandText string

Die vom Benutzer übergebene eigentliche SQL-Anweisung. Bei Aurora PostgreSQL ist der Wert identisch mit der ursprünglichen SQL-Anweisung. Dieses Feld wird für alle Arten von Datensätzen verwendet, mit Ausnahme von Verbindungs- oder Verbindungstrennungsdatensätzen, bei denen der Wert Null ist.

Wichtig

Der vollständige SQL-Text jeder Anweisung ist im Prüfprotokoll des Aktivitäts-Streams sichtbar, inklusive aller sensiblen Daten. Datenbankbenutzerkennwörter werden jedoch redigiert, wenn Aurora sie wie in der folgenden SQL-Anweisung aus dem Kontext ermitteln kann.

ALTER ROLE role-name WITH password
databaseName string Die Datenbank, zu der der Benutzer eine Verbindung hergestellt hat.
dbProtocol string Das Datenbankprotokoll, z. B. Postgres 3.0.
dbUserName string Der Datenbankbenutzer, mit dem sich der Client authentifiziert hat.
errorMessage

(nur Datenbank-Aktivitätsdatensätze der Version 1.1)

string

Wenn ein Fehler aufgetreten ist, wird dieses Feld mit der Fehlermeldung gefüllt, die vom DB-Server generiert worden wäre. Der errorMessage-Wert ist null für normale Anweisungen, die nicht zu einem Fehler geführt haben.

Ein Fehler wird als jede Aktivität definiert, die ein vom Client sichtbares PostgreSQL-Fehlerprotokollereignis mit einem Schweregrad von ERROR oder höher erzeugen würde. Weitere Informationen finden Sie unter PostgreSQL-Nachrichtenschweregrade. Beispielsweise erzeugen Syntaxfehler und Abfrageabbrüche eine Fehlermeldung.

Interne PostgreSQL-Serverfehler wie Hintergrund-Checkpointer-Prozessfehler erzeugen keine Fehlermeldung. Datensätze für solche Ereignisse werden jedoch weiterhin ausgegeben, unabhängig von der Einstellung des Schweregrads des Protokolls. Dadurch wird verhindert, dass Angreifer die Protokollierung deaktivieren, um eine Erkennung zu vermeiden.

Siehe auch das Feld exitCode.

exitCode int Ein Wert, der für einen Sitzungsbeendigungs-Datensatz verwendet wird. Bei einer sauberen Beendigung ist hier der Beendigungscode enthalten. In manchen Fehlersituationen kann nicht immer ein Beendigungscode erhalten werden. Beispiele: exit() von PostgreSQL oder Ausführung eines Befehls wie kill -9 durch einen Operator.

Wenn ein Fehler aufgetreten ist, zeigt das exitCode-Feld den SQL-Fehlercode SQLSTATE an, wie in PostgreSQL-Fehlercodes aufgeführt.

Siehe auch das Feld errorMessage.

logTime string Ein Zeitstempel wie im Prüfcodepfad aufgezeichnet. Dies stellt die Endzeit der SQL-Anweisungsausführung dar. Siehe auch das Feld startTime.
netProtocol string Das Netzwerkkommunikationsprotokoll.
objectName string Der Name des Datenbankobjekts, wenn die SQL-Anweisung für eines ausgeführt wird. Dieses Feld wird nur verwendet, wenn die SQL-Anweisung für ein Datenbankobjekt ausgeführt wird. Falls die SQL-Anweisung nicht für ein Objekt ausgeführt wird, lautet dieser Wert Null.
objectType string Der Datenbankobjekttyp wie z. B. Tabelle, Index, Ansicht usw. Dieses Feld wird nur verwendet, wenn die SQL-Anweisung für ein Datenbankobjekt ausgeführt wird. Falls die SQL-Anweisung nicht für ein Objekt ausgeführt wird, lautet dieser Wert Null. Gültige Werte sind unter anderem:
  • COMPOSITE TYPE

  • FOREIGN TABLE

  • FUNCTION

  • INDEX

  • MATERIALIZED VIEW

  • SEQUENCE

  • TABLE

  • TOAST TABLE

  • VIEW

  • UNKNOWN

paramList string Ein Array durch Kommas getrennter Parameter, die an die SQL-Anweisung übergeben werden. Wenn die SQL-Anweisung keine Parameter beinhaltet, ist dieser Wert ein leeres Array.
pid int Die Prozess-ID des Back-End-Prozesses, der für die Client-Verbindung zugewiesen wird.
remoteHost string Entweder die Client-IP-Adresse oder der Hostname. Was davon verwendet wird, ist bei Aurora PostgreSQL von der Parametereinstellung log_hostname der Datenbank abhängig. Der remoteHost Wert beinhaltet auch Aktivitäten des localhost Benutzers [local] und gibt diese anrdsadmin.
remotePort Zeichenfolge Die Portnummer des Clients.
rowCount int Die Anzahl der Tabellenzeilen, die von der SQL-Anweisung betroffen sind bzw. abgerufen werden. Dieses Feld wird nur für SQL-Anweisungen verwendet, bei denen es sich um DML-Anweisungen (DML = Data Manipulation Language) handelt. Falls die SQL-Anweisung keine DML-Anweisung ist, lautet dieser Wert Null.
serverHost Zeichenfolge Die Host-IP-Adresse des Datenbankservers. Der serverHost Wert umfasst auch Aktivitäten des rdsadmin Benutzers [local] und localhost welche darauf hinweisen.
serverType Zeichenfolge Der Datenbankservertyp, z. B PostgreSQL.
serverVersion string Die Datenbankserver-Version, z. B. 2.3.1 für Aurora PostgreSQL.
serviceName string Der Name des Service, beispielsweise Amazon Aurora PostgreSQL-Compatible edition.
sessionId int Eine pseudoeindeutige Sitzungskennung.
sessionId int Eine pseudoeindeutige Sitzungskennung.
startTime

(nur Datenbank-Aktivitätsdatensätze der Version 1.1)

string

Die Zeit, zu der die Ausführung für die SQL-Anweisung begann.

Um die ungefähre Ausführungszeit der SQL-Anweisung zu berechnen, verwenden Sie logTime - startTime. Siehe auch das Feld logTime.

statementId int Eine ID für die SQL-Anweisung des Clients. Dieser Zähler auf Sitzungsebene erhöht sich mit jeder vom Client eingegebenen SQL-Anweisung.
substatementId int Eine ID für eine SQL-Unteranweisung. Dieser Wert zählt die enthaltenen Unteranweisungen für jede über das Feld statementId angegebene SQL-Anweisung.
type string Der Ereignistyp. Gültige Werte sind record oder heartbeat.

databaseActivityEventFelder für Aurora MySQL auflisten

Die folgenden databaseActivityEventList Felder sind für Aurora MySQL.

Feld Datentyp Beschreibung
class string

Die Aktivitätsereignisklasse.

Gültige Werte für Aurora MySQL sind die folgenden:

  • MAIN – das primäre Ereignis, das eine SQL-Anweisung darstellt.

  • AUX – ein zusätzliches Ereignis, das zusätzliche Details enthält. Beispielsweise kann eine Anweisung, mit der ein Objekt umbenannt wird, ein Ereignis der Klasse AUX aufweisen, das den neuen Namen wiedergibt.

    Um MAIN- und AUX-Ereignisse zu finden, die derselben Anweisung entsprechen, suchen Sie nach verschiedenen Ereignissen, die dieselben Werte für das Feld pid und für das Feld statementId aufweisen.

clientApplication string Die Anwendung, die der Client laut Meldung für die Verbindung verwendet hat. Der Client muss diese Informationen nicht angeben, der Wert kann daher Null sein.
command string

Die allgemeine Kategorie der SQL-Anweisung. Die Werte für dieses Feld hängen vom Wert von a class.

Wenn class MAIN ist, enthalten die Werte Folgendes:

  • CONNECT – wenn eine Client-Sitzung verbunden ist.

  • QUERY – eine SQL-Anweisung. Ebenfalls enthalten sind ein oder mehrere Ereignisse mit einem class-Wert von AUX.

  • DISCONNECT – wenn eine Client-Sitzung getrennt wird.

  • FAILED_CONNECT – wenn ein Client versucht, eine Verbindung herzustellen, dies aber nicht möglich ist.

  • CHANGEUSER – eine Statusänderung, die Teil des MySQL-Netzwerkprotokolls ist und nicht aus einer von Ihnen ausgegebenen Anweisung stammt.

Wenn class AUX ist, enthalten die Werte Folgendes:

  • READ – eine Anweisung SELECT oder COPY, wenn es sich bei der Quelle um eine Relation oder Abfrage handelt.

  • WRITE – eine Anweisung INSERT, UPDATE, DELETE, TRUNCATE, oder COPY, wenn das Ziel eine Relation ist.

  • DROP – Löschen eines Objekts

  • CREATE – Erstellen eines Objekts.

  • RENAME – Umbenennen eines Objekts.

  • ALTER – Ändern der Eigenschaften eines Objekts.

commandText string

Bei Ereignissen mit dem class-Wert von MAIN stellt dieses Feld die tatsächliche, vom Benutzer eingegebene SQL-Anweisung dar. Dieses Feld wird für alle Arten von Datensätzen verwendet, mit Ausnahme von Verbindungs- oder Verbindungstrennungsdatensätzen, bei denen der Wert Null ist.

Bei Ereignissen mit einem class-Wert von AUX enthält dieses Feld zusätzliche Informationen über die am Ereignis beteiligten Objekte.

Bei Aurora MySQL wird Zeichen, z. B. Anführungszeichen, ein Backslash vorangestellt, der ein Escape-Zeichen darstellt.

Wichtig

Der vollständige SQL-Text jeder Anweisung ist im Prüfprotokoll sichtbar, inklusive aller sensiblen Daten. Datenbankbenutzerkennwörter werden jedoch redigiert, wenn Aurora sie wie in der folgenden SQL-Anweisung aus dem Kontext ermitteln kann.

mysql> SET PASSWORD = 'my-password';
Anmerkung

Geben Sie aus Sicherheitsgründen ein anderes Passwort als hier angegeben an.

databaseName Zeichenfolge Die Datenbank, zu der der Benutzer eine Verbindung hergestellt hat.
dbProtocol string Das Datenbankprotokoll. Derzeit ist dieser Wert bei Aurora MySQL immer MySQL.
dbUserName string Der Datenbankbenutzer, mit dem sich der Client authentifiziert hat.
endTime

(nur Datenbank-Aktivitätsdatensätze der Version 1.2)

string

Die Zeit, zu der die Ausführung für die SQL-Anweisung endete. Sie wird im UTC-Format (Coordinated Universal Time) dargestellt.

Um die Ausführungszeit der SQL-Anweisung zu berechnen, verwenden Sie endTime - startTime. Siehe auch das Feld startTime.

errorMessage

(nur Datenbank-Aktivitätsdatensätze der Version 1.1)

string

Wenn ein Fehler aufgetreten ist, wird dieses Feld mit der Fehlermeldung gefüllt, die vom DB-Server generiert worden wäre. Der errorMessage-Wert ist null für normale Anweisungen, die nicht zu einem Fehler geführt haben.

Ein Fehler wird als jede Aktivität definiert, die ein vom Client sichtbares MySQL-Fehlerprotokollereignis mit einem Schweregrad von ERROR oder höher erzeugen würde. Weitere Informationen finden Sie unter Fehlerprotokoll im MySQL-Referenzhandbuch. Beispielsweise erzeugen Syntaxfehler und Abfrageabbrüche eine Fehlermeldung.

Interne MySQL-Serverfehler wie Hintergrund-Checkpointer-Prozessfehler erzeugen keine Fehlermeldung. Datensätze für solche Ereignisse werden jedoch weiterhin ausgegeben, unabhängig von der Einstellung des Schweregrads des Protokolls. Dadurch wird verhindert, dass Angreifer die Protokollierung deaktivieren, um eine Erkennung zu vermeiden.

Siehe auch das Feld exitCode.

exitCode int Ein Wert, der für einen Sitzungsbeendigungs-Datensatz verwendet wird. Bei einer sauberen Beendigung ist hier der Beendigungscode enthalten. In manchen Fehlersituationen kann nicht immer ein Beendigungscode erhalten werden. In solchen Fällen kann dieser Wert Null oder leer sein.
logTime string Ein Zeitstempel wie im Prüfcodepfad aufgezeichnet. Sie wird im UTC-Format (Coordinated Universal Time) dargestellt. Die genaueste Methode zum Berechnen der Anweisungsdauer finden Sie in den Feldern startTime und endTime.
netProtocol string Das Netzwerkkommunikationsprotokoll. Derzeit ist dieser Wert bei Aurora MySQL immer TCP.
objectName string Der Name des Datenbankobjekts, wenn die SQL-Anweisung für eines ausgeführt wird. Dieses Feld wird nur verwendet, wenn die SQL-Anweisung für ein Datenbankobjekt ausgeführt wird. Falls die SQL-Anweisung nicht für ein Objekt ausgeführt wird, ist dieser Wert leer. Um den vollständig qualifizierten Namen des Objekts zu erstellen, kombinieren Sie databaseName und objectName. Wenn die Abfrage mehrere Objekte umfasst, kann dieses Feld eine durch Komma getrennte Liste von Namen sein.
objectType string

Der Datenbankobjekttyp, z. B. Tabelle, Index usw. Dieses Feld wird nur verwendet, wenn die SQL-Anweisung für ein Datenbankobjekt ausgeführt wird. Falls die SQL-Anweisung nicht für ein Objekt ausgeführt wird, lautet dieser Wert Null.

Gültige Werte für Aurora MySQL sind unter anderem:

  • INDEX

  • TABLE

  • UNKNOWN

paramList string Dieses Feld wird für Aurora MySQL nicht verwendet und ist immer Null.
pid int Die Prozess-ID des Back-End-Prozesses, der für die Client-Verbindung zugewiesen wird. Wenn der Datenbankserver neu gestartet wird, ändert sich die pid und der Zähler für das Feld statementId beginnt von vorn.
remoteHost string Entweder die IP-Adresse oder der Hostname des Clients, der die SQL-Anweisung ausgegeben hat. Was davon verwendet wird, ist bei Aurora MySQL von der Parametereinstellung skip_name_resolve der Datenbank abhängig. Der Wert localhost gibt die Aktivität des speziellen Benutzers rdsadmin an.
remotePort string Die Portnummer des Clients.
rowCount int Die Anzahl der Zeilen, die von der SQL-Anweisung zurückgegeben werden. Wenn eine SELECT-Anweisung beispielsweise 10 Zeilen zurückgibt, beträgt rowCount 10. Für INSERT- oder UPDATE-Anweisungen ist der RowCount 0.
serverHost Zeichenfolge Die Datenbankserver-Instance-ID.
serverType Zeichenfolge Der Datenbankservertyp, z. B MySQL.
serverVersion string Die Version des Datenbankservers. Derzeit ist dieser Wert bei Aurora MySQL immer MySQL 5.7.12.
serviceName string Name des Service. Derzeit ist dieser Wert bei Aurora MySQL immer Amazon Aurora MySQL.
sessionId int Eine pseudoeindeutige Sitzungskennung.
startTime

(nur Datenbank-Aktivitätsdatensätze der Version 1.1)

string

Die Zeit, zu der die Ausführung für die SQL-Anweisung begann. Sie wird im UTC-Format (Coordinated Universal Time) dargestellt.

Um die Ausführungszeit der SQL-Anweisung zu berechnen, verwenden Sie endTime - startTime. Siehe auch das Feld endTime.

statementId int Eine ID für die SQL-Anweisung des Clients. Der Zähler erhöht sich mit jeder vom Client eingegebenen SQL-Anweisung. Der Zähler wird zurückgesetzt, wenn die DB-Instance neu gestartet wird.
substatementId int Eine ID für eine SQL-Unteranweisung. Dieser Wert ist 1 für Ereignisse mit der Klasse MAIN und 2 für Ereignisse mit der Klasse AUX. Verwenden Sie das statementId-Feld, um alle Ereignisse zu identifizieren, die von derselben Anweisung generiert werden.
transactionId

(nur Datenbank-Aktivitätsdatensätze der Version 1.2)

int Eine ID für eine Transaktion.
type string Der Ereignistyp. Gültige Werte sind record oder heartbeat.