Conteúdo do log de auditoria e exemplos de log de fluxos de atividade do banco de dados
Os eventos monitorados são representados no fluxo de atividade do banco de dados como strings JSON. A estrutura consiste em um objeto JSON que contém um DatabaseActivityMonitoringRecord, que, por sua vez, contém uma matriz databaseActivityEventList de eventos de atividade.
nota
Para fluxos de atividades do banco de dados, a matriz JSON paramList não inclui valores nulos de aplicações Hibernate.
Tópicos
Exemplos de log de auditoria para fluxos de atividade
Veja a seguir exemplos de log de auditoria JSON descriptografados de registros de evento de atividade.
exemplo Registro de evento de atividade de uma instrução SQL CONNECT do Aurora PostgreSQL
O registro de eventos de atividade a seguir mostra um login com o uso de uma instrução SQL CONNECT (command) por um cliente 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" }
exemplo Registro de evento de atividade de uma instrução SQL CONNECT do Aurora MySQL
O registro de eventos de atividade a seguir mostra um login com o uso de uma instrução SQL CONNECT (command) por um cliente 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" } ] }
exemplo Registro de evento de atividades de uma instrução CREATE TABLE do Aurora PostgreSQL
O exemplo a seguir mostra um evento CREATE TABLE para o Aurora PostgreSQL.
{ "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" }
exemplo Registro de evento de atividade de uma instrução CREATE TABLE do Aurora MySQL
O exemplo a seguir mostra uma instrução CREATE TABLE para o Aurora MySQL. A operação é representada como dois registros de eventos separados. Um evento tem "class":"MAIN". O outro evento tem "class":"AUX". As mensagens podem chegar em qualquer ordem. O campo logTime do evento MAIN é sempre anterior aos campos logTime de quaisquer eventos AUX correspondentes.
O exemplo a seguir mostra o evento com um valor 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" } ] }
O exemplo a seguir mostra o evento correspondente a um valor 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" } ] }
exemplo Registro de evento de atividades de uma instrução SELECT do Aurora PostgreSQL
O exemplo a seguir mostra um evento 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" } } ] }
exemplo Registro de evento de atividade de uma instrução SELECT do Aurora MySQL
O exemplo a seguir mostra um evento SELECT.
O exemplo a seguir mostra o evento com um valor 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" } ] }
O exemplo a seguir mostra o evento correspondente a um valor 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" } ] }
Objeto JSON DatabaseActivityMonitoringRecords
Os registros de eventos de atividade de banco de dados estão em um objeto JSON que contém as informações a seguir.
| Campo JSON | Tipo de dados | Descrição |
|---|---|---|
|
|
string |
O tipo de registro JSON. O valor é |
version |
string | A versão dos registros de monitoramento de atividade de banco de dados. A versão dos registros de atividade de banco de dados gerados depende da versão do mecanismo do cluster de banco de dados:
Todos os campos a seguir estão na versão 1.0 e na versão 1.1, exceto quando indicado especificamente. |
| string |
Um objeto JSON que contém os eventos de atividade. |
|
| key | string | Uma chave de criptografia que você usa para descriptografar o Matriz JSON databaseActivityEventList |
Objeto JSON databaseActivityEvents
O objeto JSON databaseActivityEvents contém as informações a seguir.
Campos de nível superior no registro JSON
Cada evento no log de auditoria é incluído em um registro no formato JSON. Esse registro contém os campos a seguir.
- type
-
Esse campo sempre tem o valor
DatabaseActivityMonitoringRecords. - versão
-
Esse campo representa a versão do contrato ou do protocolo de dados de streaming da atividade do banco de dados. Define quais campos estão disponíveis.
A versão 1.0 representa o suporte de fluxos de atividades de dados originais para o Aurora PostgreSQL versões 10.7 e 11.4. A versão 1.1 representa o suporte de fluxos de atividades de dados para o Aurora PostgreSQL versões 10.10 e posterior e o Aurora PostgreSQL 11.5 e posterior. A versão 1.1 inclui os campos adicionais
errorMessageestartTime. A versão 1.2 representa o suporte de fluxos de atividades de dados para o Aurora MySQL 2.08 e posterior. A versão 1.2 inclui os campos adicionaisendTimeetransactionId. - databaseActivityEvents
-
Uma string criptografada que representa um ou mais eventos de atividade. Ela é representada como uma matriz de bytes base64. Quando você descriptografa a string, o resultado é um registro no formato JSON com campos, conforme mostrado nos exemplos nesta seção.
- chave
-
A chave de dados criptografada usada para criptografar a string
databaseActivityEvents. Esta é a mesma AWS KMS key que você forneceu ao iniciar o fluxo de atividade do banco de dados.
O exemplo a seguir mostra o formato desse registro.
{ "type":"DatabaseActivityMonitoringRecords", "version":"1.1", "databaseActivityEvents":"encrypted audit records", "key":"encrypted key" }
Siga as seguintes etapas para descriptografar o conteúdo do campo databaseActivityEvents:
-
Descriptografe o valor no campo JSON da
keyusando a chave do KMS que forneceu ao iniciar o fluxo de atividade do banco de dados. Fazer isso retorna a chave de criptografia de dados em texto não criptografado. -
Decodifique em base64 o valor no campo JSON
databaseActivityEventspara obter o texto cifrado, em formato binário, da carga útil de auditoria. -
Descriptografe o texto cifrado binário com a chave de criptografia de dados que você decodificou na primeira etapa.
-
Descompacte a carga útil descriptografada.
-
A carga criptografada está no campo
databaseActivityEvents. -
O campo
databaseActivityEventListcontém uma matriz de registros de auditoria. Os campostypena matriz podem serrecordouheartbeat.
-
O registro do evento de atividade do log de auditoria é um objeto JSON que contém as informações a seguir.
| Campo JSON | Tipo de dados | Descrição |
|---|---|---|
|
|
string |
O tipo de registro JSON. O valor é |
clusterId |
string | O identificador de recurso de cluster de banco de dados. Corresponde ao atributo de cluster de banco de dados DbClusterResourceId. |
instanceId |
string | O identificador de recurso da instância de banco de dados. Ele corresponde ao atributo de instância de banco de dados DbiResourceId. |
| string |
Uma matriz de registros de auditoria de atividade ou mensagens de pulsação. |