Inhalt des Auditprotokolls und Beispiele für Datenbankaktivitätsströme - 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.

Inhalt des Auditprotokolls und Beispiele für Datenbankaktivitätsströme

Überwachte Ereignisse werden im Datenbank-Aktivitätsstream als JSON Zeichenketten dargestellt. Die Struktur besteht aus einem JSON Objekt, das a enthältDatabaseActivityMonitoringRecord, das wiederum eine databaseActivityEventList Reihe von Aktivitätsereignissen enthält.

Prüfungsprotokollbeispiele für Aktivitäts-Streams

Im Folgenden finden Sie Beispiele für entschlüsselte JSON Auditprotokolle von Aktivitätsereignissen.

Beispiel Aufzeichnung des Aktivitätsereignisses einer Aurora SQL CONNECT SQL

Der folgende Aktivitätsereignisdatensatz zeigt eine Anmeldung unter Verwendung einer CONNECT SQL Anweisung (command) durch einen PSQL-Client (clientApplication) .

{ "type":"DatabaseActivityMonitoringRecords", "version":"1.1", "databaseActivityEvents": { "type":"DatabaseActivityMonitoringRecord", "clusterId":"cluster-4HNY5V4RRNPKKYB7ICFKE5JBQQ", "instanceId":"db-FZJTMYKCXQBUUZ6VLU7NW3ITCM", "databaseActivityEventList":[ { "startTime": "2019-10-30 00:39:49.940668+00", "logTime": "2019-10-30 00:39:49.990579+00", "statementId": 1, "substatementId": 1, "objectType": null, "command": "CONNECT", "objectName": null, "databaseName": "postgres", "dbUserName": "rdsadmin", "remoteHost": "172.31.3.195", "remotePort": "49804", "sessionId": "5ce5f7f0.474b", "rowCount": null, "commandText": null, "paramList": [], "pid": 18251, "clientApplication": "psql", "exitCode": null, "class": "MISC", "serverVersion": "2.3.1", "serverType": "PostgreSQL", "serviceName": "Amazon Aurora PostgreSQL-Compatible edition", "serverHost": "172.31.3.192", "netProtocol": "TCP", "dbProtocol": "Postgres 3.0", "type": "record", "errorMessage": null } ] }, "key":"decryption-key" }
Beispiel Aufzeichnung des Aktivitätsereignisses einer SQL CONNECT SQL Aussage von Aurora My

Der folgende Aktivitätsereignisdatensatz zeigt eine Anmeldung mithilfe einer CONNECT SQL Anweisung (command) durch einen MySQL-Client (clientApplication).

{ "type":"DatabaseActivityMonitoringRecord", "clusterId":"cluster-some_id", "instanceId":"db-some_id", "databaseActivityEventList":[ { "logTime":"2020-05-22 18:07:13.267214+00", "type":"record", "clientApplication":null, "pid":2830, "dbUserName":"rdsadmin", "databaseName":"", "remoteHost":"localhost", "remotePort":"11053", "command":"CONNECT", "commandText":"", "paramList":null, "objectType":"TABLE", "objectName":"", "statementId":0, "substatementId":1, "exitCode":"0", "sessionId":"725121", "rowCount":0, "serverHost":"master", "serverType":"MySQL", "serviceName":"Amazon Aurora MySQL", "serverVersion":"MySQL 5.7.12", "startTime":"2020-05-22 18:07:13.267207+00", "endTime":"2020-05-22 18:07:13.267213+00", "transactionId":"0", "dbProtocol":"MySQL", "netProtocol":"TCP", "errorMessage":"", "class":"MAIN" } ] }
Beispiel Aufzeichnung eines Aktivitätsereignisses Aurora Postgre-Erklärung SQL CREATE TABLE

Das folgende Beispiel zeigt ein CREATE TABLE Ereignis für Aurora Postgre, SQL .

{ "type":"DatabaseActivityMonitoringRecords", "version":"1.1", "databaseActivityEvents": { "type":"DatabaseActivityMonitoringRecord", "clusterId":"cluster-4HNY5V4RRNPKKYB7ICFKE5JBQQ", "instanceId":"db-FZJTMYKCXQBUUZ6VLU7NW3ITCM", "databaseActivityEventList":[ { "startTime": "2019-05-24 00:36:54.403455+00", "logTime": "2019-05-24 00:36:54.494235+00", "statementId": 2, "substatementId": 1, "objectType": null, "command": "CREATE TABLE", "objectName": null, "databaseName": "postgres", "dbUserName": "rdsadmin", "remoteHost": "172.31.3.195", "remotePort": "34534", "sessionId": "5ce73c6f.7e64", "rowCount": null, "commandText": "create table my_table (id serial primary key, name varchar(32));", "paramList": [], "pid": 32356, "clientApplication": "psql", "exitCode": null, "class": "DDL", "serverVersion": "2.3.1", "serverType": "PostgreSQL", "serviceName": "Amazon Aurora PostgreSQL-Compatible edition", "serverHost": "172.31.3.192", "netProtocol": "TCP", "dbProtocol": "Postgres 3.0", "type": "record", "errorMessage": null } ] }, "key":"decryption-key" }
Beispiel Aufzeichnung des Aktivitätsereignisses einer SQL CREATE TABLE Aussage von Aurora My

Das folgende Beispiel zeigt eine CREATE TABLE Anweisung für Aurora MySQL. Die Operation wird als zwei separate Ereignisdatensätze dargestellt. Das eine Ereignis verfügt über einen Wert "class":"MAIN". Das andere über einen Wert "class":"AUX". Die Nachrichten können in beliebiger Reihenfolge eintreffen. Das logTime-Feld des MAIN-Ereignisses ist immer früher als die logTime-Felder der entsprechenden AUX-Ereignisse.

Im folgenden Beispiel wird das Ereignis mit einem class-Wert von MAIN gezeigt.

{ "type":"DatabaseActivityMonitoringRecord", "clusterId":"cluster-some_id", "instanceId":"db-some_id", "databaseActivityEventList":[ { "logTime":"2020-05-22 18:07:12.250221+00", "type":"record", "clientApplication":null, "pid":2830, "dbUserName":"master", "databaseName":"test", "remoteHost":"localhost", "remotePort":"11054", "command":"QUERY", "commandText":"CREATE TABLE test1 (id INT)", "paramList":null, "objectType":"TABLE", "objectName":"test1", "statementId":65459278, "substatementId":1, "exitCode":"0", "sessionId":"725118", "rowCount":0, "serverHost":"master", "serverType":"MySQL", "serviceName":"Amazon Aurora MySQL", "serverVersion":"MySQL 5.7.12", "startTime":"2020-05-22 18:07:12.226384+00", "endTime":"2020-05-22 18:07:12.250222+00", "transactionId":"0", "dbProtocol":"MySQL", "netProtocol":"TCP", "errorMessage":"", "class":"MAIN" } ] }

Im folgenden Beispiel wird das entsprechende Ereignis mit einem class-Wert von AUX gezeigt.

{ "type":"DatabaseActivityMonitoringRecord", "clusterId":"cluster-some_id", "instanceId":"db-some_id", "databaseActivityEventList":[ { "logTime":"2020-05-22 18:07:12.247182+00", "type":"record", "clientApplication":null, "pid":2830, "dbUserName":"master", "databaseName":"test", "remoteHost":"localhost", "remotePort":"11054", "command":"CREATE", "commandText":"test1", "paramList":null, "objectType":"TABLE", "objectName":"test1", "statementId":65459278, "substatementId":2, "exitCode":"", "sessionId":"725118", "rowCount":0, "serverHost":"master", "serverType":"MySQL", "serviceName":"Amazon Aurora MySQL", "serverVersion":"MySQL 5.7.12", "startTime":"2020-05-22 18:07:12.226384+00", "endTime":"2020-05-22 18:07:12.247182+00", "transactionId":"0", "dbProtocol":"MySQL", "netProtocol":"TCP", "errorMessage":"", "class":"AUX" } ] }
Beispiel Aufzeichnung des Aktivitätsereignisses einer Aurora SQL SELECT

Das folgende Beispiel zeigt ein SELECT-Ereignis .

{ "type":"DatabaseActivityMonitoringRecords", "version":"1.1", "databaseActivityEvents": { "type":"DatabaseActivityMonitoringRecord", "clusterId":"cluster-4HNY5V4RRNPKKYB7ICFKE5JBQQ", "instanceId":"db-FZJTMYKCXQBUUZ6VLU7NW3ITCM", "databaseActivityEventList":[ { "startTime": "2019-05-24 00:39:49.920564+00", "logTime": "2019-05-24 00:39:49.940668+00", "statementId": 6, "substatementId": 1, "objectType": "TABLE", "command": "SELECT", "objectName": "public.my_table", "databaseName": "postgres", "dbUserName": "rdsadmin", "remoteHost": "172.31.3.195", "remotePort": "34534", "sessionId": "5ce73c6f.7e64", "rowCount": 10, "commandText": "select * from my_table;", "paramList": [], "pid": 32356, "clientApplication": "psql", "exitCode": null, "class": "READ", "serverVersion": "2.3.1", "serverType": "PostgreSQL", "serviceName": "Amazon Aurora PostgreSQL-Compatible edition", "serverHost": "172.31.3.192", "netProtocol": "TCP", "dbProtocol": "Postgres 3.0", "type": "record", "errorMessage": null } ] }, "key":"decryption-key" }
{ "type": "DatabaseActivityMonitoringRecord", "clusterId": "", "instanceId": "db-4JCWQLUZVFYP7DIWP6JVQ77O3Q", "databaseActivityEventList": [ { "class": "TABLE", "clientApplication": "Microsoft SQL Server Management Studio - Query", "command": "SELECT", "commandText": "select * from [testDB].[dbo].[TestTable]", "databaseName": "testDB", "dbProtocol": "SQLSERVER", "dbUserName": "test", "endTime": null, "errorMessage": null, "exitCode": 1, "logTime": "2022-10-06 21:24:59.9422268+00", "netProtocol": null, "objectName": "TestTable", "objectType": "TABLE", "paramList": null, "pid": null, "remoteHost": "local machine", "remotePort": null, "rowCount": 0, "serverHost": "172.31.30.159", "serverType": "SQLSERVER", "serverVersion": "15.00.4073.23.v1.R1", "serviceName": "sqlserver-ee", "sessionId": 62, "startTime": null, "statementId": "0x03baed90412f564fad640ebe51f89b99", "substatementId": 1, "transactionId": "4532935", "type": "record", "engineNativeAuditFields": { "target_database_principal_id": 0, "target_server_principal_id": 0, "target_database_principal_name": "", "server_principal_id": 2, "user_defined_information": "", "response_rows": 0, "database_principal_name": "dbo", "target_server_principal_name": "", "schema_name": "dbo", "is_column_permission": true, "object_id": 581577110, "server_instance_name": "EC2AMAZ-NFUJJNO", "target_server_principal_sid": null, "additional_information": "", "duration_milliseconds": 0, "permission_bitmask": "0x00000000000000000000000000000001", "data_sensitivity_information": "", "session_server_principal_name": "test", "connection_id": "AD3A5084-FB83-45C1-8334-E923459A8109", "audit_schema_version": 1, "database_principal_id": 1, "server_principal_sid": "0x010500000000000515000000bdc2795e2d0717901ba6998cf4010000", "user_defined_event_id": 0, "host_name": "EC2AMAZ-NFUJJNO" } } ] }
Beispiel Aufzeichnung des Aktivitätsereignisses einer SQL SELECT Aussage von Aurora My

Das folgende Beispiel zeigt ein SELECT-Ereignis.

Im folgenden Beispiel wird das Ereignis mit einem class-Wert von MAIN gezeigt.

{ "type":"DatabaseActivityMonitoringRecord", "clusterId":"cluster-some_id", "instanceId":"db-some_id", "databaseActivityEventList":[ { "logTime":"2020-05-22 18:29:57.986467+00", "type":"record", "clientApplication":null, "pid":2830, "dbUserName":"master", "databaseName":"test", "remoteHost":"localhost", "remotePort":"11054", "command":"QUERY", "commandText":"SELECT * FROM test1 WHERE id < 28", "paramList":null, "objectType":"TABLE", "objectName":"test1", "statementId":65469218, "substatementId":1, "exitCode":"0", "sessionId":"726571", "rowCount":2, "serverHost":"master", "serverType":"MySQL", "serviceName":"Amazon Aurora MySQL", "serverVersion":"MySQL 5.7.12", "startTime":"2020-05-22 18:29:57.986364+00", "endTime":"2020-05-22 18:29:57.986467+00", "transactionId":"0", "dbProtocol":"MySQL", "netProtocol":"TCP", "errorMessage":"", "class":"MAIN" } ] }

Im folgenden Beispiel wird das entsprechende Ereignis mit einem class-Wert von AUX gezeigt.

{ "type":"DatabaseActivityMonitoringRecord", "instanceId":"db-some_id", "databaseActivityEventList":[ { "logTime":"2020-05-22 18:29:57.986399+00", "type":"record", "clientApplication":null, "pid":2830, "dbUserName":"master", "databaseName":"test", "remoteHost":"localhost", "remotePort":"11054", "command":"READ", "commandText":"test1", "paramList":null, "objectType":"TABLE", "objectName":"test1", "statementId":65469218, "substatementId":2, "exitCode":"", "sessionId":"726571", "rowCount":0, "serverHost":"master", "serverType":"MySQL", "serviceName":"Amazon Aurora MySQL", "serverVersion":"MySQL 5.7.12", "startTime":"2020-05-22 18:29:57.986364+00", "endTime":"2020-05-22 18:29:57.986399+00", "transactionId":"0", "dbProtocol":"MySQL", "netProtocol":"TCP", "errorMessage":"", "class":"AUX" } ] }

DatabaseActivityMonitoringRecordsJSONObjekt

Die Datensätze der Datenbankaktivitätsereignisse befinden sich in einem JSON Objekt, das die folgenden Informationen enthält.

JSONFeld Datentyp Beschreibung

type

Zeichenfolge

Die Art des JSON Datensatzes. Der Wert ist DatabaseActivityMonitoringRecords.

version string Die Version der Datenbank-Aktivitätsüberwachungsdatensätze.

Die Version der generierten Datenbank-Aktivitätsdatensätze hängt von der Engine-Version des DB-Clusters ab:

  • Datenbankaktivitätsdatensätze der Version 1.1 werden für Aurora SQL Postgre-DB-Cluster generiert, auf denen die Engine-Versionen 10.10 und spätere Nebenversionen sowie die Engine-Versionen 11.5 und höher ausgeführt werden.

  • Datenbankaktivitätsdatensätze der Version 1.0 werden für Aurora SQL Postgre-DB-Cluster generiert, auf denen die Engine-Versionen 10.7 und 11.4 ausgeführt werden.

Alle folgenden Felder befinden sich sowohl in Version 1.0 als auch in Version 1.1, sofern nicht ausdrücklich angegeben.

databaseActivityEvents

Zeichenfolge

Ein JSON Objekt, das die Aktivitätsereignisse enthält.

Schlüssel Zeichenfolge Ein Verschlüsselungsschlüssel, den Sie zum Entschlüsseln des databaseActivityEventJSONArray auflisten verwenden

databaseActivityEvents JSONObjekt

Das databaseActivityEvents JSON Objekt enthält die folgenden Informationen.

Felder der obersten Ebene im Datensatz JSON

Jedes Ereignis im Auditprotokoll ist in einem Datensatz im JSON Format zusammengefasst. Dieser Datensatz enthält die folgenden Felder.

type

Dieses Feld hat immer den Wert DatabaseActivityMonitoringRecords.

Version

Dieses Feld stellt die Version des Datenprotokolls oder des Vertrags für die Datenbankaktivität dar. Es definiert, welche Felder verfügbar sind.

Version 1.0 stellt die ursprüngliche Unterstützung von Datenaktivitätsströmen für die Aurora SQL Postgre-Versionen 10.7 und 11.4 dar. Version 1.1 stellt die Unterstützung von Datenaktivitätsströmen für Aurora SQL Postgre-Versionen 10.10 und höher und Aurora Postgre SQL 11.5 und höher dar. Version 1.1 enthält die zusätzlichen Felder errorMessage und startTime. Version 1.2 stellt die Unterstützung von Datenaktivitätsströmen für Aurora My SQL 2.08 und höher dar. Version 1.2 enthält die zusätzlichen Felder endTime und transactionId.

databaseActivityEvents

Eine verschlüsselte Zeichenfolge, die ein oder mehrere Aktivitätsereignisse darstellt. Sie wird als Base64-Byte-Array dargestellt. Wenn Sie die Zeichenfolge entschlüsseln, ist das Ergebnis ein Datensatz im JSON Format mit Feldern, wie in den Beispielen in diesem Abschnitt gezeigt.

Schlüssel

Der verschlüsselte Datenschlüssel, der zum Verschlüsseln der databaseActivityEvents-Zeichenfolge verwendet wird. Dies ist derselbe AWS KMS key , den Sie beim Starten des Datenbank-Aktivitätsstreams angegeben haben.

Im folgenden Beispiel wird das Format dieses Datensatzes gezeigt.

{ "type":"DatabaseActivityMonitoringRecords", "version":"1.1", "databaseActivityEvents":"encrypted audit records", "key":"encrypted key" }

Führen Sie die folgenden Schritte aus, um den Inhalt des databaseActivityEvents-Feldes zu entschlüsseln:

  1. Entschlüsseln Sie den Wert im key JSON Feld mit dem KMS Schlüssel, den Sie beim Starten der Datenbank-Aktivitätsdatenbank angegeben haben. Dadurch wird der Datenverschlüsselungsschlüssel im Klartext zurückgegeben.

  2. Den Wert im databaseActivityEvents JSON Feld mit Base64 dekodieren, um den Geheimtext der Audit-Payload im Binärformat zu erhalten.

  3. Entschlüsseln Sie den binären Verschlüsselungstext mit dem Datenverschlüsselungsschlüssel, den Sie im ersten Schritt dekodiert haben.

  4. Dekomprimieren Sie die entschlüsselte Nutzlast.

    • Die verschlüsselte Nutzlast befindet sich im databaseActivityEvents-Feld.

    • Das databaseActivityEventList-Feld enthält ein Array von Prüfdatensätzen. Die type-Felder im Array können record oder sein heartbeat.

Der Aktivitätsdatensatz des Auditprotokolls ist ein JSON Objekt, das die folgenden Informationen enthält.

JSONFeld Datentyp Beschreibung

type

Zeichenfolge

Die Art des JSON Datensatzes. Der Wert ist DatabaseActivityMonitoringRecord.

clusterId string Die Ressourcen-ID des DB-Clusters. Sie entspricht dem DB-Clusterattribut DbClusterResourceId.
instanceId string Die Ressourcen-ID der DB-Instance. Sie dem DB-Instance-Attribut DbiResourceId.

databaseActivityEventJSONArray auflisten

string

Ein Array von Aktivitätsprüfdatensätzen oder Heartbeat-Nachrichten.