Далее приводятся примеры SQL-запросов к базе данных PostgreSQL. Запросы к другим базам данных могут содержать некоторые отличия, обусловленные особенностями самой базы данных и тонкостями ее использования.
![](info.svg)
|
Возможности языка SQL не позволяют учитывать в запросах иерархию групп и станций.
|
Чтобы обратиться напрямую к базе данных
1.Откройте Центр управления вашего Сервера Dr.Web. 2.Перейдите в раздел Администрирование → SQL-консоль. 3.Введите необходимый SQL-запрос. Примеры запросов приведены далее. 4.Нажмите кнопку Выполнить. Примеры SQL-запросов
1.Найти станции, на которых установлена серверная версия ОС Windows и на которых вирусные базы старее, чем 2019.07.04-00:00:00 UTC (12.0).
SELECT
stations.name Station,
groups_list.name OS,
station_products.crev Bases
FROM
stations
INNER JOIN groups_list ON groups_list.platform =(
CAST(stations.lastos AS INTEGER) & ~15728640
)
AND (
(
CAST(stations.lastos AS INTEGER) & 2130706560
) = 33554560
)
INNER JOIN station_products ON station_products.id = stations.id
AND station_products.product = '10-drwbases'
AND station_products.crev < 12020190704000000;
|
2.Найти станции, имеющие в разделе Антивирусная сеть → Статистика → Состояние записи с серьезностью Высокая или Максимальная.
SELECT
stations.name Station
FROM
stations
WHERE
id IN (
SELECT
DISTINCT id
FROM
station_status
WHERE
severity >= 1342177280
);
|
3.Получить соответствие статусов и количества станций, имеющих эти статусы.
SELECT
code Code,
COUNT(code) Num
FROM
(
SELECT
DISTINCT id,
code
FROM
station_status
) AS t
GROUP BY
Code
ORDER BY
Code;
|
4.Получить 10 наиболее популярных угроз, обнаруженных с 2019.06.01 по 2019.07.01 на станциях, входящих в группу с идентификатором '373a9afb-9c9a-4d4d-b9b1-de817b96bcc5' или в любые вложенные в нее группы.
SELECT
cat_virus.str Threat,
COUNT(cat_virus.str) Num
FROM
station_infection
INNER JOIN cat_virus ON cat_virus.id = station_infection.virus
WHERE
station_infection.infectiontime BETWEEN 20190601000000000
AND 20190701000000000
AND station_infection.id IN (
SELECT
sid
FROM
station_groups
WHERE
gid = '373a9afb-9c9a-4d4d-b9b1-de817b96bcc5'
OR gid IN (
SELECT
child
FROM
group_children
WHERE
id = '373a9afb-9c9a-4d4d-b9b1-de817b96bcc5'
)
)
GROUP BY
cat_virus.str
ORDER BY
Num DESC
LIMIT
10;
|
5.Получить 10 наиболее заражаемых станций.
SELECT
Station,
Grp,
Num
FROM
(
SELECT
stations.id,
groups_list.id,
stations.name Station,
groups_list.name Grp,
COUNT(stations.id) Num
FROM
station_infection
INNER JOIN stations ON station_infection.id = stations.id
INNER JOIN groups_list ON groups_list.id = stations.gid
GROUP BY
stations.id,
groups_list.id,
stations.name,
groups_list.name
ORDER BY
Num DESC
LIMIT
10
) AS t;
|
6.Удалить членство всех станций из пользовательских групп, которые не являются первичными для этих станций.
DELETE FROM
station_groups;
INSERT INTO station_groups(sid, gid)
SELECT
stations.id,
groups_list.id
FROM
stations
INNER JOIN groups_list ON stations.gid = groups_list.id
AND groups_list.type NOT IN(1, 4);
|
7.Найти объекты антивирусной сети, в которых указанный домен присутствует в белом списке компонента SpIDer Gate, в персональных настройках.
SELECT
stations.name Station
FROM
station_cfg
INNER JOIN stations ON stations.id = station_cfg.id
WHERE
station_cfg.component = 38
AND station_cfg.name = 'WhiteVirUrlList'
AND station_cfg.value = 'domain.tld';
SELECT
groups_list.name Grp
FROM
group_cfg
INNER JOIN groups_list ON groups_list.id = group_cfg.id
WHERE
group_cfg.component = 38
AND group_cfg.name = 'WhiteVirUrlList'
AND group_cfg.value = 'domain.tld';
SELECT
policy_list.name Policy
FROM
policy_cfg
INNER JOIN policy_list ON policy_list.id = policy_cfg.id
WHERE
policy_cfg.component = 38
AND policy_cfg.name = 'WhiteVirUrlList'
AND policy_cfg.value = 'domain.tld';
|
8.Получить из аудита события неудачного входа администраторов в Центр управления с соответствующими кодами ошибки авторизации.
SELECT
admin_activity.login Login,
admin_activity.address Address,
activity_data.value ErrorCode,
admin_activity.createtime EventTimestamp
FROM
admin_activity
INNER JOIN activity_data ON admin_activity.record = activity_data.record
WHERE
admin_activity.oper = 10100
AND admin_activity.status != 1
AND activity_data.item = 'Error';
|
9.Найти станции под ОС Windows, на которых не установлены необходимые исправления безопасности.
SELECT
stations.name Station
FROM
stations
WHERE
id NOT IN (
SELECT
station_env_kb.id
FROM
station_env_kb
INNER JOIN stations ON stations.id = station_env_kb.id
WHERE
(
CAST(stations.lastos AS INTEGER) & 2130706432
)= 33554432
AND station_env_kb.name IN (
SELECT
id
FROM
env_strings
WHERE
str IN(
'KB4012212', 'KB4012213', 'KB4012214',
'KB4012215', 'KB4012216', 'KB4012217',
'KB4012598'
)
)
);
|
|