Auditoria de banco de dados SQL Server

Esta página descreve a auditoria de banco de dados no Cloud SQL usando a funcionalidade do SQL Server Audit.

Visão geral

No Cloud SQL, os recursos de auditoria do SQL Server incluem o seguinte:

  • Criação de especificações de auditoria de servidor
  • Rastreamento e registro de eventos em nível de servidor e de banco de dados

Para obter informações adicionais sobre os recursos do SQL Server Audit, consulte SQL Server Audit (Mecanismo de Banco de Dados) .

Antes de começar

Antes de habilitar a auditoria de banco de dados, revise os pré-requisitos nesta seção.

Bucket do Cloud Storage para arquivos de auditoria

Os arquivos de auditoria (logs de auditoria) são enviados para um local de bucket do Cloud Storage. Portanto, talvez seja necessário criar um bucket pertencente à sua conta do Google Cloud.

Como alternativa, você pode usar um local de bucket pertencente a outra conta. Ao habilitar a auditoria , se você tiver as permissões necessárias, a função roles/storage.objectAdmin será concedida automaticamente para carregar arquivos de auditoria para o local de bucket da conta de serviço fornecida. Se você não tiver as permissões necessárias, precisará concedê-las para a conta de serviço posteriormente.

Usuário válido para habilitar auditoria

Para habilitar a auditoria e criar especificações de auditoria, o usuário padrão sqlserver deve estar disponível. Ao criar uma instância do Cloud SQL para SQL Server, o usuário padrão sqlserver foi criado para você.

Habilitando auditoria

Ao habilitar a auditoria, é necessário um local de armazenamento em nuvem. Os seguintes são opcionais:

  • O período de retenção de log na instância
  • O intervalo de upload (frequência de upload)

Console

  1. No Google Cloud console, 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 da instância.
  3. Clique em Editar .
  4. Na seção Personalizar sua instância , clique em Sinalizadores e parâmetros .
  5. Marque a caixa de seleção ao lado de Habilitar auditoria do SQL Server .
  6. Especifique um bucket do Cloud Storage como o local para onde os arquivos de auditoria serão carregados.
  7. Clique em Opções avançadas .
  8. Opcionalmente, especifique um número de dias para retenção de log (1 a 7 dias; 7 dias é o padrão).
  9. Opcionalmente, especifique a frequência de upload de logs (arquivos de auditoria), em minutos (1-720 minutos; 10 minutos é o padrão).
  10. Clique em Salvar para aplicar suas alterações.

gcloud

O comando a seguir habilita 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 gcloud desta 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 os arquivos de auditoria são enviados. Vazio se a auditoria estiver desabilitada. Caso contrário, um caminho de bucket que começa com: gs:// Vazio, porque por padrão a auditoria está desabilitada.
--audit-retention-interval Opcional. O número de dias para retenção do log de auditoria no disco. De 1 a 7 dias. São permitidos apenas alguns dias. 7 dias.
--audit-upload-interval Opcional. Com que frequência enviar logs de auditoria (arquivos de auditoria). 1-720 minutos. 10 minutos.

REST v1

Usando a API REST, você pode habilitar a auditoria para uma instância. Conforme mostrado no protótipo de solicitação a seguir, você pode especificar um bucket do Cloud Storage, um número de dias para retenção dos arquivos de auditoria e uma frequência para o upload dos arquivos de auditoria. Somente o local do bucket é necessário. Para obter mais informações, consulte SqlServerAuditConfig :

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

REST v1beta4

Usando a API REST, você pode habilitar a auditoria para uma instância. Conforme mostrado no protótipo de solicitação a seguir, você pode especificar um bucket do Cloud Storage, um número de dias para retenção dos arquivos de auditoria e uma frequência para o upload dos arquivos de auditoria. Somente o local do bucket é necessário. Para obter mais informações, consulte SqlServerAuditConfig :

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

Desabilitando auditoria

Esta seção contém as opções para desabilitar a auditoria. Ao desabilitar a auditoria, todos os arquivos de auditoria, incluindo aqueles ainda não carregados, são excluídos da instância. Além disso, todas as auditorias de servidor são desabilitadas e precisam ser reativadas para que a auditoria seja retomada. Os logs de auditoria que foram carregados no bucket do Cloud Storage podem permanecer, dependendo das suas configurações de retenção para o bucket.

A seguir estão as opções para desabilitar a auditoria.

Console

  1. No Google Cloud console, 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 da instância.
  3. Clique em Editar .
  4. Na seção Personalizar sua instância , clique em Sinalizadores e parâmetros .
  5. Desmarque a caixa de seleção ao lado de Habilitar auditoria do SQL Server .
  6. Clique em Salvar para aplicar suas alterações.

gcloud

O comando a seguir, que omite um valor para o parâmetro --audit-bucket-path , desabilita 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 desabilitar 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 desabilitar a auditoria:

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

Envio automático de arquivos de auditoria

Depois de habilitar 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 configurado (intervalo) expire. Após esse período, os arquivos de auditoria são excluídos permanentemente, mesmo os arquivos que não puderam ser carregados.

Criando auditorias de servidor

Após habilitar a auditoria, o usuário padrão sqlserver terá permissões para criar, alterar e remover auditorias de servidor.

Use o comando CREATE SERVER AUDIT para definir novas auditorias de servidor. Você também pode usar a interface de usuário do SQL Server Management Studio (SSMS) para criar auditorias de servidor.

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

Categoria de parâmetro Valores permitidos
Em caso de falha no log de auditoria Continuar ou falhar
Destino da auditoria Arquivo
Caminho /var/opt/mssql/audit
Tamanho máximo do arquivo 2-50 MB
Arquivos de rollover máximos Deve ser: não configurado
Máximo de arquivos Deve ser: não configurado
Reservar espaço em disco Desligado

Auditorias de leitura

Lendo auditorias de uma instância

Para recuperar os dados de um arquivo de auditoria criado por uma auditoria de servidor, você pode usar 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 que a função sys.fn_get_audit_file .

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

Aqui está um exemplo de uso do 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%'

Lendo auditorias de um bucket

Para ler auditorias de um bucket do Cloud Storage, você pode baixar os arquivos do bucket para uma instância do SQL Server. Essa instância do SQL Server pode ser:

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

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

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

Métricas de monitoramento

Você pode monitorar operações relacionadas à auditoria como parte das métricas do Cloud SQL , disponíveis no Metrics Explorer :

  • database/sqlserver/audits_upload_count. Esta métrica indica o total de tentativas de upload do arquivo de auditoria, tanto para tentativas bem-sucedidas quanto para tentativas com falha. Marque esta métrica para monitorar se os uploads foram bem-sucedidos.
  • database/sqlserver/audits_size. Esta métrica indica quanto espaço em disco é usado pelos arquivos de auditoria armazenados na instância, no momento de uma medição. Esta métrica fornece o tamanho total dos arquivos de auditoria na instância, em bytes.

Melhores práticas

  • Para evitar a transferência de arquivos grandes entre regiões, considere:
    • Criação de buckets multirregionais do Cloud Storage ou
    • Configurando o bucket do Cloud Storage de destino na mesma região da instância
  • Antes de usar a funcionalidade de Auditoria do SQL Server, considere habilitar o aumento automático de armazenamento . Os arquivos de auditoria, dependendo do tamanho total e dos intervalos de retenção, podem ocupar um espaço considerável em disco.
  • Após habilitar a auditoria, verifique se sua instância consegue carregar arquivos de auditoria no seu bucket do Cloud Storage. Se o solicitante que configurou a auditoria não tiver as permissões necessárias para carregar arquivos no bucket do Cloud Storage, as permissões não serão concedidas automaticamente.
  • Configure uma política de alerta baseada em métricas para notificá-lo sobre tentativas de upload com falha e uso excessivo do disco.
  • Para evitar reter muitos arquivos de auditoria por muito tempo, configure uma política de retenção de dados para seu bucket do Cloud Storage.