Contenu du journal d'audit et exemples de flux d'activité de base de données - Amazon Aurora

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.

Contenu du journal d'audit et exemples de flux d'activité de base de données

Les événements surveillés sont représentés dans le flux d'activité de la base de données sous forme de JSON chaînes. La structure consiste en un JSON objet contenant unDatabaseActivityMonitoringRecord, qui contient à son tour un databaseActivityEventList ensemble d'événements d'activité.

Exemples de journaux d'audit de flux d'activité

Vous trouverez ci-dessous des exemples de journaux d'JSONaudit déchiffrés contenant des enregistrements d'événements d'activité.

Exemple Enregistrement des événements d'activité d'un Aurora Postgre SQL CONNECT SQL

L'enregistrement d'événement d'activité suivant montre une connexion à l'aide d'une CONNECT SQL instruction (command) par un client psql (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" }
Exemple Enregistrement des événements d'activité d'un SQL CONNECT SQL relevé Aurora My

L'enregistrement d'événement d'activité suivant montre une connexion à l'aide d'une CONNECT SQL instruction (command) par un client MySQL (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" } ] }
Exemple Enregistrement des événements d'activité une déclaration Aurora Postgre SQL CREATE TABLE

L'exemple suivant montre un CREATE TABLE événement pour 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" }
Exemple Enregistrement des événements d'activité d'un SQL CREATE TABLE relevé Aurora My

L'exemple suivant montre une CREATE TABLE instruction pour Aurora MySQL. L'opération est représentée sous la forme de deux enregistrements d'événements distincts. Un événement a "class":"MAIN". L'autre événement a "class":"AUX". Les messages peuvent arriver dans n'importe quel ordre. Le champ logTime de l'événement MAIN est toujours antérieur au champ logTime des événements AUX correspondants.

L'exemple suivant montre l'événement avec une valeur class de MAIN.

{ "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" } ] }

L'exemple suivant montre l'événement correspondant avec une valeur class de AUX.

{ "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" } ] }
Exemple Enregistrement des événements d'activité d'un Aurora Postgre SQL SELECT

L'exemple suivant montre un événement SELECT .

{ "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" } } ] }
Exemple Enregistrement des événements d'activité d'un SQL SELECT relevé Aurora My

L'exemple suivant montre un événement SELECT.

L'exemple suivant montre l'événement avec une valeur class de MAIN.

{ "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" } ] }

L'exemple suivant montre l'événement correspondant avec une valeur class de AUX.

{ "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" } ] }

DatabaseActivityMonitoringRecordsJSONobjet

Les enregistrements des événements d'activité de la base de données se trouvent dans un JSON objet qui contient les informations suivantes.

JSONChamp Type de données Description

type

chaîne

Type d'JSONenregistrement. La valeur est DatabaseActivityMonitoringRecords.

version chaîne Version des enregistrements de surveillance d'activité de base de données.

La version des enregistrements d'activité de base de données générés dépend de la version du moteur du cluster de base de données.

  • Les enregistrements d'activité de base de données de la version 1.1 sont générés pour les clusters de SQL base de données Aurora Postgre exécutant les versions mineures du moteur 10.10 et ultérieures et les versions 11.5 et ultérieures du moteur.

  • Les enregistrements d'activité de base de données de la version 1.0 sont générés pour les clusters de SQL base de données Aurora Postgre exécutant les versions 10.7 et 11.4 du moteur.

Tous les champs suivants sont à la fois dans la version 1.0 et dans la version 1.1, sauf indication spécifique.

databaseActivityEvents

chaîne

Un JSON objet qui contient les événements de l'activité.

key chaîne Clé de chiffrement que vous utilisez pour déchiffrer databaseActivityEventJSONTableau de listes

databaseActivityEvents JSONObjet

L'databaseActivityEventsJSONobjet contient les informations suivantes.

Champs de premier niveau enregistrés JSON

Chaque événement du journal d'audit est encapsulé dans un enregistrement au JSON format. Cet enregistrement contient les champs suivants.

type

Ce champ a toujours la valeur DatabaseActivityMonitoringRecords.

version ;

Ce champ représente la version du contrat ou du protocole de données de flux d'activité de base de données. Il définit les champs disponibles.

La version 1.0 représente la prise en charge des flux d'activité de données d'origine pour les SQL versions 10.7 et 11.4 d'Aurora Postgre. La version 1.1 représente la prise en charge des flux d'activité de données pour Aurora Postgre SQL versions 10.10 et supérieures et Aurora Postgre SQL 11.5 et versions supérieures. La version 1.1 inclut les champs supplémentaires errorMessage et startTime. La version 1.2 représente la prise en charge des flux d'activité de données pour Aurora My SQL 2.08 et versions ultérieures. La version 1.2 inclut les champs supplémentaires endTime et transactionId.

databaseActivityEvents

Chaîne chiffrée représentant un ou plusieurs événements d'activité. Elle est représentée sou la forme d'un tableau base64 octets. Lorsque vous déchiffrez la chaîne, le résultat est un enregistrement au JSON format avec des champs, comme indiqué dans les exemples de cette section.

clé

Clé de données chiffrée utilisée pour chiffrer la chaîne databaseActivityEvents. Il s'agit du même AWS KMS key que celui que vous avez fourni lorsque vous avez démarré le flux d'activité de la base de données.

L'exemple suivant illustre le format de cet enregistrement.

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

Pour déchiffrer le contenu du champ databaseActivityEvents, procédez comme suit :

  1. Déchiffrez la valeur du key JSON champ à l'aide de la KMS clé que vous avez fournie lors du démarrage du flux d'activité de la base de données. Cette opération renvoie la clé de chiffrement des données en texte clair.

  2. Décodez en Base64 la valeur du databaseActivityEvents JSON champ pour obtenir le texte chiffré, au format binaire, de la charge utile d'audit.

  3. Déchiffrez le chiffrement binaire avec la clé de chiffrement de données que vous avez décodée au cours de la première étape.

  4. Décompressez la charge utile déchiffrée.

    • La charge utile chiffrée se trouve dans le champ databaseActivityEvents.

    • Le champ databaseActivityEventList contient un tableau d'enregistrements d'audits. Les champs type du tableau peuvent être record ou heartbeat.

L'enregistrement des événements d'activité du journal d'audit est un JSON objet qui contient les informations suivantes.

JSONChamp Type de données Description

type

chaîne

Type d'JSONenregistrement. La valeur est DatabaseActivityMonitoringRecord.

clusterId chaîne Identificateur de ressource de cluster de base de données. Il correspond à l'attribut de cluster de base de donnéesDbClusterResourceId.
instanceId chaîne Identificateur de ressource d'instance de base de données. Il correspond à l'attribut d'instance de base de données DbiResourceId.

databaseActivityEventJSONTableau de listes

chaîne

Tableau d'enregistrements d'audits d'activité ou de messages de pulsations.