Registro em log da auditoria de banco de dados - Amazon Redshift

Registro em log da auditoria de banco de dados

O Amazon Redshift registra informações sobre conexões e atividades do usuário em seu banco de dados. Esses logs ajudam a monitorar o banco de dados para fins de segurança e solução de problemas, um processo conhecido como auditoria de banco de dados. Os logs podem ser armazenados em:

  • Buckets do Amazon S3: eles fornecem acesso com recursos de segurança de dados a usuários responsáveis por monitorar atividades no banco de dados.

  • Amazon CloudWatch: é possível visualizar dados de log de auditoria usando os recursos incorporados ao CloudWatch, como de visualização e ações de configuração.

nota

SYS_CONNECTION_LOG coleta dados de log de conexão para o Amazon Redshift sem servidor. Quando você coleta dados de logs de auditoria para o Amazon Redshift sem servidor, não é possível enviá-los a arquivos de log, somente ao CloudWatch.

Logs do Amazon Redshift

O Amazon Redshift registra informações nos seguintes arquivos de log:

  • Log de conexão: registra tentativas de autenticação, conexões e desconexões.

  • Log do usuário: registra informações sobre as alterações nas definições do usuário do banco de dados.

  • Log de atividades do usuário: registra cada consulta antes de ser executada no banco de dados.

Os logs de conexão e de usuário são úteis principalmente para fins de segurança. É possível usar o log de conexão para monitorar informações sobre os usuários que estão se conectando ao banco de dados e informações relacionadas às conexões. Essas informações podem ser seus endereços IP, quando fizeram a solicitação, o tipo de autenticação que usaram e assim por diante. Você pode usar o log do usuário para monitorar alterar feitas nas definições dos usuários do banco de dados.

O log de atividade do usuário é útil principalmente para fins de solução de problemas. Ele acompanha informações sobre os tipos de consultas que os usuários e o sistema realizam no banco de dados.

O log de conexão e o log do usuário correspondem a informações armazenadas nas tabelas de sistema no banco de dados. Você pode usar as tabelas de sistema para obter as mesmas informações, mas os arquivos de log oferecem um mecanismo mais simples de recuperação e análise. Os arquivos de log contam com permissões do Amazon S3 em vez de permissões de banco de dados para realizar consultas nas tabelas. Além disso, exibindo as informações em arquivos de log, em vez de consultar as tabelas do sistema, você reduz todo o impacto da interação com o banco de dados.

nota

Os arquivos de log não são tão atuais quanto as tabelas de log do sistema, que são STL_USERLOG e STL_CONNECTION_LOG. Os registros mais antigos, exceto o último registro, são copiados para os arquivos de log.

nota

Para o Amazon Redshift sem servidor, SYS_CONNECTION_LOG coleta dados de log de conexão. Quando você coleta dados de logs de auditoria para o Amazon Redshift sem servidor, não é possível enviá-los a arquivos de log, somente ao CloudWatch.

Log de conexão

Registra em log as tentativas de autenticação, além de conexões e desconexões. A tabela a seguir descreve as informações no log de conexão. Para obter mais informações sobre esses campos, consulte STL_CONNECTION_LOG no Guia do desenvolvedor de banco de dados do Amazon Redshift. Para obter mais informações sobre os dados de log de conexão coletados para o Amazon Redshift sem servidor, consulte SYS_CONNECTION_LOG.

Nome da coluna Descrição
evento O evento de conexão ou de autenticação.
recordtime O horário em que o evento ocorreu.
remotehost O nome ou endereço IP do host remoto.
remoteport O número da porta do host remoto.
pid O ID do processo associado à instrução.
dbname Database name.
username User name.
authmethod O método de autenticação.
duration A duração da conexão em microssegundos.
sslversion A versão do Secure Sockets Layer (SSL).
sslcipher A codificação do SSL.
mtu A unidade de transmissão máxima (MTU).
sslcompression O tipo de compactação do SSL.
sslexpansion O tipo de expansão do SSL.
iamauthguid O ID de autenticação do AWS Identity and Access Management (IAM) para a solicitação do AWS CloudTrail. Esse é o identificador da chamada da API GetClusterCredentials para criar as credenciais que estão sendo usadas para determinada conexão.
application_name A iniciais ou o nome atualizado da aplicação de uma sessão.
os_version A versão do sistema operacional que está na máquina cliente que se conecta ao cluster do Amazon Redshift.
driver_version A versão do driver ODBC ou JDBC que se conecta ao cluster do Amazon Redshift a partir das ferramentas de cliente SQL de terceiros.
plugin_name O nome do plugin usado para se conectar ao seu cluster do Amazon Redshift.
protocol_version A versão do protocolo interno que o driver do Amazon Redshift usa ao estabelecer sua conexão com o servidor.
sessionid O identificador exclusivo global da sessão atual.
compression O algoritmo de compactação em uso para a conexão.

Log do usuário

Registra os detalhes das seguintes alterações de um usuário de banco de dados:

  • Criar usuário

  • Descartar usuário

  • Alterar usuário (renomear)

  • Alterar usuário (alterar as propriedades)

Nome da coluna Descrição
userid O ID do usuário afetado pela alteração.
username O nome de usuário do usuário afetado pelas alterações.
oldusername Para uma ação de renomeação, o nome de usuário original. Para qualquer outra ação, este campo é vazio.
ação A ação ocorrida. Valores válidos:
  • Alter

  • Criar

  • Drop

  • Renomear

usecreatedb Se for verdadeiro (1), indica que o usuário tem permissões para criar um banco de dados.
usesuper Se for verdadeiro (1), indica que o usuário é um superusuário.
usecatupd Se for verdadeiro (1), indica que o usuário pode atualizar catálogos do sistema.
valuntil A data de expiração da senha.
pid ID do processo.
xid ID da transação.
recordtime O horário (em UTC) de início da consulta.

Consulte a visualização de sistema SYS_USERLOG para encontrar mais informações sobre alterações nos usuários. Essa visualização inclui dados de log do Amazon Redshift sem servidor.

Log de atividades do usuário

Registra em log todas as consultas antes de serem executadas no banco de dados.

Nome da coluna Descrição
recordtime O horário em que o evento ocorreu.
db Database name.
usuário User name.
pid O ID do processo associado à instrução.
userid ID de usuário.
xid ID da transação.
consulta Um prefixo de LOG: depois do texto da consulta, inclusive novas linhas.

Logs de auditoria e o Amazon CloudWatch

O registro de auditoria não é ativado por padrão no Amazon Redshift. Quando você ativa o registro em log no cluster, o Amazon Redshift exporta os logs para o Amazon CloudWatch ou cria e carrega os logs para o Amazon S3, que capturam dados desde o momento em que o registro em log de auditoria é habilitado até o momento atual. Toda atualização do registro em log é uma continuação dos logs anteriores.

O registro em log de auditoria no CloudWatch ou no Amazon S3 é um processo manual opcional. O registro em log em tabelas do sistema não é opcional e ocorre automaticamente no cluster. Para obter mais informações sobre registro em log de tabelas do sistema, consulte Referência de tabelas do sistema no Guia do desenvolvedor de banco de dados do Amazon Redshift.

O log de conexão, o log do usuário e o log de atividades do usuário são ativados juntos usando o AWS Management Console, a referência de API do Amazon Redshift ou a AWS Command Line Interface (AWS CLI). Para o log de atividade do usuário, você também deve ativar o parâmetro enable_user_activity_logging do banco de dados. Se você ativar somente o recurso de registro em log da auditoria, mas não o parâmetro associado, os logs de auditoria do banco de dados registrarão em log as informações somente dos logs de conexão e de usuários, mas não o log de atividades do usuário. Por padrão, o parâmetro enable_user_activity_logging não é habilitado (false). É possível defini-lo como true para habilitar o log de atividades do usuário. Para ter mais informações, consulte Grupos de parâmetros do Amazon Redshift.

Quando você habilita o registro em log no CloudWatch, o Amazon Redshift exporta dados de log de conexão de cluster, usuário e atividade do usuário para um grupo de logs do Amazon CloudWatch Logs. Os dados do log não mudam com relação ao esquema. O CloudWatch foi criado para monitorar aplicações, e você pode usá-lo para realizar análise em tempo real ou configurá-lo para executar ações. Também é possível usar o Amazon CloudWatch Logs para armazenar seus registros de log em armazenamento durável.

O uso do CloudWatch para visualizar logs é uma alternativa recomendada ao armazenamento de arquivos de log no Amazon S3. Ele não requer muita configuração e pode atender aos seus requisitos de monitoramento, especialmente se você já o utiliza para monitorar outros serviços e aplicações.

Grupos de logs e eventos de log no Amazon CloudWatch

Depois de selecionar quais logs do Amazon Redshift deseja exportar, você pode monitorar eventos de log no Amazon CloudWatch Logs. Um novo grupo de logs é criado automaticamente para o Amazon Redshift sem servidor com o seguinte prefixo, em que log_type representa o tipo de log.

/aws/redshift/cluster/<cluster_name>/<log_type>

Por exemplo, se você optar por exportar o log de conexão, os dados de log serão armazenados no grupo de logs a seguir.

/aws/redshift/cluster/cluster1/connectionlog

Os eventos de log são exportados para um grupo de logs usando o fluxo de log. Para pesquisar informações nos eventos de log para um endpoint sem servidor, use o console do Amazon CloudWatch Logs, a AWS CLI ou a API do Amazon CloudWatch Logs. Para obter informações sobre como procurar e filtrar dados de log, consulte Criar métricas de eventos de log usando filtros.

No CloudWatch, você pode pesquisar seus dados de log com uma sintaxe de consulta que fornece granularidade e flexibilidade. Para obter mais informações, consulte Sintaxe de consulta do CloudWatch Logs Insights.

Migrar para o registro em log de auditoria do Amazon CloudWatch

Em qualquer situação em que você estiver enviando logs ao Amazon S3 e alterar a configuração, por exemplo, para enviar logs ao CloudWatch, os logs que permanecerem no Amazon S3 não serão afetados. Você ainda pode consultar os dados de log nos buckets do Amazon S3 em que eles residem.

Arquivos de log no Amazon S3

O número e o tamanho dos arquivos de log do Amazon Redshift no Amazon S3 dependem muito da atividade em seu cluster. Se você tiver um cluster ativo que está gerando um grande número de logs, o Amazon Redshift pode gerar os arquivos de log com mais frequência. Você pode ter uma série de arquivos de log para o mesmo tipo de atividade, como ter vários logs de conexão na mesma hora.

Quando o Amazon Redshift usa o Amazon S3 para armazenar logs, você incorre em cobranças pelo armazenamento usado no Amazon S3. Antes de configurar o registro em log no Amazon S3, planeje por quanto tempo precisará armazenar os arquivos de log. Para isso, determine quando os arquivos de log podem ser excluídos ou arquivados com base em suas necessidades de auditoria. O plano criado depende muito do tipo de dados que você armazena, como dados sujeitos à conformidade ou requisitos regulatórios. Para obter mais informações sobre preço do Amazon S3, consulte Preço do Amazon Simple Storage Service (S3).

Limitações ao habilitar o registro no Amazon S3

O registro de auditoria tem as seguintes restrições:

  • Só é possível usar criptografia (AES-256) de chaves gerenciadas pelo Amazon S3 (SSE-S3).

  • Os buckets do Amazon S3 devem ter o recurso de bloqueio de objetos do S3 desativado.

Permissões de bucket para registro em log de auditoria do Amazon Redshift

Quando você ativa o registro em log no Amazon S3, o Amazon Redshift coleta informações de registro e as carrega para os arquivos de log armazenados no Amazon S3. Você pode usar um bucket existente ou um novo bucket. O Amazon Redshift requer as seguintes permissões do IAM para o bucket:

  • s3:GetBucketAcl O serviço requer permissões de leitura para o bucket do Amazon S3 para que possa identificar o proprietário do bucket.

  • s3:PutObject O serviço requer permissões put object para carregar os logs. Além disso, o usuário ou perfil do IAM que ativa o registro deve ter a permissão s3:PutObject para o bucket do Amazon S3. Sempre que o upload dos logs é feito, o serviço determina se o proprietário do bucket atual corresponde ao proprietário do bucket no momento em que o registro em log foi ativado. Se esses proprietários não corresponderem, você receberá um erro.

Se, ao habilitar o registro de auditoria, você selecionar a opção para criar um novo bucket, as permissões corretas serão aplicadas a ele. No entanto, se você criar seu próprio bucket no Amazon S3 ou usar um bucket existente, será necessário adicionar uma política de bucket que inclui o nome do bucket. Os logs são entregues usando credenciais da entidade principal do serviço. Para a maioria das Regiões da AWS, você adiciona o nome da entidade principal do serviço do Redshift, redshift.amazonaws.com.

A política de bucket usa o formato a seguir. ServiceName e BucketName são espaços reservados para seus próprios valores. Especifique também as ações e os recursos associados na política de bucket.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Put bucket policy needed for audit logging", "Effect": "Allow", "Principal": { "Service": "ServiceName" }, "Action": [ "s3:PutObject", "s3:GetBucketAcl" ], "Resource": [ "arn:aws:s3:::BucketName", "arn:aws:s3:::BucketName/*" ] } ] }

O exemplo a seguir é uma política de bucket para a Região Leste dos EUA (Norte da Virgínia) e bucket chamado AuditLogs.

{ "Version": "2008-10-17", "Statement": [ { "Sid": "Put bucket policy needed for audit logging", "Effect": "Allow", "Principal": { "Service": "redshift.amazonaws.com" }, "Action": [ "s3:PutObject", "s3:GetBucketAcl" ], "Resource": [ "arn:aws:s3:::AuditLogs", "arn:aws:s3:::AuditLogs/*" ] } ] }

As regiões que não estão habilitadas por padrão, também conhecidas como regiões “opt-in”, exigem um nome da entidade principal do serviço específico da região. Para isso, o nome da entidade principal do serviço inclui a região, no formato redshift.region.amazonaws.com. Por exemplo, redshift.ap-east-1.amazonaws.com para a região Ásia-Pacífico (Hong Kong). Para obter uma lista das regiões que não estão habilitadas por padrão, consulte Gerenciar Regiões da AWS na Referência geral da AWS.

nota

O nome da entidade principal do serviço específico da região corresponde à região em que o cluster está localizado.

Práticas recomendadas para arquivos de log

Quando o Redshift carrega arquivos de log para o Amazon S3, os arquivos grandes podem ser carregados em partes. Se o carregamento fracionado não for bem-sucedido, é possível que partes de um arquivo permaneçam no bucket do Amazon S3. Isso pode resultar em custos adicionais de armazenamento, por isso é importante entender o que ocorre quando um carregamento fracionado falha. Para obter uma explicação detalhada sobre carregamento fracionado para registros de auditoria, consulte Carregar e copiar objetos usando carregamento fracionado e Anular um carregamento fracionado.

Para obter mais informações sobre como criar buckets do S3 e adicionar políticas de bucket, consulte Criar um bucket e Editar permissões de bucket no Guia do usuário do Amazon Simple Storage Service.

Estrutura de bucket para registro em log de auditoria do Amazon Redshift

Por padrão, o Amazon Redshift organiza os arquivos de log no bucket do Amazon S3 usando o seguinte bucket e a seguinte estrutura de objeto:

AWSLogs/AccountID/ServiceName/Region/Year/Month/Day/AccountID_ServiceName_Region_ClusterName_LogType_Timestamp.gz

Um exemplo é AWSLogs/123456789012/redshift/us-east-1/2013/10/29/123456789012_redshift_us-east-1_mycluster_userlog_2013-10-29T18:01.gz.

Se você fornecer um prefixo das chaves do Amazon S3, coloque o prefixo no início da chave.

Por exemplo, se você especificar um prefixo de myprefix: myprefix/AWSLogs/123456789012/redshift/us-east-1/2013/10/29/123456789012_redshift_us-east-1_mycluster_userlog_2013-10-29T18:01.gz

O prefixo das chaves do Amazon S3 não poderá exceder 512 caracteres. Não pode conter espaços ( ), aspas duplas (“), aspas simples (‘) e barra invertida (\). Também há vários caracteres especiais e de controle que não são permitidos. Os códigos hexadecimais desses caracteres são os seguintes:

  • x00 até x20

  • x22

  • x27

  • x5c

  • x7f ou maior

Considerações sobre o registro em log de auditoria no Amazon S3

O registro em log de auditoria do Amazon Redshift pode ser interrompido pelos seguintes motivos:

  • O Amazon Redshift não tem permissão para carregar os logs no bucket do Amazon S3. Verifique se o bucket está configurado com a política do IAM correta. Para ter mais informações, consulte Permissões de bucket para registro em log de auditoria do Amazon Redshift.

  • O proprietário do bucket mudou. Quando o Amazon Redshift carrega os logs, ele verifica se o proprietário do bucket é o mesmo de quando o registro em log foi habilitado. Se o proprietário do bucket foi alterado, o Amazon Redshift não pode carregar logs até que você configure outro bucket para usar para registro em log de auditoria.

  • Não foi possível encontrar o bucket. Se o bucket for excluído no Amazon S3, o Amazon Redshift não poderá carregar logs. Você precisa recriar o bucket ou configurar o Amazon Redshift para carregar logs para um bucket diferente.

Chamadas de APIs com o AWS CloudTrail

O Amazon Redshift é integrado ao AWS CloudTrail, um serviço que fornece um registro das ações realizadas por um usuário, função ou serviço da AWS no Amazon Redshift. O CloudTrail captura todas as chamadas de API para Amazon Redshift como eventos. Para obter mais informações sobre a integração do Amazon Redshift com o AWS CloudTrail, consulte “Logging with CloudTrail” (Registro em log com o CloudTrail).

Você pode usar o CloudTrail independentemente ou além do registro em log de auditoria do banco de dados do Amazon Redshift.

Para saber mais sobre o CloudTrail, consulte o Guia do usuário do AWS CloudTrail.