none
Auditoria SQL RRS feed

  • Pergunta

  • Boa tarde,

    Gostaria de auditar totalmente o acesso ao meu SQL Server, acesso a bases, permissões concedidas, exclusões, criações de bases, fazer isso por usuário.

    Isso é possivel?

     

    Att,

    segunda-feira, 22 de agosto de 2011 20:40

Respostas

  • Oi Marcos,

    A exclusão de uma base pode ser auditada de diversas maneiras (Audit, triggers DDL e Event Notification). Acredito que o Audit seja a maneira mais indicada para fazê-lo. A exclusão de backups não pode ser monitorada pelo SQL Server. Como o Backup representa um arquivo ou fita externo, caso alguém o exclua o SQL Server não terá essa ciência.

    Vale a pena lembrar que se a auditoria estiver do lado do cliente, você não terá nenhuma segurança em relação a sua confiabilidade. O usuário poderá simplesmente desabilitá-la, efetuar as atividades e reabilitá-la se for o caso.

    O link http://msdn.microsoft.com/en-us/library/cc280386.aspx tem alguns scripts de auditoria. O que você teria que fazer é utilizar o evento DATABASE_CHANGE_GROUP. Desculpe só postar o link, mas não estou com um 2008 agora para preparar algum script

    [ ]s,

    Gustavo Maia Aguiar
    Blog: http://gustavomaiaaguiar.wordpress.com
    Vídeos: http://www.youtube.com/user/gmasql


    Classifique as respostas. O seu feedback é imprescindível
    quarta-feira, 24 de agosto de 2011 14:03
  • Boa Tarde,

    Independente do recurso, vamos refletir um pouco sobre essa solicitação:

    Quero auditar totalmente ... acesso ... acesso ...

    Suponha que você tenha uma base de 2GB com uns 10.000 acessos por hora. Supondo que você quer auditar somente o acesso com as seguintes colunas:

    Nome do Usuário (VARCHAR(30))
    Aplicacao (VARCHAR(30))
    Host (VARCHAR(30))
    Data do Acesso (VARCHAR(30))

    Supondo um tamanho médio para essas informações de 100bytes, significa que a cada dia temos 10.000 * 100 bytes o que nos resulta em 1MB de dados por hora o que dá 24MB de auditoria de logon por dia. Agora vamos supor que você também quer auditar as instruções T-SQL emitidas pela aplicação em uma coluna VARCHAR com tamanho médio de 500 posições. Supondo que você receba uma comando por segundo, a cada segundo temos 0,5Kb o que em um minuto nos dá 30Kb e em uma hora 18MB o que resulta em 432MB por dia. Somando isso aos 24 MB anteriores temos algo em torno de 460MB de auditoria por dia.

    Em outras palavras, em apenas 5 dias, o tamanho da sua auditoria já irá superar o tamanho dos seus dados.

    O que quero mostrar com isso é que não adianta simplesmente "auditar" ou usar o recurso X ou o recurso Y. Ninguém simplesmente audita tudo. O "tudo" pode significar muito mais recursos de CPU, memória, disco e infraestrutura do que o próprio dado em si. Qual é o sentido de alguém gastar mais dinheiro auditando o acesso ao dado do que propriamente mantendo-o ? É por isso que raríssimas vezes se audita tudo, mas simplesmente escolhe-se o que auditar. Antes de pensarmos no recurso correto, sugiro avaliar se é realmente necessário auditar "tudo". Claro que curiosidade para analisar o passado todo mundo tem, mas auditar tudo custa e bastante...

    Depois que você definir o que realmente precisa ser auditado, aí sim podemos partir para o recurso mais adequado (boas chances para o Audit).

    [ ]s,

    Gustavo Maia Aguiar
    Blog: http://gustavomaiaaguiar.wordpress.com
    Vídeos: http://www.youtube.com/user/gmasql


    Classifique as respostas. O seu feedback é imprescindível
    segunda-feira, 22 de agosto de 2011 20:57

Todas as Respostas

  • Marcos

    Qual a versão de seu SQL Server? se for 2008 Enterprise vc pode usar o SQL Audit

    http://www.msit.com.br/PublicacaoDetalhes.aspx?id=47&type=a


    Att.
    Marcelo Fernandes

    MCP, MCDBA, MCSA, MCTS.
    Se útil, classifique!!!
    Me siga no twitter: @marcelodba


    segunda-feira, 22 de agosto de 2011 20:44
    Moderador
  • Boa Tarde,

    Independente do recurso, vamos refletir um pouco sobre essa solicitação:

    Quero auditar totalmente ... acesso ... acesso ...

    Suponha que você tenha uma base de 2GB com uns 10.000 acessos por hora. Supondo que você quer auditar somente o acesso com as seguintes colunas:

    Nome do Usuário (VARCHAR(30))
    Aplicacao (VARCHAR(30))
    Host (VARCHAR(30))
    Data do Acesso (VARCHAR(30))

    Supondo um tamanho médio para essas informações de 100bytes, significa que a cada dia temos 10.000 * 100 bytes o que nos resulta em 1MB de dados por hora o que dá 24MB de auditoria de logon por dia. Agora vamos supor que você também quer auditar as instruções T-SQL emitidas pela aplicação em uma coluna VARCHAR com tamanho médio de 500 posições. Supondo que você receba uma comando por segundo, a cada segundo temos 0,5Kb o que em um minuto nos dá 30Kb e em uma hora 18MB o que resulta em 432MB por dia. Somando isso aos 24 MB anteriores temos algo em torno de 460MB de auditoria por dia.

    Em outras palavras, em apenas 5 dias, o tamanho da sua auditoria já irá superar o tamanho dos seus dados.

    O que quero mostrar com isso é que não adianta simplesmente "auditar" ou usar o recurso X ou o recurso Y. Ninguém simplesmente audita tudo. O "tudo" pode significar muito mais recursos de CPU, memória, disco e infraestrutura do que o próprio dado em si. Qual é o sentido de alguém gastar mais dinheiro auditando o acesso ao dado do que propriamente mantendo-o ? É por isso que raríssimas vezes se audita tudo, mas simplesmente escolhe-se o que auditar. Antes de pensarmos no recurso correto, sugiro avaliar se é realmente necessário auditar "tudo". Claro que curiosidade para analisar o passado todo mundo tem, mas auditar tudo custa e bastante...

    Depois que você definir o que realmente precisa ser auditado, aí sim podemos partir para o recurso mais adequado (boas chances para o Audit).

    [ ]s,

    Gustavo Maia Aguiar
    Blog: http://gustavomaiaaguiar.wordpress.com
    Vídeos: http://www.youtube.com/user/gmasql


    Classifique as respostas. O seu feedback é imprescindível
    segunda-feira, 22 de agosto de 2011 20:57
  • Boa noite,

    A versão do meu SQL é sim a enterprise, a auditoria do Sql possui limitações de versões?

    Att

    terça-feira, 23 de agosto de 2011 22:35
  • Gustavo,

    Boa noite, realmente me expressei mal e concordo realmente com você a respeito da auditoria quando é usada sem moderação.

    Na verdade como trabalho com consultoria em sistema ERP gostaria de auditar somente eventos de exclusão de bases e de backups para caso isso aconteça seja possivel monitorar o nome do usuário que realizou essas ações.

    Como posso fazer isso?

     

    Muito obrigado...pela atenção

    terça-feira, 23 de agosto de 2011 22:39
  • Oi Marcos,

    A exclusão de uma base pode ser auditada de diversas maneiras (Audit, triggers DDL e Event Notification). Acredito que o Audit seja a maneira mais indicada para fazê-lo. A exclusão de backups não pode ser monitorada pelo SQL Server. Como o Backup representa um arquivo ou fita externo, caso alguém o exclua o SQL Server não terá essa ciência.

    Vale a pena lembrar que se a auditoria estiver do lado do cliente, você não terá nenhuma segurança em relação a sua confiabilidade. O usuário poderá simplesmente desabilitá-la, efetuar as atividades e reabilitá-la se for o caso.

    O link http://msdn.microsoft.com/en-us/library/cc280386.aspx tem alguns scripts de auditoria. O que você teria que fazer é utilizar o evento DATABASE_CHANGE_GROUP. Desculpe só postar o link, mas não estou com um 2008 agora para preparar algum script

    [ ]s,

    Gustavo Maia Aguiar
    Blog: http://gustavomaiaaguiar.wordpress.com
    Vídeos: http://www.youtube.com/user/gmasql


    Classifique as respostas. O seu feedback é imprescindível
    quarta-feira, 24 de agosto de 2011 14:03