Auditoria da base de dados do SQL Server

Esta página descreve a auditoria de bases de dados no Cloud SQL através da funcionalidade de auditoria do SQL Server.

Vista geral

No Cloud SQL, as capacidades de auditoria do SQL Server incluem o seguinte:

  • Criar especificações de auditoria do servidor
  • Acompanhamento e registo de eventos ao nível do servidor e da base de dados

Para mais informações sobre as capacidades da auditoria do SQL Server, consulte o artigo Auditoria do SQL Server (motor de base de dados).

Antes de começar

Antes de ativar a auditoria da base de dados, reveja os pré-requisitos nesta secção.

Contentor do Cloud Storage para ficheiros de auditoria

Os ficheiros de auditoria (registos de auditoria) são carregados para uma localização de contentor do Cloud Storage. Assim, pode ter de criar um contentor pertencente à sua conta do Google Cloud .

Em alternativa, pode usar uma localização de contentor pertencente a outra conta. Quando ativa a auditoria, se tiver as autorizações necessárias, a roles/storage.objectAdmin função é concedida automaticamente para carregar ficheiros de auditoria para a localização do contentor da conta de serviço especificada. Se não tiver as autorizações necessárias, tem de as conceder à conta de serviço mais tarde.

Utilizador válido para ativar a auditoria

Para ativar a auditoria e criar especificações de auditoria, o utilizador sqlserver predefinido tem de estar disponível. Quando criou uma instância do Cloud SQL para SQL Server, o utilizador sqlserver predefinido foi criado automaticamente.

Ative a auditoria

Quando ativa a auditoria, é necessária uma localização do Cloud Storage. As seguintes são opcionais:

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

Consola

  1. Na Google Cloud consola, aceda à página Instâncias do Cloud SQL.

    Aceda a Instâncias do Cloud SQL

  2. Para abrir a página Vista geral de uma instância, clique no nome da instância.
  3. Clique em Edit.
  4. Na secção Personalize a sua instância, clique em Flags e parâmetros.
  5. Selecione a caixa de verificação junto a Ativar auditoria do SQL Server.
  6. Especifique um contentor do Cloud Storage como a localização para a qual os ficheiros de auditoria são carregados.
  7. Clique em Opções avançadas.
  8. Opcionalmente, especifique um número de dias para a retenção de registos (1 a 7 dias; 7 dias é o valor predefinido).
  9. Opcionalmente, especifique a frequência de carregamento dos registos (ficheiros de auditoria), em minutos (1 a 720 minutos; 10 minutos é o valor predefinido).
  10. Clique em Guardar para aplicar as alterações.

gcloud

O seguinte comando 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 seguinte resume os parâmetros gcloud desta operação:

Parâmetro Descrição Valores permitidos Valor predefinido
--audit-bucket-path Obrigatório. A localização, como um contentor do Cloud Storage, para a qual os ficheiros de auditoria são carregados. Vazio se a auditoria estiver desativada. Caso contrário, um caminho do contentor que começa com: gs:// Vazio, porque, por predefinição, a auditoria está desativada.
--audit-retention-interval Opcional. O número de dias para a retenção do registo de auditoria no disco. 1 a 7 dias. Só são permitidos dias. 7 dias.
--audit-upload-interval Opcional. Com que frequência deve carregar registos de auditoria (ficheiros de auditoria). 1 a 720 minutos. 10 minutos.

REST v1

Através da API REST, pode ativar a auditoria para uma instância. Conforme mostrado no protótipo de pedido seguinte, pode especificar um contentor do Cloud Storage, um número de dias para a retenção de ficheiros de auditoria e uma frequência para o carregamento de ficheiros de auditoria. Apenas a localização do contentor é obrigatória. Para 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

Através da API REST, pode ativar a auditoria para uma instância. Conforme mostrado no protótipo de pedido seguinte, pode especificar um contentor do Cloud Storage, um número de dias para a retenção de ficheiros de auditoria e uma frequência para o carregamento de ficheiros de auditoria. Apenas a localização do contentor é obrigatória. Para 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"
      }
   }
}

Desative a auditoria

Esta secção contém as opções para desativar a auditoria. Quando desativa a auditoria, todos os ficheiros de auditoria, incluindo os que ainda não foram carregados, são eliminados da instância. Além disso, todas as auditorias do servidor são desativadas e têm de ser reativadas se a auditoria for retomada. Os registos de auditoria carregados para o contentor do Cloud Storage podem permanecer, consoante as definições de retenção do contentor.

Seguem-se as opções para desativar a auditoria.

Consola

  1. Na Google Cloud consola, aceda à página Instâncias do Cloud SQL.

    Aceda a Instâncias do Cloud SQL

  2. Para abrir a página Vista geral de uma instância, clique no nome da instância.
  3. Clique em Edit.
  4. Na secção Personalize a sua instância, clique em Flags e parâmetros.
  5. Desmarque a caixa de verificação junto a Ativar auditoria do SQL Server.
  6. Clique em Guardar para aplicar as alterações.

gcloud

O comando seguinte, que omite um valor para o 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 pedido 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 pedido para desativar a auditoria:

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

Carregamento automático de ficheiros de auditoria

Depois de ativar a auditoria, os ficheiros de auditoria gerados são carregados automaticamente para o contentor do Cloud Storage especificado.

Os ficheiros 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 ficheiros de auditoria são eliminados permanentemente, mesmo os ficheiros que não foi possível carregar.

Crie auditorias do servidor

Depois de ativar a auditoria, o utilizador sqlserver predefinido tem autorizações para criar, alterar e eliminar auditorias do servidor.

Use o comando CREATE SERVER AUDIT para definir novas auditorias de servidor. Também pode usar a interface do utilizador do SQL Server Management Studio (SSMS) para criar auditorias do servidor.

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

Categoria do parâmetro Valores permitidos
Em caso de falha do registo de auditoria Continuar ou falhar
Destino da auditoria Ficheiro
Caminho /var/opt/mssql/audit
Tamanho máximo do ficheiro 2 a 50 MB
Número máximo de ficheiros de substituição Tem de ser: não configurada
Máximo de ficheiros Tem de ser: não configurada
Reserve espaço em disco Desativado

Leia auditorias

As secções seguintes abordam diferentes formas de ler auditorias.

Ler auditorias de uma instância

Para obter os dados de um ficheiro de auditoria criado por uma auditoria do servidor, 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.

Assim, para obter informações sobre a utilização desse procedimento armazenado, consulte sys.fn_get_audit_file.

Segue-se um exemplo de utilização do procedimento msdb.dbo.gcloudsql_fn_get_audit_file para obter 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%'

Este procedimento armazenado é mais adequado para volumes de dados pequenos a moderados. Se quiser ler registos de auditoria para volumes de dados muito grandes, recomendamos que leia os registos de auditoria a partir do Cloud Storage através de uma instância do Compute Engine.

Ler auditorias de um contentor

Para ler auditorias de um contentor do Cloud Storage, pode transferir os ficheiros do contentor 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 Linux do Compute Engine
  • Outro tipo de instância que está a executar o SQL Server

Os ficheiros de auditoria do contentor devem ser transferidos para uma localização acessível a essa instância, como o respetivo disco local. Em seguida, para devolver informações dos ficheiros de auditoria, execute a função sys.fn_get_audit_file usando um membro da função de servidor fixa serveradmin. Por exemplo, a partir de uma instância do Windows, se transferiu ficheiros de auditoria para D:\Audit, pode usar um comando semelhante ao seguinte:

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

Monitorize métricas

Pode monitorizar operações relacionadas com a auditoria como parte das métricas do Cloud SQL, disponíveis através do Explorador de métricas:

  • database/sqlserver/audits_upload_count. Esta métrica indica o total de tentativas de carregamento de ficheiros de auditoria, tanto as bem-sucedidas como as falhadas. Verifique esta métrica para monitorizar se os carregamentos foram bem-sucedidos.
  • database/sqlserver/audits_size. Esta métrica indica a quantidade de espaço em disco usado pelos ficheiros de auditoria armazenados na instância no momento de uma medição. Esta métrica indica o tamanho total dos ficheiros de auditoria na instância, em bytes.

Práticas recomendadas

  • Para evitar transferir ficheiros grandes entre regiões, considere o seguinte:
    • Criar contentores do Cloud Storage multirregionais
    • Configurar o contentor de destino do Cloud Storage na mesma região que a instância
  • Antes de usar a funcionalidade de auditoria do SQL Server, considere ativar os aumentos automáticos de armazenamento. Os ficheiros de auditoria, consoante o respetivo tamanho total e intervalos de retenção, podem precisar de um espaço em disco significativo.
  • Depois de ativar a auditoria, verifique se a sua instância consegue carregar ficheiros de auditoria para o contentor do Cloud Storage. Se o requerente que configurou a auditoria não tiver as autorizações necessárias para carregar ficheiros para o contentor do Cloud Storage, as autorizações não são concedidas automaticamente. Para mais informações sobre as autorizações, consulte os seguintes recursos:
  • Configure uma política de alertas baseada em métricas para receber notificações sobre tentativas de carregamento falhadas e utilização excessiva do disco.
  • Para evitar reter demasiados ficheiros de auditoria durante demasiado tempo, configure uma política de retenção de dados para o seu contentor do Cloud Storage.