Descobrindo Auditoria no SQL Server 2008 – Parte 2

Olá Gente!
Hoje vou dar continuidade ao primeiro post sobre auditoria (Descobrindo Auditoria no SQL Server 2008 – Parte 1), lá abordei um pouco sobre quais os benefícios de utilizar essa funcionalidade no seu ambiente.  Dando prosseguimento sobre qual o segundo passo para criar um Audit Specification, a auditoria do SQL Server oferece dois tipos diferentes de especificações de auditoria:
• SERVER AUDIT SPECIFICATIONS;
•DATABASE AUDIT SPECIFICATIONS;

Server e Database Audit Specification são criados de forma diferente.  Vamos conhecer um pouco mais o conceito de cada um desses tipos.

SERVER AUDIT SPECIFICATIONS

Define os grupos de ações (action groups) que ocorrem no nível de instância do SQL Server e os agrupa em “audit action groups”. Por exemplo, podem ser usados quando você deseja auditar uma atividade, tais como login, logout, alterações de senhas, quando um comando de backup ou restore é disparada dentre outas coisas. Existe um relacionamento um-para-um entre o Server Audit Specification Object e o Server Audit Object.  A regra é simples um SQL Server Audit Object só pode ser associado com um Audit Specification porque ambos são criados no escopo da instância do SQL Server.  As ações auditadas são enviadas para o SQL Server Audit que grava essas ações no TARGET.  Na tabela 01 estão descritos os audit actions groups.


Tabela 01 – Audit Action Groups. Fonte: http://technet.microsoft.com/en-us/library/cc280663.aspx

Podemos obter o resultado da Tabela 01 fazendo uma consulta na DMV sys.dm_audit_actions.
SELECT
    –Action_in_log -> Indica se uma ação pode ser gravada em um log de auditoria. Os valores são os seguintes: 1 = Sim e 0 = Não
    Action_in_log,
    –Name -> Nome da ação de auditoria ou do grupo de ações de auditoria. Não pode ser nulo.
    Name
FROM
    Sys.dm_audit_actions
WHERE
    — Class_desc -> O nome da classe do objeto ao qual a ação de auditoria aplica-se
    Class_desc = ‘SERVER’
    — Configuration_level ->Indica que a ação ou o grupo de ações especificado nessa linha são configuráveis no nível do Grupo ou da Ação
AND Configuration_level = ‘Group’
ORDER BY
    Name

Ao criar qualquer tipo de Audit Specification (Nota 02), você primeiro atribuir-lhe um nome e associa o Audit Specification com o SQL Server Audit Object criado na primeira etapa. O último passo para criação de uma especificação de auditoria de servidor é atribuir-lhe um Audit Action type que nada mais é do que uma atividade pré-definida que acontece dentro do SQL Server e podem ser auditadas.

Nota 02:
Sintaxe para criar um Server Audit Specification por T-SQL:
CREATE SERVER AUDIT SPECIFICATION audit_specification_name
FOR SERVER AUDIT audit_name
{
{ ADD ( { audit_action_group_name } )
} [, …n]
[ WITH ( STATE = { ON | OFF } ) ]
}
[ ; ]

DATABASE AUDIT SPECIFICATIONS

Usado quando você deseja auditar uma atividade dentro de um banco de dados, como quem está selecionando dados de uma tabela particular.
A regra é a cada Database Audit Specification pode ser associado a apenas um Server Audit Object. Entretanto um Server Audit Object pode ser associado a apenas um Database Audit Specification por banco de dados. Ou seja, você pode criar múltiplos Database Audit Speficications por banco de dados desde que cada um use um Server Audit Object separado. Veja Figura 02.

Figura 02. Descrição geral de auditoria.

No nível de instância, você pode especificar um ou mais Audit Action Group (para Database Audit Specification você pode especificar ações de auditoria individual e filtros também).  Na tabela 02 estão descritos as ações ou grupos de ação que podem ser configurados.

Tabela 02. Fonte: http://technet.microsoft.com/en-us/library/cc280663.aspx

Neste objeto podemos coletar dados como DELETE, INSERT, SELECT, UPDATE, EXECUTE, DBCC_GROUP etc. Para visualizarmos  todos os objetos descritos na Tabela 02, basta fazermos uma pesquisa na DMV  sys.dm_audit_actions.

SELECT
–Action_in_log -> Indica se uma ação pode ser gravada em um log de auditoria. Os valores são os seguintes: 1 = Sim e 0 = Não
Action_in_log,
    –Name -> Nome da ação de auditoria ou do grupo de ações de auditoria. Não pode ser nulo.
Name
FROM
sys.dm_audit_actions
WHERE
 — Class_desc -> O nome da classe do objeto ao qual a ação de auditoria aplica-se
class_desc= ‘DATABASE’
— Configuration_level ->Indica que a ação ou o grupo de ações especificado nessa linha são configuráveis no nível do Grupo ou da Ação
AND configuration_level IN (‘Action’,’Group’)
ORDER BY name

Ao criar uma especificação de auditoria de banco de dados, você atribui um nome, então associa ao Audit Specification com o SQL Server Audit Object e especifica o Audit Action Type como foi feito com o Server Audit Specification. No entanto, além disso, deve-se especificar o Object Class (database, object ou schema), o nome do objeto auditado e o security principal (ou seja, quem nós vamos auditar).
Uma vez que o Audit Specification for concluído, você deve habilitar o SQL Server Audit Object e o Audit Specification. Apartir daí os eventos de auditoria começarão a ser coletados para o target designado.

Nota 03:
Sintaxe para criar um Database Audit Specification por linha de comando:
CREATE DATABASE AUDIT SPECIFICATION audit_specification_name
{
FOR SERVER AUDIT audit_name
[ { ADD ( { <audit_action_specification> | audit_action_group_name } )
} [, …n] ]
[ WITH ( STATE = { ON | OFF } ) ]
}
[ ; ]
<audit_action_specification>::=
{
action [ ,…n ]ON [ class :: ] securable BY principal [ ,…n ]
}

No próximo post iremos ver um passo-a-passo de como criar uma Auditoria no SQL Server .

See youu!! =)

3 comentários em “Descobrindo Auditoria no SQL Server 2008 – Parte 2

Deixe um comentário