Visão geral dos Database Activity Streams - Amazon Relational Database Service

Visão geral dos Database Activity Streams

Como administrador de um banco de dados do Amazon RDS, você precisa proteger o banco de dados e atender aos requisitos regulatórios e de compatibilidade. Uma estratégia é integrar fluxos de atividades de banco de dados às suas ferramentas de monitoramento. Dessa forma, você monitora e define alarmes para a atividade de auditoria em seu banco de dados.

As ameaças à segurança são externas e internas. Para se proteger contra ameaças internas, você pode controlar o acesso do administrador aos transmissões de dados configurando o recurso Database Activity Streams. Os administradores de bancos de dados do Amazon RDS não têm acesso à coleta, transmissão, armazenamento e processamento das transmissões.

Como os fluxos de atividade do banco de dados funcionam

O Amazon RDS envia atividades para um fluxo de dados do Amazon Kinesis quase em tempo real. O fluxo do Kinesis é criado automaticamente. No Kinesis, é possível configurar serviços da AWS, como o Amazon Data Firehose e o AWS Lambda, para consumir o fluxo e armazenar os dados.

Importante

O uso do recurso Database Activity Streams é gratuito no Amazon RDS, mas o Amazon Kinesis cobra pelo fluxo de dados. Para ter mais informações, consulte Definição de preço do Amazon Kinesis Data Streams.

É possível configurar aplicações para gerenciamento de conformidade com o objetivo de consumir fluxos de atividades do banco de dados. Essas aplicações podem usar o fluxo para gerar alertas e auditar atividades em seu banco de dados.

O Amazon RDS é compatível com fluxos de atividade de banco de dados em implantações multi-AZ. Nesse caso, os fluxos de atividades do banco de dados auditam as instâncias principal e em espera.

Auditoria no Oracle Database e no banco de dados Microsoft SQL

Auditoria é o monitoramento e registro de ações de banco de dados configuradas. O Amazon RDS não captura a atividade de um banco de dados por padrão. Você mesmo cria e gerencia políticas de auditoria no banco de dados.

Auditoria unificada no Oracle Database

Em um banco de dados Oracle, uma política de auditoria unificada é um grupo chamado de configurações de auditoria que você pode usar para auditar um aspecto do comportamento do usuário. Uma política pode ser tão simples quanto auditar as atividades de um único usuário. Também é possível criar políticas de auditoria complexas que usam condições.

Um banco de dados Oracle grava registros de auditoria, inclusive registros de auditoria do SYS, para a trilha de auditoria unificada. Por exemplo, se ocorrer um erro durante uma instrução INSERT, a auditoria padrão indicará o número do erro e o SQL que foi executado. A trilha de auditoria reside em uma tabela somente leitura no esquema do AUDSYS. Para acessar esses registros,consulte a visualização do dicionário de dados UNIFIED_AUDIT_TRAIL.

Normalmente, configure fluxos de atividade do banco de dados da seguinte maneira:

  1. Crie uma política de auditoria do Oracle Database usando o comando CREATE AUDIT POLICY.

    O Oracle Database gera registros de auditoria.

  2. Ative a política de auditoria usando o comando AUDIT POLICY.

  3. Configurar fluxos de atividade do banco de dados.

    Somente as atividades que correspondem às políticas de auditoria do Oracle Database são capturadas e enviadas ao fluxo de dados do Amazon Kinesis. Quando fluxos de atividades de banco de dados são habilitados, um administrador de banco de dados Oracle não pode alterar a política de auditoria nem remover registros de auditoria.

Para saber mais sobre as políticas de auditoria unificadas, consulte Sobre atividades de auditoria com políticas de auditoria unificadas e AUDIT no Guia de segurança do Oracle Database.

Auditoria no Microsoft SQL Server

O fluxo de atividade de banco de dados usa o recurso SQLAudit para auditar o banco de dados do SQL Server.

A instância do RDS para SQL Server contém o seguinte:

  • Auditoria de servidor: a auditoria de servidor SQL coleta uma única instância de ações no nível do servidor ou do banco de dados, e um grupo de ações a serem monitoradas. As auditorias RDS_DAS_AUDIT e RDS_DAS_AUDIT_CHANGES em nível de servidor são gerenciadas pelo RDS.

  • Especificação de auditoria de servidor: a especificação de auditoria de servidor registra os eventos no nível do servidor. Você pode modificar a especificação RDS_DAS_SERVER_AUDIT_SPEC. Essa especificação está vinculada à auditoria de servidor RDS_DAS_AUDIT. A especificação RDS_DAS_CHANGES_AUDIT_SPEC é gerenciada pelo RDS.

  • Especificação de auditoria de banco de dados: a especificação de auditoria de banco de dados registra os eventos no nível do banco de dados. Você pode criar uma especificação de auditoria de banco de dados RDS_DAS_DB_<name> e vinculá-la à auditoria de servidor RDS_DAS_AUDIT.

Você pode configurar fluxos de atividade de banco de dados usando o console ou a CLI. Normalmente, configure fluxos de atividade do banco de dados da seguinte maneira:

  1. (Opcional) Crie uma especificação de auditoria de banco de dados com o comando CREATE DATABASE AUDIT SPECIFICATION e vincule-a à auditoria de servidor RDS_DAS_AUDIT.

  2. (Opcional) Modifique a especificação de auditoria de servidor com o comando ALTER SERVER AUDIT SPECIFICATION e defina as políticas.

  3. Ative as políticas de auditoria de banco de dados e servidor. Por exemplo:

    ALTER DATABASE AUDIT SPECIFICATION [<Your database specification>] WITH (STATE=ON)

    ALTER SERVER AUDIT SPECIFICATION [RDS_DAS_SERVER_AUDIT_SPEC] WITH (STATE=ON)

  4. Configurar fluxos de atividade do banco de dados.

    Somente as atividades que correspondem às políticas de auditoria de servidor e banco de dados são capturadas e enviadas ao fluxo de dados do Amazon Kinesis. Quando fluxos de atividade de banco de dados estão habilitados e as políticas estão bloqueadas, um administrador de banco de dados não pode alterar a política de auditoria nem remover registros de auditoria.

    Importante

    Se a especificação de auditoria de banco de dados para um banco de dados específico estiver habilitada e a política estiver em um estado bloqueado, o banco de dados não poderá ser descartado.

Para ter mais informações sobre auditoria do SQL Server, consulte Componentes de auditoria do SQL Server na documentação do Microsoft SQL Server.

Campos de auditoria não nativos para Oracle Database e SQL Server

Quando você inicia um fluxo de atividade de banco de dados, cada evento de banco de dados gera um evento de fluxo de atividade correspondente. Por exemplo, um usuário de banco de dados pode executar as instruções SELECT e INSERT. O banco de dados audita esses eventos e os envia para um fluxo de dados do Amazon Kinesis.

Os eventos são representados no fluxo como objetos JSON. Um objeto JSON contém um DatabaseActivityMonitoringRecord, que contém uma matriz databaseActivityEventList. Os campos predefinidos na matriz incluem class, clientApplication e command.

Por padrão, um fluxo de atividade não contém campos de auditoria nativos do mecanismo. É possível configurar o Amazon RDS para Oracle e o SQL Server de modo que inclua esses campos extras no objeto JSON engineNativeAuditFields.

No Oracle Database, a maioria dos eventos na trilha de auditoria unificada são mapeados para campos do fluxo de atividade de dados do RDS. Por exemplo, o campo UNIFIED_AUDIT_TRAIL.SQL_TEXT em mapas de auditoria unificada para o campo commandText em um fluxo de atividade de banco de dados. No entanto, campos de auditoria do Oracle Database, como OS_USERNAME, não são mapeados para campos predefinidos em um fluxo de atividade de banco de dados.

No SQL Server, a maioria dos campos do evento que são registrados pelo SQLAudit são mapeados para os campos no fluxo de atividade do banco de dados RDS. Por exemplo, o campo code de sys.fn_get_audit_file na auditoria é mapeado para o campo commandText em um fluxo de atividade de banco de dados. No entanto, campos de auditoria de banco de dados do SQL Server, como permission_bitmask, não são mapeados para campos predefinidos em um fluxo de atividade de banco de dados.

Para ter mais informações sobre databaseActivityEventList, consulte Matriz JSON databaseActivityEventList.

Substituição do grupo de parâmetros de banco de dados

Normalmente, você ativa a auditoria unificada no RDS for Oracle anexando um grupo de parâmetros. No entanto, o recurso Database Activity Streams requer configuração adicional. Para melhorar a experiência do cliente, o Amazon RDS faz o seguinte:

  • Se você ativar um fluxo de atividade, o RDS para Oracle vai ignorar os parâmetros de auditoria no grupo de parâmetros.

  • Se você desativar um fluxo de atividade, o RDS para Oracle deixará de ignorar os parâmetros de auditoria.

O fluxo de atividade de banco de dados para o SQL Server não depende de nenhum parâmetro definido na opção de auditoria SQL.

Modo assíncrono para transmissões de atividades de banco de dados

Os fluxos de atividade no Amazon RDS são sempre assíncronos. Quando uma sessão de banco de dados gera um evento de fluxo de atividade, a sessão retorna às atividades normais imediatamente. Em segundo plano, o Amazon RDS transforma o evento do fluxo de atividade em um registro durável.

Se ocorrer um erro na tarefa de segundo plano, o Amazon RDS gera um evento. Este evento indica o início e o final de qualquer janela de tempo em que os registros do evento do fluxo de atividade podem ter sido perdidos. O modo assíncrono favorece a performance do banco de dados sobre a precisão do fluxo de atividade.

Requisitos e limitações para fluxos de atividade de banco de dados

No RDS, os fluxos de atividade de banco de dados têm os seguintes requisitos e limites:

  • O Amazon Kinesis é imprescindível para os fluxos de atividades do banco de dados.

  • O AWS Key Management Service (AWS KMS) é imprescindível para fluxos de atividades de banco de dados, pois eles são sempre criptografados.

  • A aplicação de criptografia adicional ao seu fluxo de dados do Amazon Kinesis é incompatível com fluxos de atividade do banco de dados, que já estão criptografados com sua chave do AWS KMS.

  • Você mesmo cria e gerencia políticas de auditoria. Por padrão, diferente do Amazon Aurora, o RDS for Oracle não captura atividades.

  • Você mesmo cria e gerencia políticas e especificações de auditoria. Por padrão, ao contrário do Amazon Aurora, o Amazon RDS não captura a atividade de um banco de dados.

  • Em uma implantação multi-AZ, inicie o fluxo de atividade de banco de dados apenas na instância de banco de dados primária. O fluxo de atividades audita as instâncias de banco de dados primário e em espera automaticamente. Não é necessária nenhuma etapa adicional durante um failover.

  • Renomear uma instância de banco de dados não criará um novo fluxo do Kinesis.

  • O RDS para Oracle não oferece suporte a CDBs.

  • As réplicas de leitura não são compatíveis.

Disponibilidade de região e versão

A disponibilidade e a compatibilidade de recursos variam entre versões específicas de cada mecanismo de banco de dados e entre Regiões da AWS. Para ter mais informações sobre a disponibilidade de versões e regiões para fluxos de atividades de banco de dados, consulte Regiões e mecanismos de banco de dados compatíveis com fluxos de atividades de banco de dados no Amazon RDS.

Classes de instância de banco de dados compatíveis para transmissões de atividades de banco de dados

Para o RDS para Oracle, é possível utilizar fluxos de atividade de banco de dados com as seguintes classes de instâncias de banco de dados:

  • db.m4.*large

  • db.m5.*large

  • db.m5d.*large

  • db.m6i.*large

  • db.r4.*large

  • db.r5.*large

  • db.r5.*large.tpc*.mem*x

  • db.r5b.*large

  • db.r5b.*large.tpc*.mem*x

  • db.r5d.*large

  • db.r6i.*large

  • db.x2idn.*large

  • db.x2iedn.*large

  • db.x2iezn.*large

  • db.z1d.*large

Para o RDS para SQL Server, é possível utilizar fluxos de atividade de banco de dados com as seguintes classes de instâncias de banco de dados:

  • db.m4.*large

  • db.m5.*large

  • db.m5d.*large

  • db.m6i.*large

  • db.r4.*large

  • db.r5.*large

  • db.r5b.*large

  • db.r5d.*large

  • db.r6i.*large

  • db.x1e.*large

  • db.z1d.*large

Para mais informações sobre tipos de classes da instância, consulte Classes de instância de banco de dados .