Auditoria de bancos de dados do SQL Server

Nesta página, descrevemos a auditoria de banco de dados no Cloud SQL usando a funcionalidade da auditoria do SQL Server.

Visão geral

Os recursos de auditoria do SQL Server incluem o seguinte no Cloud SQL:

  • Como criar especificações de auditoria do servidor
  • Acompanhamento e registro de eventos no nível do servidor e do banco de dados

Para mais informações sobre os recursos de auditoria do SQL Server, consulte Auditoria do SQL Server (Mecanismo de banco de dados).

Antes de começar

Antes de ativar a auditoria de banco de dados, leia os pré-requisitos desta seção.

Bucket do Cloud Storage para arquivos de auditoria

Os arquivos de auditoria (registros de auditoria) são enviados para um local do bucket do Cloud Storage. Assim, talvez seja necessário criar um bucket de propriedade da sua conta do Google Cloud.

Se preferir, use o local do bucket de outra conta. Quando você ativa a auditoria, se tiver as permissões necessárias, o papel roles/storage.objectAdmin será concedida automaticamente para fazer upload da auditoria. Arquivos para o local do bucket da conta de serviço especificada. Se você não tiver as permissões necessárias, conceda-as à conta de serviço mais tarde.

Usuário válido para ativação da auditoria

Para ativar a auditoria e criar especificações de auditoria, é necessário que o usuário padrão sqlserver esteja disponível. Quando você criou uma instância do Cloud SQL para SQL Server, o usuário sqlserver padrão foi criado para você.

Como ativar a auditoria

Quando você ativa a auditoria, um local do Cloud Storage é necessário. Os itens a seguir são opcionais:

  • O período de armazenamento de registros na instância
  • Intervalo de upload (frequência de upload)

Console

  1. No console do Google Cloud, acesse a página Instâncias do Cloud SQL.

    Acesse "Instâncias do Cloud SQL"

  2. Para abrir a página Visão geral de uma instância, clique no nome de instância flights.
  3. Clique em Editar.
  4. Na seção Personalizar sua instância, clique em Sinalizações e parâmetros.
  5. Marque a caixa de seleção ao lado de Ativar auditoria do SQL Server.
  6. Especifique um bucket do Cloud Storage como o local para onde os arquivos de auditoria são enviados.
  7. Clique em Advanced Options.
  8. Também é possível especificar um número de dias para a retenção do registro (de 1 a 7 dias, sete dias é o padrão).
  9. Também é possível especificar a frequência com que os registros serão enviados (arquivos de auditoria) em minutos (1 a 720 minutos. O padrão é 10 minutos).
  10. Clique em Salvar para aplicar as alterações.

gcloud

O comando a seguir ativa a auditoria:

gcloud sql instances patch INSTANCE_NAME --audit-bucket-path=gs://my-bucket --audit-retention-interval=24h --audit-upload-interval=10m

A tabela a seguir resume os parâmetros de gcloud dessa operação:

Parâmetro Descrição Valores permitidos Valor padrão
--audit-bucket-path Obrigatório. O local, como um bucket do Cloud Storage, para onde são enviados os arquivos de auditoria. Será vazio se a auditoria for desativada. Caso contrário, um caminho que começa com: gs:// Será vazio porque, por padrão, a auditoria está desativada.
--audit-retention-interval Opcional. O número de dias para a retenção do registro de auditoria no disco. 1 a 7 dias. Apenas dias são permitidos. 7 dias.
--audit-upload-interval Opcional. Frequência do upload dos registros de auditoria (arquivos de auditoria). 1 a 720 minutos. 10 minutos.

REST v1

Com a API REST, é possível ativar a auditoria de uma instância. Conforme mostrado no protótipo de solicitação a seguir, é possível especificar um bucket do Cloud Storage, um número de dias para a retenção de arquivos de auditoria e uma frequência para o upload de arquivos de auditoria. Somente o local do bucket é obrigatório. Para mais informações, consulte SqlServerAuditoriaConfig:

{
   "databaseVersion":"database-version",
   "name":"instance-id",
   "region":"region",
   "rootPassword":"password",
   "settings":{
      "tier":"machine-type",
      "sqlServerAuditConfig":{
         "bucket":"gs://mybucket",
         "retentionInterval":"24h",
         "uploadInterval":"10m"
      }
   }
}

REST v1beta4

Com a API REST, é possível ativar a auditoria de uma instância. Conforme mostrado no protótipo de solicitação a seguir, é possível especificar um bucket do Cloud Storage, um número de dias para a retenção de arquivos de auditoria e uma frequência para o upload de arquivos de auditoria. Somente o local do bucket é obrigatório. Para mais informações, consulte SqlServerAuditoriaConfig:

{
   "databaseVersion":"database-version",
   "name":"instance-id",
   "region":"region",
   "rootPassword":"password",
   "settings":{
      "tier":"machine-type",
      "sqlServerAuditConfig":{
         "bucket":"gs://mybucket",
         "retentionInterval":"24h",
         "uploadInterval":"10m"
      }
   }
}

Como desativar a auditoria

Esta seção contém as opções para desativar a auditoria. Quando você desativa a auditoria, todos os arquivos de auditoria, inclusive os que ainda não foram enviados, são excluídos da instância. Além disso, todas as auditorias de servidor são desativadas e precisam ser reativadas se a auditoria for retomada. Os registros de auditoria que foram enviados para o bucket do Cloud Storage podem permanecer, dependendo das configurações de retenção do bucket.

Veja a seguir as opções para desativar a auditoria.

Console

  1. No console do Google Cloud, acesse a página Instâncias do Cloud SQL.

    Acesse "Instâncias do Cloud SQL"

  2. Para abrir a página Visão geral de uma instância, clique no nome de instância flights.
  3. Clique em Editar.
  4. Na seção Personalizar sua instância, clique em Sinalizações e parâmetros.
  5. Desmarque a caixa de seleção ao lado de Ativar auditoria do SQL Server.
  6. Clique em Salvar para aplicar as alterações.

gcloud

O comando a seguir, que omite um valor do parâmetro --audit-bucket-path, desativa a auditoria:

gcloud sql instances patch INSTANCE_NAME --audit-bucket-path=

REST v1

O seguinte, que omite os campos do objeto sqlServerAuditConfig, é um protótipo de solicitação para desativar a auditoria:

{
   "databaseVersion":"database-version",
   "name":"instance-id",
   "region":"region",
   "rootPassword":"password",
   "settings":{
      "tier":"machine-type",
      "sqlServerAuditConfig":{
      }
   }
}

REST v1beta4

O seguinte, que omite os campos do objeto sqlServerAuditConfig, é um protótipo de solicitação para desativar a auditoria:

{
   "databaseVersion":"database-version",
   "name":"instance-id",
   "region":"region",
   "rootPassword":"password",
   "settings":{
      "tier":"machine-type",
      "sqlServerAuditConfig":{
      }
   }
}

Upload automático de arquivos de auditoria

Depois de ativar a auditoria, os arquivos de auditoria gerados são enviados automaticamente para o bucket especificado do Cloud Storage.

Os arquivos de auditoria gerados também são armazenados com a instância até que o período de retenção (intervalo) configurado expire. Após esse período, os arquivos de auditoria são excluídos permanentemente, mesmo aqueles que não puderam ser enviados.

Como criar auditorias de servidor

Depois de ativar a auditoria, o usuário padrão sqlserver terá permissões para criar, alterar e excluir auditorias do servidor.

Use o comando CREATE SERVER AUDIT para definir novas auditorias do servidor. Também é possível usar a interface do usuário do SQL Server Management Studio (SSMS) para criar auditorias de servidor.

As seguintes categorias de parâmetros são aplicadas a todas as auditorias de servidor:

Categoria do parâmetro Valores permitidos
Falha no registro de auditoria Continuar ou falhar
Destino da auditoria Arquivo
Caminho /var/opt/mssql/audit
Tamanhos máximos dos arquivos 2 a 50 MB
Máximo de arquivos rollover Precisa ser: não configurado
Nº máximo de arquivos Precisa ser: não configurado
Reservar espaço em disco Desativada

Ler auditorias

Como ler auditorias de uma instância

Para recuperar os dados de um arquivo de auditoria criado por uma auditoria de servidor, use o seguinte procedimento armazenado: msdb.dbo.gcloudsql_fn_get_audit_file. O procedimento msdb.dbo.gcloudsql_fn_get_audit_file aceita os mesmos parâmetros da função sys.fn_get_audit_file.

Assim, para informações sobre como usar esse procedimento armazenado, consulte sys.fn_get_audit_file.

Veja um exemplo de como usar o procedimento msdb.dbo.gcloudsql_fn_get_audit_file para recuperar dados de auditoria:

SELECT event_time, statement FROM msdb.dbo.gcloudsql_fn_get_audit_file('/var/opt/mssql/audit/*', NULL, NULL) WHERE statement LIKE '%INSERT%'

Como ler auditorias de um bucket

Para ler auditorias de um bucket do Cloud Storage, faça o download dos arquivos do bucket para uma instância do SQL Server. A instância do SQL Server pode ser:

  • Uma instância do Windows do Compute Engine
  • Uma instância do Linux no Compute Engine
  • Outro tipo de instância que executa o SQL Server.

Os arquivos de auditoria do bucket precisam ser transferidos para um local acessível a essa instância, como o disco local. Em seguida, para retornar informações dos arquivos de auditoria, execute a função sys.fn_get_audit_file usando um membro do papel de servidor fixo serveradmin. Por exemplo, em uma instância do Windows, se você tiver transferido arquivos de auditoria para D:\Audit, será possível usar um comando semelhante ao seguinte:

SELECT event_time, statement FROM sys.fn_get_audit_file('D:\Audit\*.*', NULL, NULL) WHERE statement LIKE '%INSERT%'

Como monitorar métricas

É possível monitorar operações relacionadas a auditorias como parte das métricas do Cloud SQL, disponíveis no Metrics Explorer:

  • database/sqlserver/audits_upload_count. Essa métrica indica o total de tentativas de upload de arquivos de auditoria para tentativas bem-sucedidas e com falha. Verifique essa métrica para monitorar se os uploads foram concluídos.
  • database/sqlserver/audits_size. Essa métrica indica quanto espaço do disco é usado pelos arquivos de auditoria armazenados na instância no momento de uma medição. Essa métrica fornece o tamanho total dos arquivos de auditoria na instância em bytes.

Práticas recomendadas

  • Para evitar a transferência de arquivos grandes entre regiões, considere o seguinte:
    • Criar buckets multirregionais do Cloud Storage ou
    • Como configurar o bucket de destino do Cloud Storage na mesma região da instância
  • Antes de usar a funcionalidade de auditoria do SQL Server, considere ativar os aumentos automáticos de armazenamento. Os arquivos de auditoria, dependendo do tamanho total e dos intervalos de retenção, talvez precisem de espaço em disco significativo.
  • Depois de ativar a auditoria, verifique se a instância pode fazer upload de arquivos de auditoria para o bucket do Cloud Storage. Se o solicitante que configurou a auditoria não tiver as permissões necessárias para fazer upload de arquivos no bucket do Cloud Storage, as permissões não serão concedidas automaticamente.
  • Configure uma política de alertas baseada em métrica para receber notificações sobre falhas de tentativas de upload e o uso excessivo do disco.
  • Para evitar a retenção de muitos arquivos de auditoria por muito tempo, configure uma política de retenção de dados para o bucket do Cloud Storage.