本章には、PostgreSQLデータベースへのSQLクエリの例が記載されています。他のデータベースへのクエリは、データベース自体の機能とその使用に関する微細な相違により、ある程度異なる場合があります。
|
SQLの機能では、グループと端末の階層は考慮されません。
|
データベースを直接クエリを実行するには
1.お使いのDr.Web ServerのControl Centerを開きます。 2.管理 → SQLコンソール セクションを開きます。 3.必要なSQLクエリを記述します。クエリの例は以下に示します。 4.実行 をクリックします。 SQLクエリの例
1.Windows Server OSがインストールされ、ウイルスデータベースが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.「373a9afb-9c9a-4d4d-b9b1-de817b96bcc5」識別子を持つグループまたはその中にネストされたグループに含まれる端末で、2019.06.01から2019.07.01に検出された脅威の上位10を取得します。
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.管理者のControl Centerへのログイン失敗のイベントを、対応する認証エラーコードとともに取得します。
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'
)
)
);
|
|