none
Realizar log das açoes de root (DBAs) no sql server 2008 rodando windows server 2008 RRS feed

  • Pergunta

  • Olá, gostaria de saber como devo proceder para monitorar as ações dos administradores do Sql Server que está rodando em cima do Windows Server.

    O que eu desejo é manter um log de todas as ações realizadas pelos usários do Sql Server que possuem uma senha root e salvar esse log num lugar inacessível a eles. Não pode ser possível a eles alterar esse recurso nem mesmo visualizar o log.

    Pensei que talvez o Windows Server pudesse fornecer mecanismos para tal tarefa, uma vez que os usuários com senha de administrador no Sql Server não possuem senha de administrador no Windows Server.

    Como devo proceder?

    Obrigado.
    quinta-feira, 27 de agosto de 2009 17:25

Respostas

  • Olá Felipe,

    Agora entendi a situação...um estudo acadêmico.

    Existem ferramentas de monitoração nativas do SQL Server que fazem isso, mas não impedem de que um SYSADMIN pare a coleta de dados.
    A instalação de ferramentas de terceiros poderia fazer isso que você citou e gerar os LOGs em uma área restrita.

    Bom, mas voltando ao mundo real o que precisa ser feito em ambientes que queiram ter um minimo de segurança é o que eu comentei antes.

    Ter esse tipo de monitoramento constante em um servidor de banco de dados gera uma sobrecarga que irá com certeza prejudicar o desempenho do servidor em geral.


    Alex Rosa -- Sharing my knowledge at http://www.keep-learning.com/blog
    sexta-feira, 28 de agosto de 2009 01:19
  • Felipe,

    Se você esta querendo fazer auditoria do seu SQL Server, no SQL Server 2008 existe um novo objeto chamado Audit.

    Através deste objeto é possível fazer auditoria a nível de servidor, banco de dados e tabelas, com ele você poderá auditar tudo que esta sendo manipulado em seu SQL Server 2008.
    Pedro Antonio Galvão Junior - MVP - Windows Server System - SQL Server/Coordenador de Projetos/DBA
    sábado, 29 de agosto de 2009 20:10
    Moderador

Todas as Respostas

  • Caso dificil heim...

    Sugiro conceder a permissão de SYSADMIN somente para PROFISSIONAIS CONFIÁVEIS e/ou conceder permissões MENORES para os demais usuários se for necessário.

    Um LOG servirá somente para fazer uma analise tardia de um problema que já terá acontecido.
    Alex Rosa -- Sharing my knowledge at http://www.keep-learning.com/blog
    quinta-feira, 27 de agosto de 2009 21:06
  • O caso é que isso é um problema acadêmico e deve ser resolvido exatamente como descrito.

    Foi uma tarefa passada a mim como desafio, e preciso saber se existe maneira de fazer tal coisa usando as ferramentas do Windows Server e/ou Sql Server ou se terei de desenvolver algo para monitorar esse tráfico.

    Agradeço pelas respostas.

    Felipe Blauth.
    sexta-feira, 28 de agosto de 2009 01:06
  • Olá Felipe,

    Agora entendi a situação...um estudo acadêmico.

    Existem ferramentas de monitoração nativas do SQL Server que fazem isso, mas não impedem de que um SYSADMIN pare a coleta de dados.
    A instalação de ferramentas de terceiros poderia fazer isso que você citou e gerar os LOGs em uma área restrita.

    Bom, mas voltando ao mundo real o que precisa ser feito em ambientes que queiram ter um minimo de segurança é o que eu comentei antes.

    Ter esse tipo de monitoramento constante em um servidor de banco de dados gera uma sobrecarga que irá com certeza prejudicar o desempenho do servidor em geral.


    Alex Rosa -- Sharing my knowledge at http://www.keep-learning.com/blog
    sexta-feira, 28 de agosto de 2009 01:19
  • Entendi, obrigado.

    Você conhece alguma dessas ferramentas de terceiros? São gratuitas?

    Muito útil também a informação sobre o overhrad.

    --
    Felipe Blauth
    sexta-feira, 28 de agosto de 2009 01:31
  • Felipe,

    Verifique as ferramentas da Red-Gate.com
    Pedro Antonio Galvão Junior - MVP - Windows Server System - SQL Server/Coordenador de Projetos/DBA
    sexta-feira, 28 de agosto de 2009 01:32
    Moderador
  • Estou analisando as ferramentas. Obrigado.

    Então quer dizer que não existe maneiras nativas de fazer tal coisa..

    Fazer o que né,

    até mais.

    --
    Felipe Blauth
    sábado, 29 de agosto de 2009 15:32
  • Felipe,

    Se você esta querendo fazer auditoria do seu SQL Server, no SQL Server 2008 existe um novo objeto chamado Audit.

    Através deste objeto é possível fazer auditoria a nível de servidor, banco de dados e tabelas, com ele você poderá auditar tudo que esta sendo manipulado em seu SQL Server 2008.
    Pedro Antonio Galvão Junior - MVP - Windows Server System - SQL Server/Coordenador de Projetos/DBA
    sábado, 29 de agosto de 2009 20:10
    Moderador
  • Junior,

    É  exatamenta isso que eu preciso, mas sob algumas condições:

    1) Somente um(1)  usuário poderia auditar a manipulação do banco de dados.

    2) Um DBA comum, com senha de administrador, não poderia ter acesso à essa auditoria.

    É possível criar esse tipo de permissão? Mantendo todas as permissões de um DBA padrão, mas restringindo quanto a auditoria?

    Obrigado.

    --
    Felipe Blauth


    sábado, 29 de agosto de 2009 22:21
  • Felipe,

    Isso eu já não tenho certeza, sei que é possível criar um ambiente de auditoria, mas com estar restrições precisamos ver.

    Aconselho a consultar o Books On-Line do SQL Server.
    Pedro Antonio Galvão Junior - MVP - Windows Server System - SQL Server/Coordenador de Projetos/DBA
    sábado, 29 de agosto de 2009 22:40
    Moderador
  • Estou investigando o SQL Server 2008 e, como sou novo, não sei muitas coisas ainda.

    Não consigo encontrar os arquivos de log de um banco de dados específico, que eu criei para teste.

    Em Management -> SQL Server Logs, apenas encontro os logs relativos ao servidor (login, etc).

    Onde ficam os logs de um banco específico? Se fosse possível apenas negar acesso a esses arquivos aos DBAs já resolveria meu problema, pois os DBAs possuem senha de usuário comum no Windows Server 2008.

    Abraços,

    Felipe
    segunda-feira, 31 de agosto de 2009 18:42
  • Felipe,

    O Log é um arquivo que esta armazenado na pasta em que o banco de dados foi criado.
    Pedro Antonio Galvão Junior - MVP - Windows Server System - SQL Server/Coordenador de Projetos/DBA
    segunda-feira, 31 de agosto de 2009 19:33
    Moderador
  • To no caminho, lendo as informações sobre o audit object já vi que dá pra fazer apenas com o SQL Server. Duas citações me deixaram feliz, agora só falta seguir o passo a passo.

    Usando audit, é possível colocar permissões em cima de um audit object:

    "SQL Server Audit feature introduces a new server-level permission called ALTER ANY SERVER AUDIT to allow a principal to CREATE, ALTER, or DROP an Audit or Server Audit Specification object."

    E manter os logs em local seguro:

    "The audit log is obviously another asset that needs protection. Careful consideration must be given regarding where to send the audit data. Ideally, the audit information should be sent to a location that cannot be modified or tampered with, even by a sysadmin . A simple strategy to accomplish this is to send the audit events to a file on a share to which the SQL Server service account only has write access. "

    O que você acha Junior?

    Abraços,

    Felipe Blauth


    segunda-feira, 31 de agosto de 2009 22:00
  • Felipe,

    Que bom que estamos no caminho e você esta conseguindo entender o Audit e desenhar a melhor solução.

    Trabalhando com o Audit você poderá realizar todo processo de auditoria em nível servidor inclusive monitorando aos alterações sobre objetos.

    Em relação ao log a segurança do log esta relacionada com seu local de armazenamento e também com as permissões que podem e devem ser concedidas sobre esta arquivo, inclusive a adoção de um algoritmo de criptografia.

    Pedro Antonio Galvão Junior - MVP - Windows Server System - SQL Server/Coordenador de Projetos/DBA
    terça-feira, 1 de setembro de 2009 00:19
    Moderador
  • Ok tenho um novo problema. Consegui usar bem o audit, salvando os logs num local seguro e monitorando caso alguem tentasse parar o serviço audit.

    Por exemplo, se um sysadmin de nome Admin parasse o serviço audit, ficaria registrado que ele fez isso. Até agora tudo bem, mas no domínio do problema em que estou trabalhando, várias pessoas possuem o mesmo login e senha de sysadmin, portanto, não adianta somente verificar que alguém parou o serviço, pois esse alguem seria o Admin que poderia ser qualquer um dos DBAs com o mesmo login. Seria necessário, então, registrar o que foi feito.

    Essa é a política da empresa, e não posso alterá-la. Portanto, seria necessário ter um audit que nem mesmo um sysadmin poderia alterar. Pelo que andei lendo, isso não é possível de ser feito, portanto acho que minha única solução são programas de terceiros.

    Gostaria de dicas de programas de terceiros, que pudessem me ajudar com esse problema.

    Obrigado.

    --
    Felipe Blauth
    quinta-feira, 3 de setembro de 2009 17:34
  • Felipe,

    Realmente através do objeto Audit no SQL Server 2008 isso não é possível.

    Em relação a ferramentas de terceiros eu desconheço alguma que possa fazer isso.
    Pedro Antonio Galvão Junior - MVP - Windows Server System - SQL Server/Coordenador de Projetos/DBA
    quinta-feira, 3 de setembro de 2009 18:40
    Moderador