Auditoria do SQL Server - Amazon Relational Database Service

Auditoria do SQL Server

No Amazon RDS, você pode auditar bancos de dados do Microsoft SQL Server usando o mecanismo de auditoria interno do SQL Server. É possível criar auditorias e especificações de auditoria da mesma forma como elas são criadas para servidores de banco de dados no local.

O RDS faz upload dos logs de auditoria concluídos no bucket do S3 usando a função do IAM que você fornece. Se você habilitar a retenção, o RDS manterá seus logs de auditoria na sua instância de banco de dados durante o período de tempo configurado.

Para obter mais informações, consulte Auditoria do SQL Server (Mecanismo de banco de dados) na documentação do Microsoft SQL Server.

Auditoria do SQL Server com o recurso Database Activity Streams

Você pode usar o recurso Database Activity Streams para RDS a fim de integrar eventos de auditoria do SQL Server com ferramentas de monitoramento de atividade de banco de dados da Imperva, McAfee e IBM. Para obter mais informações sobre como realizar auditoria com o recurso Database Activity Streams para o RDS SQL Server, consulte Auditoria no Microsoft SQL Server

Suporte para auditoria do SQL Server

No Amazon RDS, a partir do SQL Server 2016, todas as edições do SQL Server comportam auditorias em nível de servidor, e a edição Enterprise também aceita auditorias em nível de banco de dados. Começando com o SQL Server 2016 (13.x) SP1, todas as edições oferecem suporte a auditorias em nível de servidor e em banco de dados. Para obter mais informações, consulte Auditoria do SQL Server (Mecanismo de banco de dados) na documentação do SQL Server.

O RDS oferece suporte para a definição das seguintes configurações de opção para o SQL Server Audit.

Configuração da opção Valores válidos Descrição
IAM_ROLE_ARN Um nome de recurso da Amazon (ARN) válido no formato arn:aws:iam::account-id:role/role-name. O ARN da função do IAM que concede acesso ao bucket do S3 no qual você deseja armazenar seus logs de auditoria. Para obter mais informações, consulte Nomes de recurso da Amazon (ARNs) na Referência geral da AWS.
S3_BUCKET_ARN Um ARN válido no formato arn:aws:s3:::amzn-s3-demo-bucket ou arn:aws:s3:::amzn-s3-demo-bucket/key-prefix O ARN do bucket do S3 no qual você deseja armazenar seus logs de auditoria.
ENABLE_COMPRESSION true ou false Controla a compactação de logs de auditoria. Por padrão, a compactação está habilitada (definida como true).
RETENTION_TIME 0 para 840 O tempo de retenção (em horas) durante o qual os registros de auditoria do SQL Server são mantidos em sua instância do RDS. Por padrão, a retenção está desabilitada.

Adicionar a auditoria do SQL Server às opções de instância de banco de dados

Habilitar a Auditoria do SQL Server requer duas etapas: habilitar a opção na instância de banco de dados e habilitar o recurso no SQL Server. O processo para adicionar a opção de Auditoria do SQL Server a uma instância de banco de dados é o seguinte:

  1. Crie um novo grupo de opções, ou copie ou modifique um existente.

  2. Adicione e configure todas as opções necessárias.

  3. Associe o grupo de opções à instância de banco de dados.

Depois de adicionar a opção de Auditoria do SQL Server, você não precisará reiniciar sua instância de banco de dados. Assim que o grupo de opções estiver ativo, você poderá criar auditorias e armazenar logs de auditoria no seu bucket do S3.

Para adicionar e configurar a Auditoria do SQL Server em um grupo de opções da instância de banco de dados
  1. Escolha uma das seguintes opções:

    • Use um grupo de opções existente.

    • Crie um grupo de opções de banco de dados personalizado e use esse grupo de opções. Para obter mais informações, consulte Criar um grupo de opções.

  2. Adicione a opção SQLSERVER_AUDIT ao grupo de opções e defina as configurações da opção. Para mais informações sobre a adição de opções, consulte Adicionar uma opção a um grupo de opções.

    • Em IAM role (Função do IAM), se você já tiver uma função do IAM com as políticas necessárias, poderá escolher essa função. Para criar uma nova função do IAM, escolha Create a New Role (Criar uma nova função). Para obter informações sobre as políticas necessárias, consulte Criar manualmente uma função do IAM para a Auditoria do SQL Server.

    • Em Select S3 destination (Selecionar destino do S3), se você já tiver um bucket do S3 que deseja usar, escolha-o. Para criar um bucket do S3, escolha Create a New S3 Bucket (Criar um bucket do S3).

    • Em Enable Compression (Habilitar compactação), deixe essa opção marcada para compactar arquivos de auditoria. A compactação está habilitada por padrão. Para desabilitar a compactação, desmarque Enable Compression (Habilitar compactação).

    • Em Audit log retention (Retenção do log de auditoria), para manter registros de auditoria na instância de banco de dados, escolha essa opção. Especifique um tempo de retenção em horas. O tempo máximo de retenção é de 35 dias.

  3. Aplique o grupo de opções a uma instância de banco de dados nova ou existente. Escolha uma das seguintes opções:

    • Se você estiver criando uma nova instância de banco de dados, aplique o grupo de opções ao executar a instância.

    • Em uma instância de banco de dados existente, aplique o grupo de opções modificando a instância e anexando o novo grupo de opções. Para obter mais informações, consulte Modificar uma instância de banco de dados do Amazon RDS.

Modificar a opção de auditoria do SQL Server

Depois de habilitar a opção de Auditoria do SQL Server, você poderá modificar as configurações. Para obter informações sobre como modificar as configurações da opção, consulte Modificar uma configuração de opção.

Remover a Auditoria do SQL Server das opções de instância de banco de dados

Você pode desativar o recurso de Auditoria do SQL Server desabilitando auditorias e, em seguida, excluindo a opção.

Para remover a auditoria
  1. Desabilite todas as configurações de auditoria no SQL Server. Para saber onde as auditorias estão sendo executadas, consulte as visualizações do catálogo de segurança do SQL Server. Para obter mais informações, consulte Visualizações do catálogo de segurança na documentação do Microsoft SQL Server.

  2. Exclua a opção de Auditoria do SQL Server da instância de banco de dados. Escolha uma das seguintes opções:

    • Exclua a opção de Auditoria do SQL Server do grupo de opções usado pela instância de banco de dados. Essa alteração afeta todas as instâncias de bancos de dados que usam o mesmo grupo de opções. Para obter mais informações, consulte Remover uma opção de um grupo de opções.

    • Modifique a instância de banco de dados e escolha um grupo de opções sem a opção de Auditoria do SQL Server. Essa alteração afeta somente a instância de banco de dados que você modifica. Você pode especificar um grupo de opções padrão (vazio) ou criar um grupo de opções personalizado diferente. Para obter mais informações, consulte Modificar uma instância de banco de dados do Amazon RDS.

  3. Após a exclusão da opção de Auditoria do SQL Server da instância de banco de dados, não é necessário reiniciar a instância. Remova arquivos de auditoria desnecessários do seu bucket do S3.

Usar a auditoria do SQL Server

Você pode controlar auditorias de servidor, especificações de auditorias de servidor e especificações de auditoria de banco de dados da mesma maneira que você as controla para servidores de banco de dados no local.

Criar auditorias

Você cria auditorias de servidor da mesma maneira que as cria para servidores de banco de dados no local. Para obter informações sobre como criar auditorias de servidor, consulte CRIAR AUDITORIA DE SERVIDOR na documentação do Microsoft SQL Server.

Para evitar erros, siga as seguintes limitações:

  • Não exceda o número máximo de auditorias de servidor com suporte por instância de 50.

  • Instrua o SQL Server a gravar dados em um arquivo binário.

  • Não use RDS_ como um prefixo no nome de auditoria do servidor.

  • Para FILEPATH, especifique D:\rdsdbdata\SQLAudit.

  • Para MAXSIZE, especifique um tamanho entre 2 MB e 50 MB.

  • Não configure MAX_ROLLOVER_FILES ou MAX_FILES.

  • Não configure o SQL Server para encerrar a instância de banco de dados se ele não conseguir gravar o registro de auditoria.

Criar especificações de auditoria

Você cria especificações de auditoria de servidor e especificações de auditoria de banco de dados da mesma maneira que as cria para servidores de banco de dados no local. Para obter informações sobre como criar especificações de auditoria, consulte CRIAR ESPECIFICAÇÃO DE AUDITORIA DE SERVIDOR e CRIAR ESPECIFICAÇÃO DE AUDITORIA DE BANCO DE DADOS na documentação do Microsoft SQL Server.

Para evitar erros, não use RDS_ como um prefixo no nome da especificação de auditoria de banco de dados ou da especificação de auditoria de servidor.

Visualizar logs de auditoria

Seus logs de auditoria são armazenados em D:\rdsdbdata\SQLAudit.

Depois que o SQL Server terminar de gravar em um arquivo de log de auditoria—quando o arquivo atingir seu limite de tamanho—o Amazon RDS o carregará no seu bucket S3. Se a retenção estiver habilitada, o Amazon RDS moverá o arquivo para a pasta de retenção: D:\rdsdbdata\SQLAudit\transmitted.

Para obter informações sobre como configurar a retenção, consulte Adicionar a auditoria do SQL Server às opções de instância de banco de dados.

Registros de auditoria são mantidos na instância de banco de dados até que o arquivo de log de auditoria seja carregado. Você pode visualizar os registros de auditoria executando o comando a seguir.

SELECT * FROM msdb.dbo.rds_fn_get_audit_file ('D:\rdsdbdata\SQLAudit\*.sqlaudit' , default , default )

É possível usar o mesmo comando para visualizar registros de auditoria na sua pasta de retenção, alterando o filtro para D:\rdsdbdata\SQLAudit\transmitted\*.sqlaudit.

SELECT * FROM msdb.dbo.rds_fn_get_audit_file ('D:\rdsdbdata\SQLAudit\transmitted\*.sqlaudit' , default , default )

Usar a Auditoria do SQL Server com instâncias Multi-AZ

Para instâncias Multi-AZ, o processo de envio de arquivos de log de auditoria ao Amazon S3 é semelhante ao processo para instâncias Single-AZ. No entanto, existem algumas diferenças importantes:

  • Objetos de especificação de auditoria de banco de dados são replicados para todos os nós.

  • Auditorias de servidor e especificações de auditoria de servidor não são replicadas para nós secundários. Em vez disso, você precisa criá-las ou modificá-las manualmente.

Para capturar auditorias de servidor ou uma especificação de auditoria de servidor de ambos os nós:

  1. Crie uma auditoria de servidor ou uma especificação de auditoria de servidor no nó primário.

  2. Faça failover para o nó secundário e crie uma auditoria de servidor ou uma especificação de auditoria de servidor com o mesmo nome e o mesmo GUID no nó secundário. Use o parâmetro AUDIT_GUID para especificar o GUID.

Configurar um bucket do S3

Os arquivos de log de auditoria são automaticamente carregados da instância de banco de dados no seu bucket do S3. As seguintes restrições se aplicam ao bucket do S3 que você usa como destino para arquivos de auditoria:

  • Ele deve estar na mesma região da AWS que a instância de banco de dados.

  • Ele não deve estar aberto ao público.

  • O proprietário do bucket também deve ser o proprietário da função do IAM.

  • Seu perfil do IAM deve ter permissões para a chave do KMS gerenciada pelo cliente associada à criptografia do lado do servidor do bucket do S3.

A chave de destino usada para armazenar os dados segue este esquema de nomenclatura: amzn-s3-demo-bucket/key-prefix/instance-name/audit-name/node_file-name.ext

nota

Você define o nome do intervalo e os valores do prefixo da chave com a configuração de opção (S3_BUCKET_ARN).

O esquema é composto pelos seguintes elementos:

  • amzn-s3-demo-bucket: o nome do bucket do S3.

  • key-prefix – O prefixo de chave personalizada que você deseja usar para logs de auditoria.

  • instance-name – O nome da sua instância do Amazon RDS.

  • audit-name – O nome da auditoria.

  • node – O identificador do nó que é a origem dos logs de auditoria (node1 ou node2). Há um nó para uma instância Single-AZ e dois nós de replicação para uma instância Multi-AZ. Estes não são nós primários e secundários, porque as funções de primário e secundário mudam ao longo do tempo. Em vez disso, o identificador de nó é um rótulo simples.

    • node1 – O primeiro nó de replicação (Single-AZ tem apenas um nó).

    • node2 – O segundo nó de replicação (Multi-AZ tem dois nós).

  • file-name – O nome do arquivo de destino. O nome do arquivo é obtido como está no SQL Server.

  • ext – A extensão do arquivo (zip ou sqlaudit):

    • zip – Se a compactação estiver habilitada (padrão).

    • sqlaudit – Se a compactação estiver desabilitada.

Criar manualmente uma função do IAM para a Auditoria do SQL Server

Normalmente, quando você cria uma nova opção, o AWS Management Console cria a função do IAM e a política de confiança do IAM para você. No entanto, é possível criar manualmente uma nova função do IAM para uso com Auditorias do SQL Server, para poder personalizá-la com quaisquer requisitos adicionais que você possa ter. Para fazer isso, você cria uma função do IAM e delega permissões para que o serviço do Amazon RDS possa usar seu bucket do Amazon S3. Ao criar essa função do IAM, você anexa as políticas de confiança e permissões. A política de confiança permite que o Amazon RDS assuma essa função. A política de permissão define as ações que essa função pode realizar. Para obter mais informações, consulte Criar uma função para delegar permissões a um produto da AWS no Guia do usuário do AWS Identity and Access Management.

Você pode usar os exemplos nesta seção para criar as relações de confiança e as políticas de permissões necessárias.

O exemplo a seguir mostra uma relação de confiança para o SQL Server Audit. Ela usa o principal de serviço rds.amazonaws.com para permitir que o RDS grave no bucket do S3. Um escopo principal do serviço é um identificador que é usado para conceder permissões a um serviço. Sempre que você permitir acesso ao rds.amazonaws.com dessa forma, está permitindo que o RDS execute uma ação em seu nome. Para obter mais informações sobre principais de serviço, consulte Elementos da política JSON da AWS: principal.

exemplo relação de confiança para SQL Server Audit
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "rds.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

Recomendamos usar as chaves de contexto de condição global aws:SourceArn e aws:SourceAccount em relações baseadas em recursos para limitar as permissões do serviço a um recurso específico. Essa é a maneira mais eficiente de se proteger contra o problema "confused deputy".

Você pode usar as duas chaves de contexto de condição global e fazer com que o valor aws:SourceArn contenha o ID da conta. Nesses casos, verifique se o valor aws:SourceAccount e a conta no aws:SourceArn usa o mesmo ID de conta quando eles são usados na mesma instrução.

  • Use aws:SourceArn se quiser acesso entre serviços para um único recurso.

  • Use aws:SourceAccount se você quiser permitir que qualquer recurso nessa conta seja associado ao uso entre serviços.

Na relação de confiança, certifique-se de usar a chave de contexto de condição global aws:SourceArn com o nome do recurso da Amazon (ARN) completo dos recursos que acessam a função. Para o SQL Server Audit, certifique-se de incluir o grupo de opções de banco de dados e as instâncias de banco de dados, conforme mostrado no exemplo a seguir.

exemplo relação de confiança com a chave de contexto de condição global para SQL Server Audit
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "rds.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceArn": [ "arn:aws:rds:Region:my_account_ID:db:db_instance_identifier", "arn:aws:rds:Region:my_account_ID:og:option_group_name" ] } } } ] }

No exemplo a seguir de uma política de permissões para SQL Server Audit, especificamos um ARN para o bucket do Simple Storage Service (Amazon S3). Você pode usar ARNs para identificar uma conta, usuário ou função específica à qual deseja conceder acesso. Para obter mais informações sobre como usar ARNs, consulte Nomes de recurso da Amazon (ARNs).

exemplo política de permissões para SQL Server Audit
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:ListAllMyBuckets", "Resource": "*" }, { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetBucketACL", "s3:GetBucketLocation" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket" }, { "Effect": "Allow", "Action": [ "s3:PutObject", "s3:ListMultipartUploadParts", "s3:AbortMultipartUpload" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/key_prefix/*" } ] }
nota

A ação s3:ListAllMyBuckets é necessária para verificar se a mesma conta do AWS tem o bucket do S3 e a instância de banco de dados SQL Server. A ação lista os nomes dos buckets na conta.

Os namespaces do bucket do S3 são globais. Se você excluir acidentalmente seu bucket, outro usuário poderá criar um bucket com o mesmo nome em uma conta diferente. Depois disso, os dados de auditoria do SQL Server são gravados no novo bucket.