Matriz JSON databaseActivityEventList para fluxos de atividades de banco de dados - Amazon Aurora

Matriz JSON databaseActivityEventList para fluxos de atividades de banco de dados

A carga do log de auditoria é uma matriz JSON databaseActivityEventList criptografada. A tabela a seguir lista em ordem alfabética os campos para cada evento de atividade na matriz DatabaseActivityEventList descriptografada de um log de auditoria. Os campos vão diferir, se você usar o Aurora PostgreSQL ou o Aurora MySQL. Consulte a tabela que se aplica ao mecanismo de banco de dados.

Importante

A estrutura do evento está sujeita a alterações. O Aurora pode adicionar novos campos a eventos de atividade no futuro. Em aplicações que analisam os dados JSON, confirme se o código pode ignorar ou executar ações apropriadas para nomes de campo desconhecidos.

Campos databaseActivityEventList para o Aurora PostgreSQL

Veja a seguir campos databaseActivityEventList do Aurora PostgreSQL.

Campo Tipo de dados Descrição
class string

A classe do evento de atividade. Os valores válidos para o Aurora PostgreSQL são os seguintes:

  • ALL

  • CONNECT: um evento de conexão ou desconexão.

  • DDL: uma instrução DDS que não está incluída na lista de instruções da classe ROLE.

  • FUNCTION: uma chamada de função ou um bloco DO.

  • MISC: um comando diverso, como DISCARD, FETCH, CHECKPOINT ou VACUUM.

  • NONE

  • READ: uma instrução SELECT ou COPY quando a origem é uma relação ou uma consulta.

  • ROLE: uma instrução relacionada a funções e privilégios incluindo GRANT, REVOKE e CREATE/ALTER/DROP ROLE.

  • WRITE: uma instrução INSERT, UPDATE, DELETE, TRUNCATE ou COPY quando o destino é uma relação.

clientApplication string O aplicativo que o cliente usou para conectar-se conforme reportado pelo cliente. O cliente não precisa fornecer essas informações, então o valor pode ser nulo.
command string O nome do comando SQL sem nenhum detalhe do comando.
commandText string

A real instrução SQL transmitida pelo usuário. No Aurora PostgreSQL, o valor é idêntico à instrução SQL original. Este campo é usado para todos os tipos de registros, exceto para registros de conexão ou desconexão e, nesse caso, o valor é nulo.

Importante

O texto SQL completo de cada instrução é visível no log de auditoria do stream de atividades, incluindo quaisquer dados confidenciais. No entanto, as senhas do usuário do banco de dados serão editadas se o Aurora puder determiná-las pelo contexto, como na instrução SQL a seguir.

ALTER ROLE role-name WITH password
databaseName string O banco de dados ao qual o usuário se conectou.
dbProtocol string O protocolo de banco de dados, por exemplo Postgres 3.0.
dbUserName string O usuário do banco de dados com o qual o cliente foi autenticado.
errorMessage

(somente registros de atividade de banco de dados da versão 1.1)

string

Se houver algum erro, esse campo será preenchido com a mensagem de erro que seria gerada pelo servidor de banco de dados. O valor errorMessage é nulo para instruções normais que não resultaram em um erro.

Um erro é definido como qualquer atividade que produziria um evento de log de erro PostgreSQL visível para o cliente em um nível de gravidade igual a ERROR ou superior. Para obter mais informações, consulte PostgreSQL Message Severity Levels. Por exemplo, erros de sintaxe e cancelamentos de consulta geram uma mensagem de erro.

Erros internos do servidor PostgreSQL, como erros de processo de checkpointer em segundo plano, não geram uma mensagem de erro. No entanto, os registros para esses eventos ainda são emitidos independentemente da configuração do nível de gravidade do log. Isso impede que os invasores desativem o registro em log para tentar evitar a detecção.

Veja também o campo exitCode.

exitCode int Um valor usado para um registro de saída de sessão. Em uma saída limpa, isso contém o código de saída. Um código de saída não pode ser sempre obtido em alguns cenários de falha. Exemplos são se o PostgreSQL fizer um exit() ou se um operador realizar um comando como um kill -9.

Se houver algum erro, o campo exitCode exibirá o código de erro SQL, SQLSTATE, conforme listado em PostgreSQL Error Codes.

Veja também o campo errorMessage.

logTime string Um time stamp como registrado no caminho do código de auditoria. Isso representa a hora de término da execução da instrução SQL. Veja também o campo startTime.
netProtocol string O protocolo de comunicação da rede
objectName string O nome do objeto do banco de dados se a instrução SQL estiver operando em um. Este campo será usado somente quando a instrução SQL operar em um objeto de banco de dados. Se a instrução SQL não estiver operando em um objeto, esse valor será nulo.
objectType string O tipo do objeto de banco de dados, como tabela, índice, visualização etc. Este campo será usado somente quando a instrução SQL operar em um objeto de banco de dados. Se a instrução SQL não estiver operando em um objeto, esse valor será nulo. Entre os valores válidos estão os seguintes:
  • COMPOSITE TYPE

  • FOREIGN TABLE

  • FUNCTION

  • INDEX

  • MATERIALIZED VIEW

  • SEQUENCE

  • TABLE

  • TOAST TABLE

  • VIEW

  • UNKNOWN

paramList string Uma matriz de parâmetros separados por vírgulas transmitidos à instrução SQL. Se a instrução SQL não tiver parâmetros, esse valor será uma matriz vazia.
pid int O ID do processo de backend que está alocado para atender à conexão do cliente.
remoteHost string O endereço IP do cliente ou o nome do host. No Aurora PostgreSQL, qual deles é usado depende da configuração do parâmetro log_hostname de banco de dados. O valor remoteHost também inclui [local] e localhost que indicam a atividade do usuário rdsadmin.
remotePort string O número da porta do cliente.
rowCount int O número de linhas retornado pela instrução SQL. Por exemplo, se uma instrução SELECT retornar 10 linhas, rowCount será 10. Para instruções INSERT ou UPDATE, rowCount é 0.
serverHost string O endereço IP do host do servidor do banco de dados. O valor serverHost também inclui [local] e localhost que indicam a atividade do usuário rdsadmin.
serverType string O tipo de servidor do banco de dados, por exemplo PostgreSQL.
serverVersion string A versão do servidor de banco de dados, por exemplo, 2.3.1 para o Aurora PostgreSQL.
serviceName string O nome do serviço, por exemplo Amazon Aurora PostgreSQL-Compatible edition.
sessionId int Um identificador de sessão pseudo-exclusivo.
sessionId int Um identificador de sessão pseudo-exclusivo.
startTime

(somente registros de atividade de banco de dados da versão 1.1)

string

A hora em que a execução começou para a instrução SQL.

Para calcular o tempo aproximado de execução da instrução SQL, use logTime - startTime. Veja também o campo logTime.

statementId int Um identificador para a instrução SQL do cliente. O contador está no nível da sessão e incrementa com cada instrução SQL inserida pelo cliente.
substatementId int Um identificador para uma substituição SQL. Esse valor conta as subinstruções contidas para cada instrução SQL identificada pelo campo statementId.
type string O tipo de evento. Os valores válidos são record ou heartbeat.

Campos databaseActivityEventList para o Aurora MySQL

Veja a seguir campos databaseActivityEventList do Aurora MySQL.

Campo Tipo de dados Descrição
class string

A classe do evento de atividade.

Os valores válidos para o Aurora MySQL são os seguintes:

  • MAIN: o evento principal que representa uma instrução SQL.

  • AUX: um evento complementar que contém detalhes adicionais. Por exemplo, uma instrução que renomeie um objeto pode ter um evento com classe AUX que reflete o novo nome.

    Para localizar eventos MAIN e AUX correspondentes à mesma instrução, verifique se há eventos diferentes que tenham os mesmos valores para o campo pid e o campo statementId.

clientApplication string O aplicativo que o cliente usou para conectar-se conforme reportado pelo cliente. O cliente não precisa fornecer essas informações, então o valor pode ser nulo.
command string

A categoria geral da instrução SQL. Os valores para este campo dependem do valor de class.

Os valores quando class é MAIN incluem o seguinte:

  • CONNECT: quando uma sessão de cliente está conectada.

  • QUERY: uma instrução SQL. Acompanhado por um ou mais eventos com um valor class de AUX.

  • DISCONNECT: quando uma sessão de cliente é desconectada.

  • FAILED_CONNECT: quando um cliente tenta se conectar, mas não consegue.

  • CHANGEUSER: uma alteração de estado que faz parte do protocolo de rede MySQL, não de uma instrução que você emite.

Os valores quando class é AUX incluem o seguinte:

  • READ: uma instrução SELECT ou COPY quando a origem é uma relação ou uma consulta.

  • WRITE: uma instrução INSERT, UPDATE, DELETE, TRUNCATE ou COPY quando o destino é uma relação.

  • DROP: excluir um objeto.

  • CREATE: criar um objeto.

  • RENAME: renomear um objeto.

  • ALTER: alterar as propriedades de um objeto.

commandText string

Para eventos com um valor class de MAIN, esse campo representa a instrução SQL real passada pelo usuário. Este campo é usado para todos os tipos de registros, exceto para registros de conexão ou desconexão e, nesse caso, o valor é nulo.

Para eventos com um valor class de AUX, esse campo contém informações complementares sobre os objetos envolvidos no evento.

No Aurora MySQL, caracteres como aspas são precedidos por uma barra invertida, representando um caractere de escape.

Importante

O texto SQL completo de cada instrução é visível no log de auditoria, incluindo quaisquer dados confidenciais. No entanto, as senhas do usuário do banco de dados serão editadas se o Aurora puder determiná-las pelo contexto, como na instrução SQL a seguir.

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

Especifique uma senha diferente do prompt mostrado aqui como prática recomendada de segurança.

databaseName string O banco de dados ao qual o usuário se conectou.
dbProtocol string o protocolo do banco de dados. Atualmente, esse valor é sempre MySQL para o Aurora MySQL.
dbUserName string O usuário do banco de dados com o qual o cliente foi autenticado.
endTime

(somente registros de atividade de banco de dados da versão 1.2)

string

A hora em que a execução terminou para a instrução SQL. Ela é representada no formato de Tempo Universal Coordenado (UTC).

Para calcular o tempo de execução da instrução SQL, use endTime - startTime. Veja também o campo startTime.

errorMessage

(somente registros de atividade de banco de dados da versão 1.1)

string

Se houver algum erro, esse campo será preenchido com a mensagem de erro que seria gerada pelo servidor de banco de dados. O valor errorMessage é nulo para instruções normais que não resultaram em um erro.

Um erro é definido como qualquer atividade que produziria um evento de log de erro MySQL visível para o cliente em um nível de gravidade igual a ERROR ou superior. Para obter mais informações, consulte The Error Log no Guia de referência do MySQL. Por exemplo, erros de sintaxe e cancelamentos de consulta geram uma mensagem de erro.

Erros internos do servidor MySQL, como erros de processo de checkpointer em segundo plano, não geram uma mensagem de erro. No entanto, os registros para esses eventos ainda são emitidos independentemente da configuração do nível de gravidade do log. Isso impede que os invasores desativem o registro em log para tentar evitar a detecção.

Veja também o campo exitCode.

exitCode int Um valor usado para um registro de saída de sessão. Em uma saída limpa, isso contém o código de saída. Um código de saída não pode ser sempre obtido em alguns cenários de falha. Nesses casos, esse valor pode ser zero ou pode estar em branco.
logTime string Um time stamp como registrado no caminho do código de auditoria. Ela é representada no formato de Tempo Universal Coordenado (UTC). Para obter a maneira mais precisa de calcular a duração da instrução, consulte os campos startTime e endTime.
netProtocol string O protocolo de comunicação da rede Atualmente, esse valor é sempre TCP para o Aurora MySQL.
objectName string O nome do objeto do banco de dados se a instrução SQL estiver operando em um. Este campo será usado somente quando a instrução SQL operar em um objeto de banco de dados. Se a instrução SQL não estiver operando em um objeto, esse valor estará em branco. Para construir o nome totalmente qualificado do objeto, combine databaseName e objectName. Se a consulta envolver vários objetos, esse campo pode ser uma lista de nomes separada por vírgulas.
objectType string

O tipo do objeto de banco de dados, como tabela, índice etc. Este campo será usado somente quando a instrução SQL operar em um objeto de banco de dados. Se a instrução SQL não estiver operando em um objeto, esse valor será nulo.

Os valores válidos para o Aurora MySQL incluem o seguinte:

  • INDEX

  • TABLE

  • UNKNOWN

paramList string Este campo não é usado para o Aurora MySQL e é sempre nulo.
pid int O ID do processo de backend que está alocado para atender à conexão do cliente. Quando o servidor de banco de dados é reiniciado, o pid é alterado e o contador do campo statementId recomeça a contagem.
remoteHost string O endereço IP ou o nome do host do cliente que emitiu a instrução SQL. No Aurora MySQL, qual deles é usado depende da configuração do parâmetro skip_name_resolve de banco de dados. O valor localhost indica atividade do usuário especial rdsadmin.
remotePort string O número da porta do cliente.
rowCount int O número de linhas da tabela afetadas ou recuperadas pela instrução SQL. Este campo é usado somente para instruções SQL que são instruções da linguage de manipulação de dados (DML). Se a instrução SQL não for uma instrução DML, esse valor será nulo.
serverHost string O identificador da instância do servidor de banco de dados.
serverType string O tipo de servidor do banco de dados, por exemplo MySQL.
serverVersion string A versão do servidor do banco de dados. Atualmente, esse valor é sempre MySQL 5.7.12 para o Aurora MySQL.
serviceName string O nome do serviço da Atualmente, esse valor é sempre Amazon Aurora MySQL para o Aurora MySQL.
sessionId int Um identificador de sessão pseudo-exclusivo.
startTime

(somente registros de atividade de banco de dados da versão 1.1)

string

A hora em que a execução começou para a instrução SQL. Ela é representada no formato de Tempo Universal Coordenado (UTC).

Para calcular o tempo de execução da instrução SQL, use endTime - startTime. Veja também o campo endTime.

statementId int Um identificador para a instrução SQL do cliente. O contador incrementa com cada instrução SQL inserida pelo cliente. O contador é redefinido quando a instância de banco de dados é reiniciada.
substatementId int Um identificador para uma substituição SQL. Este valor é 1 para eventos com classe MAIN e 2 para eventos com classe AUX. Use o campo statementId para identificar todos os eventos gerados pela mesma instrução.
transactionId

(somente registros de atividade de banco de dados da versão 1.2)

int Um identificador para uma transação.
type string O tipo de evento. Os valores válidos são record ou heartbeat.