Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Шпионский триггер  [new]
RMagistr2015
Member

Откуда:
Сообщений: 1389
Как проследить за таблицей, так что бы это было максимально незаметно?
В таблице постоянно меняются данные, версионирование не настроено ни как, в команде несколько разработчиков и между ними идут подковёрные игры
Задача вычислить сволочь, которая гадит соседям и либо уволить её, либо заставить работать её вместе с командой, а не заниматься ерундой
про "максимально незаметно" - есть триггеры, которые знают все и история пишется, и все знают куда, и могут пойти и подчистить хвосты, как сделать так что бы это было максимально незаметно?
2 ноя 16, 07:50    [19848962]     Ответить | Цитировать Сообщить модератору
 Re: Шпионский триггер  [new]
aleks2
Guest
Да вы, батенька, знатный фантазер.

ЗЫ. Трассу включи.
2 ноя 16, 08:03    [19848978]     Ответить | Цитировать Сообщить модератору
 Re: Шпионский триггер  [new]
Сон Веры Павловны
Member

Откуда:
Сообщений: 5975
Стандартный аудит (который CREATE SERVER AUDIT). Либо аудит с использованием service broker. И запрет на просмотр результатов этого аудита.
2 ноя 16, 08:09    [19848989]     Ответить | Цитировать Сообщить модератору
 Re: Шпионский триггер  [new]
RMagistr2015
Member

Откуда:
Сообщений: 1389
aleks2
Да вы, батенька, знатный фантазер.

ЗЫ. Трассу включи.


Не ужели так выглядит со стороны )))
2 ноя 16, 08:13    [19848995]     Ответить | Цитировать Сообщить модератору
 Re: Шпионский триггер  [new]
RMagistr2015
Member

Откуда:
Сообщений: 1389
Сон Веры Павловны
Стандартный аудит (который CREATE SERVER AUDIT). Либо аудит с использованием service broker. И запрет на просмотр результатов этого аудита.


Спасибо за совет
2 ноя 16, 08:13    [19848996]     Ответить | Цитировать Сообщить модератору
 Re: Шпионский триггер  [new]
o-o
Guest
RMagistr2015
Сон Веры Павловны
Стандартный аудит (который CREATE SERVER AUDIT). Либо аудит с использованием service broker. И запрет на просмотр результатов этого аудита.


Спасибо за совет

Enterprise Edition only.
А вот trace где угодно
2 ноя 16, 09:24    [19849126]     Ответить | Цитировать Сообщить модератору
 Re: Шпионский триггер  [new]
RMagistr2015
Member

Откуда:
Сообщений: 1389
o-o
RMagistr2015
пропущено...


Спасибо за совет

Enterprise Edition only.
А вот trace где угодно


У меня стандарт, тут только trace? вроде можно как-то отследить запущенные трасеры...?
2 ноя 16, 09:53    [19849240]     Ответить | Цитировать Сообщить модератору
 Re: Шпионский триггер  [new]
Сон Веры Павловны
Member

Откуда:
Сообщений: 5975
o-o
Enterprise Edition only.

Service Broker - EE only? С каких пор?
2 ноя 16, 10:44    [19849449]     Ответить | Цитировать Сообщить модератору
 Re: Шпионский триггер  [new]
o-o
Guest
RMagistr2015
o-o
пропущено...

Enterprise Edition only.
А вот trace где угодно


У меня стандарт, тут только trace? вроде можно как-то отследить запущенные трасеры...?

От кого прячем, от сисадмина?
А типа стандартный аудит, нарисованный в гуи, он такой незаметный был бы?
2 ноя 16, 10:44    [19849450]     Ответить | Цитировать Сообщить модератору
 Re: Шпионский триггер  [new]
invm
Member

Откуда: Москва
Сообщений: 9400
Можно, конечно, и трейс приспособить для отслеживания изменений данных в таблице. Но уж больно накладно.

Если у таблицы есть кластерный ПК (или кластерный индекс), то можно по ЖТ (или бекапам ЖТ) вычислить "сволочь", изменившую данные:
+ Пример для кластерного ПК
use master;
create database DBTest000;
go

use DBTest000;
go

create table dbo.t (id int primary key, v int);
insert into dbo.t values (1, 1);
update dbo.t set v = 2 where id = 1;
go

begin tran;
update dbo.t set v = 3 where id = 1;
rollback;
go

declare @AllocUnitName sysname;

select
 @AllocUnitName = schema_name(schema_id) + N'.' + object_name(parent_object_id) + N'.' + name
from
 sys.objects
where
 parent_object_id = object_id('dbo.t', 'U') and type = 'PK';

if object_id('tempdb..#t', 'U') is not null
 drop table #t;

select
 [Operation], [Transaction ID], [Lock Information], [Transaction SID], [Begin Time]
into
 #t
from
 sys.fn_dblog(null, null)
where
 [Operation] in (N'LOP_BEGIN_XACT', N'LOP_COMMIT_XACT') or
 ([Operation] = N'LOP_MODIFY_ROW' and AllocUnitName = @AllocUnitName);

select
 suser_sname(b.[Transaction SID]), b.[Begin Time], t.*
from
 #t a join
 #t b on b.[Transaction ID] = a.[Transaction ID] and b.[Operation] = N'LOP_BEGIN_XACT' join
 #t c on c.[Transaction ID] = a.[Transaction ID] and c.[Operation] = N'LOP_COMMIT_XACT' join
 dbo.t t with (index = 1) on a.[Lock Information] like N'%' + t.%%lockres%% +N'%'
where
 a.[Operation] = N'LOP_MODIFY_ROW';
go

use master;
drop database DBTest000;
go

Аналогично можно вычислить удаления строк.
2 ноя 16, 10:53    [19849512]     Ответить | Цитировать Сообщить модератору
 Re: Шпионский триггер  [new]
o-o
Guest
invm
Можно, конечно, и трейс приспособить для отслеживания изменений данных в таблице. Но уж больно накладно.

Если у таблицы есть кластерный ПК (или кластерный индекс), то можно по ЖТ (или бекапам ЖТ) вычислить "сволочь", изменившую данные:
+ Пример для кластерного ПК
use master;
create database DBTest000;
go

use DBTest000;
go

create table dbo.t (id int primary key, v int);
insert into dbo.t values (1, 1);
update dbo.t set v = 2 where id = 1;
go

begin tran;
update dbo.t set v = 3 where id = 1;
rollback;
go

declare @AllocUnitName sysname;

select
 @AllocUnitName = schema_name(schema_id) + N'.' + object_name(parent_object_id) + N'.' + name
from
 sys.objects
where
 parent_object_id = object_id('dbo.t', 'U') and type = 'PK';

if object_id('tempdb..#t', 'U') is not null
 drop table #t;

select
 [Operation], [Transaction ID], [Lock Information], [Transaction SID], [Begin Time]
into
 #t
from
 sys.fn_dblog(null, null)
where
 [Operation] in (N'LOP_BEGIN_XACT', N'LOP_COMMIT_XACT') or
 ([Operation] = N'LOP_MODIFY_ROW' and AllocUnitName = @AllocUnitName);

select
 suser_sname(b.[Transaction SID]), b.[Begin Time], t.*
from
 #t a join
 #t b on b.[Transaction ID] = a.[Transaction ID] and b.[Operation] = N'LOP_BEGIN_XACT' join
 #t c on c.[Transaction ID] = a.[Transaction ID] and c.[Operation] = N'LOP_COMMIT_XACT' join
 dbo.t t with (index = 1) on a.[Lock Information] like N'%' + t.%%lockres%% +N'%'
where
 a.[Operation] = N'LOP_MODIFY_ROW';
go

use master;
drop database DBTest000;
go

Аналогично можно вычислить удаления строк.

а он разве говорил про полную модель?
поезд поди давно ушел
2 ноя 16, 11:24    [19849686]     Ответить | Цитировать Сообщить модератору
 Re: Шпионский триггер  [new]
RMagistr2015
Member

Откуда:
Сообщений: 1389
Сон Веры Павловны
Стандартный аудит (который CREATE SERVER AUDIT). Либо аудит с использованием service broker. И запрет на просмотр результатов этого аудита.


Как можно просмотреть был ли уже активирован аудит?
2 ноя 16, 11:26    [19849698]     Ответить | Цитировать Сообщить модератору
 Re: Шпионский триггер  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
RMagistr2015,

sys.server_audits
2 ноя 16, 11:30    [19849729]     Ответить | Цитировать Сообщить модератору
 Re: Шпионский триггер  [new]
o-o
Guest
Сон Веры Павловны
o-o
Enterprise Edition only.

Service Broker - EE only? С каких пор?

Я про database audit.
Но если вы именно про брокер и самописный аудит, расскажите подробнее, плиз.
А то event notifications DML не отслеживают
2 ноя 16, 11:41    [19849802]     Ответить | Цитировать Сообщить модератору
 Re: Шпионский триггер  [new]
o-o
Guest
RMagistr2015
Сон Веры Павловны
Стандартный аудит (который CREATE SERVER AUDIT). Либо аудит с использованием service broker. И запрет на просмотр результатов этого аудита.


Как можно просмотреть был ли уже активирован аудит?

Если даже и был, в Standard Edition только server level audit.
Какая же разница, активирован он или нет, если ваш DML он все равно не отслеживает?
2 ноя 16, 11:44    [19849828]     Ответить | Цитировать Сообщить модератору
 Re: Шпионский триггер  [new]
Сон Веры Павловны
Member

Откуда:
Сообщений: 5975
o-o
Но если вы именно про брокер и самописный аудит, расскажите подробнее, плиз.

http://www.sqlteam.com/article/centralized-asynchronous-auditing-with-service-broker
2 ноя 16, 12:22    [19850087]     Ответить | Цитировать Сообщить модератору
 Re: Шпионский триггер  [new]
o-o
Guest
Сон Веры Павловны
o-o
Но если вы именно про брокер и самописный аудит, расскажите подробнее, плиз.

http://www.sqlteam.com/article/centralized-asynchronous-auditing-with-service-broker

чего-то я там вижу, что данные для аудита отсылаются в очередь из..триггера на таблице, изменения которой отслеживаем.
а вроде как ТС написал, не хочет триггеров на таблице
2 ноя 16, 12:35    [19850196]     Ответить | Цитировать Сообщить модератору
 Re: Шпионский триггер  [new]
invm
Member

Откуда: Москва
Сообщений: 9400
o-o
а он разве говорил про полную модель?
поезд поди давно ушел
А поезд уже ушел в любом случае.

ТС хочет иметь возможность вычислить гадящую "сволочь", которая умеет обходить средства DML аудита в БД. Пример такого способа и был показан.
2 ноя 16, 12:41    [19850237]     Ответить | Цитировать Сообщить модератору
 Re: Шпионский триггер  [new]
mini.weblab
Member

Откуда:
Сообщений: 1108
на одной из моих первых работ аналитиков подключали к разным ДБ серверам, и результаты отчетов на разных серверах отличались.
я просканировала сеть, нашла все "наши" (и не наши тоже) сервера, подсчитала результаты посерверно, после чего меня с работы выгнали.

(а работать вместе с командой, это же не дай бог)
2 ноя 16, 12:43    [19850250]     Ответить | Цитировать Сообщить модератору
 Re: Шпионский триггер  [new]
Сон Веры Павловны
Member

Откуда:
Сообщений: 5975
o-o
чего-то я там вижу, что данные для аудита отсылаются в очередь из..триггера на таблице, изменения которой отслеживаем.
а вроде как ТС написал, не хочет триггеров на таблице

RMagistr2015
есть триггеры, которые знают все и история пишется, и все знают куда, и могут пойти и подчистить хвосты, как сделать так что бы это было максимально незаметно?

т.е. можно вытащить скрипт триггера - там будет имя таблицы (правда, зачем было давать гранты на селект на таблицу аудита - непонятно). Здесь же а) вы ни из триггера, ни из отсылающей процедуры ничего не увидите - даже имени базы (в открытом виде), в которую ведется запись аудита; 2) немного подправив момент, связанный с conversation dialogs reusing, можно вообще не давать пользователю доступа к базе аудита, т.е. не создавать пользователя для логина, и тогда в эту базу попадут и прочитают логи аудита только строго определенные лица. Если, конечно, вышеупомянутые разработчики не являются администраторами - от последних, как известно, спрятать ничего не выйдет.
2 ноя 16, 13:01    [19850394]     Ответить | Цитировать Сообщить модератору
 Re: Шпионский триггер  [new]
RMagistr2015
Member

Откуда:
Сообщений: 1389
TaPaK
RMagistr2015,

sys.server_audits

пишу

select * from sys.server_audits


не работает (((
2 ноя 16, 13:40    [19850696]     Ответить | Цитировать Сообщить модератору
 Re: Шпионский триггер  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
RMagistr2015
TaPaK
RMagistr2015,

sys.server_audits

пишу

select * from sys.server_audits


не работает (((

а работает или не работает это как?
2 ноя 16, 13:43    [19850720]     Ответить | Цитировать Сообщить модератору
 Re: Шпионский триггер  [new]
komrad
Member

Откуда:
Сообщений: 5250
RMagistr2015,

покажите
select @@version
2 ноя 16, 14:06    [19850883]     Ответить | Цитировать Сообщить модератору
 Re: Шпионский триггер  [new]
o-o
Guest
Сон Веры Павловны
o-o
чего-то я там вижу, что данные для аудита отсылаются в очередь из..триггера на таблице, изменения которой отслеживаем.
а вроде как ТС написал, не хочет триггеров на таблице

RMagistr2015
есть триггеры, которые знают все и история пишется, и все знают куда, и могут пойти и подчистить хвосты, как сделать так что бы это было максимально незаметно?

т.е. можно вытащить скрипт триггера - там будет имя таблицы (правда, зачем было давать гранты на селект на таблицу аудита - непонятно). Здесь же а) вы ни из триггера, ни из отсылающей процедуры ничего не увидите - даже имени базы (в открытом виде), в которую ведется запись аудита; 2) немного подправив момент, связанный с conversation dialogs reusing, можно вообще не давать пользователю доступа к базе аудита, т.е. не создавать пользователя для логина, и тогда в эту базу попадут и прочитают логи аудита только строго определенные лица. Если, конечно, вышеупомянутые разработчики не являются администраторами - от последних, как известно, спрятать ничего не выйдет.

я сделаю disable trigger,
затем все мои сволочные действия, а затем обратно enable trigger.
и все!
2 ноя 16, 14:10    [19850919]     Ответить | Цитировать Сообщить модератору
 Re: Шпионский триггер  [new]
o-o
Guest
invm
o-o
а он разве говорил про полную модель?
поезд поди давно ушел
А поезд уже ушел в любом случае.

ТС хочет иметь возможность вычислить гадящую "сволочь", которая умеет обходить средства DML аудита в БД. Пример такого способа и был показан.

нет, ну почему же.
при полной модели можно в бэкапах лога порыться.
а при простой или сразу, или поезд ушел.
я вот про это
2 ноя 16, 14:12    [19850931]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить