áá»áœááºá¯ááºáá¡áááºááŸá¬ Denis Rozhkov ááŒá
áºáá«áááºá áá»áœááºá¯ááºááẠáá¯ááºáá¯ááºá¡ááœá²á·ááœáẠGazinformservice áá¯áá¹ááá®á០áá±á¬á·ááºáá²ááºááœá¶á·ááŒáá¯ážááá¯ážáááºáá±ážá¡ááŒá®ážá¡áá²ááŒá
áºáááºá
áááá·áºááœááºážááᯠá¡ááŒá±áá¶á áá±á¬ááºážáá«ážááᯠááŒááºáááºáá²á·áá«áááºá
áá±á¬ááºážáá«ážááœáẠá¡ááá¯ááºážáá¯á¶ážááá¯ááºážáá«áááá·áºáááº-
- áá»áááºáááºááŸá¯áá»á¬ážááᯠáááºáá²á·ááá¯á· áá¯á¶ááŒá¯á¶á á±áááºáááºážá
- áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážá á á¬áááºážá á áºáá°ááẠá¡áááºáááºážá áá±áá¬áá±á·á áºáááºááŒááºážááœáẠááŒá áºáá»ááºáá±áááºáá»á¬ážááᯠááŸááºáááºážáááºááŒá®áž áááºážááŸáá·áºáá»áááºáááºáá¯á¶á
- áá±áá¬áá±á·á áºááá¯ááºááá¯ááºá áá±áá¬ááᯠáááºááá¯áá¬ááœááºááá²á á¡á²áá«á¡ááœáẠáááºááá¯áááºážááá¬ááœá± áááá¯ááºáá²á
DBMS áá¯á¶ááŒá¯á¶áá±ážá á¡á
áááºá¡ááá¯ááºážáá¯á¶ážáá¯- áá»áááºáááºááŸá¯áá¬ááœááºáá±ážá áá¯ááºáá±á¬ááºáá»ááºá
á
áºáá±ážááŸá¯ááŸáá·áº áá±áá¬áá¬ááœááºáá±áž
áááºááá»áááºáááºááŸá¯áá»á¬ážááᯠáá¯á¶ááŒá¯á¶á á±ááŒááºážá
áááºá¡ááºááá®áá±ážááŸááºážááŸáááá·áº ááá¯ááºááá¯áẠááá¯á·ááá¯áẠááœááºááá¯ááºáááŒá áºá á± áááºááẠáá±áá¬áá±á·á áºááá¯á· áá»áááºáááºááá¯ááºáááºá á ááºážáááºážá¡ááá¯ááºážá áá¯ááºáááºážá¡áá¯á¶ážááŒá¯áá°á ááá¯ááá¯áááºááŸá¬ DBMS ááŸáá·áºá¡áá¯ááºáá¯ááºáá±á¬áá°ááẠáááºážááŸáá·áºááœááºááá¯ááºáá±á¬á¡á¬ážááŒáá·áº á¡ááŒááºá¡ááŸááºáááºááœááºáááºá
áá»áááºáááºááŸá¯áá»á¬ážááᯠáá¬ááœááºááŒááºážá¡ááŒá±á¬ááºáž áááŒá±á¬áá®á áá¯á¶ááŒá¯á¶áá±ážá¡á á®á¡áá¶áá»á¬áž áááºááá¯á·ááœá²á·á ááºážáááºááᯠáá¯á¶ážááŒááºááá·áº á¡áá±ážááŒá®ážáá±á¬áá±ážááœááºážáá»á¬ážááᯠááŒá±ááẠááá¯á¡ááºáááº-
- áá¯ááºáááºážá¡áá¯á¶ážááŒá¯áá°áá áºáŠážááẠDBMS á¡áá¯á¶ážááŒá¯áá°áá áºáŠážááŸáá·áº áá®áá»áŸáá«ááá¬ážá
- DBMS áá±áá¬ááᯠáááºááááºážáá»á¯ááºáá±á¬ API ááŸáááá·áºáᬠáá±ážáá±á¬ááºááŒááºážááŸááááŸá ááá¯á·ááá¯áẠááá¬ážáá»á¬ážááᯠááá¯ááºááá¯ááºáááºáá±á¬ááºááŒááºážááŸááááŸáá
- DBMS ááᯠáá®ážááŒá¬áž áá¬ááœááºáá¬ážáá±á¬ á¡ááá¯ááºážááá¯á· ááœá²áá±áá»áá¬ážááŒááºáž ááŸáá áááŸáá áááºážááŸáá·áº áá¯á¶á·ááŒááºáá¯á¶á
- áá±á«ááºážá ááºážááŒááºáž/ááá±á¬ááºá á®ááŸáá·áº á¡áááºá¡áááºá¡ááœáŸá¬áá»á¬ážááᯠá¡áá¯á¶ážááŒá¯ááŒááºážááŸááááŸáá áá»áááºáááºááŸá¯áááºáá±á¬ááºáá¯á¶ááŸáá·áº áá±áá¬áá±á·á áºááᯠáááºáá°á¡áá¯á¶ážááŒá¯áá±áá¯á¶á¡ááŒá±á¬ááºáž á¡áá»ááºá¡áááºáá»á¬ážááᯠááŒá±á¬ááºážáá²ááá¯ááºáááºá
ááᯠáá»áááºáááºááŸá¯áá»á¬ážááᯠáá¯á¶ááŒá¯á¶á á±áááºá¡ááœáẠáááºááá·áºáááááá¬áá»á¬ážááᯠáá¯á¶ážááá¯ááºáááºááᯠááŒáá·áºááŒáá«á áá¯á·á
- áá±áá¬áá±á·á Ạfirewall á¡áááºážááŒá±ááŸááºážáá»ááºáá»á¬ážááá¯áá¯á¶ážáá«á áá±á¬ááºáááºáá¬ááœááºááŸá¯á¡ááœáŸá¬áá áºáá¯ááẠá¡áááºážáá¯á¶ážá¡á¬ážááŒáá·áº DBMS ááœááºááŒá áºáá»ááºáá±ááá·áºá¡áá¬áá»á¬ážá ááœáá·áºáááºážááŒááºáá¬ááŸá¯ááᯠááá¯ážááŒáá·áºá á±ááŒá®áž á¡ááŒáá·áºáá¯á¶ážááœáẠáááºááẠáááºáá±á¬ááºážáá±áá¬áá¬ááœááºáá±ážááᯠáá±ážá áœááºážááá¯ááºáááºááŒá áºáááºá
- á
áá¬ážááŸááºáá°áá«ááá»á¬ážááᯠá¡áá¯á¶ážááŒá¯áá«á áááºážááá¯á·áá¡áá¯á¶ážááŒá¯ááŸá¯ááẠáááºááááá¯áá¬áááºáá¬áááºáá±á¬ááºáá¯á¶áá±á«áºááœááºáá°áááºáááºá áááºááá¯á·áááºááá¯á
á±á DBMS ááá¯á·áá»áááºáááºáá±á¬ áááºá¡ááá®áá±ážááŸááºážáá
áºáá¯áááœá²á·á
ááºážáá¯á¶ááá¯ááºááœáẠá
áá¬ážááŸááºáá
áºáá¯ááẠá¡áá¬á¡ááœááºá¡ááœáẠááá¯á¶áá±á¬ááºáá«á á¡áá¯á¶ážááŒá¯áá°ááŸáá·áº á
áá¬ážááŸááºááᯠá¡ááºááááºáá¯ááºááẠááá¯á¡ááºááŒá±á¬ááºáž ááááºážáá»á¯ááºááẠDBMS áááááá¬áá»á¬ážá
áœá¬ ááŸááá«áááºá
á¡áá¯á¶ážááŒá¯áá° á¡ááá·áºáááºááŸááºááŒááºáž áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážá¡ááŒá±á¬ááºáž ááá¯ááá¯áááºááŸá¯ááá¯ááºáá«áááºá
áá®ááŸá¬ MS SQL Vulnerability Assessmen ááá¯áááºáž áááºááŸá¬ááœá±ááá¯ááºáá«áááºááá®ááŸá¬ . - ááá¯á¡ááºáá±á¬ á¡áá»ááºá¡áááºáá»á¬ážááŒáá·áº á ááºááŸááºá áááºá ááºááŸá¯ááᯠááŒáá·áºáááºážáá«á á¡áááºá session ááẠopaque ááŒá áºáá±áá«áá áááºážááá±á¬ááºá¡ááœááºáž DBMS ááœááºáááºáá°á¡áá¯ááºáá¯ááºáááºááᯠáááºáá¬ážááááºáá«áá áááºáá¯ááºáá±á¬ááºáá±ááá·áºáá¯ááºáá±á¬ááºááŸá¯ááá±á¬ááºá¡ááœááºážááœááºá áááºáá°ááá¬áá¯ááºááá²á áá¬ááŒá±á¬áá·áºáá¯ááºáá±áááºááŸáá·áºáááºáááºááá·áºá¡áá»ááºá¡áááºááá¯ááá·áºááá¯ááºáááºá á€á¡áá»ááºá¡áááºááᯠá á¬áááºážá á áºááœáẠááœá±á·ááŒááºááá¯ááºáááºá
- ááá·áºááœáẠDBMS ááŸáá·áº áá¯á¶ážá áœá²áá°áá»á¬ážá¡ááŒá¬áž ááœááºáááºááŒá¬ážáá¬ážááŸá¯ áááŸááá«á SSL ááᯠá á®á ááºáááºááŸááºáá«á áááºážááẠáá®ážááŒá¬áž VLAN ááœáẠáááŸááá«á ááá¯ááá¯á·áá±á¬á¡ááŒá±á¡áá±áá»áá¯ážááœááºá á á¬ážáá¯á¶ážáá°ááŸáá·áº DBMS ááá¯ááºááá¯ááºááŒá¬ážáá»ááºáááºááᯠáá¬ááœááºááẠááá¯á¡ááºáá«áááºá áá¯á¶ááŒá¯á¶áá±ážáááááá¬áá»á¬ážááᯠopen source ááœááºáááºáž áááá¯ááºáááºá
áááºážááẠDBMS áá áœááºážáá±á¬ááºáááºááᯠáááºááá¯á·á¡áá»áá¯ážáááºáá±á¬ááºáááºáááºážá
SSL ááẠCPU load ááá¯áááºááá¯á·á¡áá»áá¯ážáááºáá±á¬ááºáááºá á¡áá»áááºááá¯ááá¯ážááŒáŸáá·áºááŒááºážááŸáá·áº TPS áá»áŸá±á¬á·áá»ááŒááºážááŸáá·áºáááºážááá¯ááœáá·áºáá«áá¡áááºážá¡ááŒá áºáá»á¬ážá áœá¬ááá¯áá¯á¶ážá áœá²áááºááá¯áááºááá¯ááŒáá·áºááŸá¯ááẠPostgreSQL áá¥ááá¬ááá¯ááŒáá·áºááŸá¯ááŒáá«á áá¯á·á
pgbench ááᯠá¡áá¯á¶ážááŒá¯á PostgreSQL ááᯠáááºááŒááºážááẠá áœááºážáá±á¬ááºááẠá ááºážáááºááŸá¯áá»á¬áž áá¯ááºáá±á¬ááºáááºá¡ááœáẠááá¯ážááŸááºážáá±á¬ áááá¯ááááºáá áºáᯠááŒá áºáááºá áááºážááẠá¡ááŒáá¯ááºáá±áá¬áá±á·á áºáááºááŸááºáá»á¬ážááœáẠááŒá áºááá¯ááºáá»á±ááŸááá±á¬ commands áá»á¬ážá sequence áá áºáá¯áááºážááᯠáááºáá«ááá²áá²áá¯ááºáá±á¬ááºááŒá®áž áá»ááºážáá»áŸááœá±áá±ážááœá±áá°ááŸá¯ááºážááᯠááœááºáá»ááºáááºá
SSL ááá«áá² 1 ááá¯á ááºážáááºááŒá®áž SSL ááá¯á¡áá¯á¶ážááŒá¯áá«á - ááœá±áá±ážááœá±áá°áá áºáá¯á á®á¡ááœáẠáá»áááºáááºááŸá¯ááᯠáááºááŸááºáá¬ážáááº-
pgbench.exe --connect -c 10 -t 5000 "host=192.168.220.129 dbname=taskdb user=postgres sslmode=require
sslrootcert=rootCA.crt sslcert=client.crt sslkey=client.key"
vs
pgbench.exe --connect -c 10 -t 5000 "host=192.168.220.129 dbname=taskdb user=postgres"
SSL ááá«áá² 2 ááá¯á ááºážáááºááŒá®áž SSL ááá¯á¡áá¯á¶ážááŒá¯áá«á - ááœá±áá±ážááœá±áá°á¡á¬ážáá¯á¶ážááᯠáá»áááºáááºááŸá¯áá áºáá¯áááºážááœáẠáá¯ááºáá±á¬ááºáááº-
pgbench.exe -c 10 -t 5000 "host=192.168.220.129 dbname=taskdb user=postgres sslmode=require
sslrootcert=rootCA.crt sslcert=client.crt sslkey=client.key"
vs
pgbench.exe -c 10 -t 5000 "host=192.168.220.129 dbname=taskdb user=postgres"
á¡ááŒá¬ážáááºáááºáá»á¬áž:
scaling factor: 1
query mode: simple
number of clients: 10
number of threads: 1
number of transactions per client: 5000
number of transactions actually processed: 50000/50000
á ááºážáááºááŸá¯ááááº:
SSL áááŸááá«á
SSL ááá¯
ááœá±áá±ážááœá±áá°ááá¯ááºážá¡ááœáẠáá»áááºáááºááŸá¯áá áºáᯠáááºáá±á¬ááºáá¬ážáááºá
latency áá»ááºážáá»áŸ
171.915 ms
187.695 ms
áá»áááºáááºááŸá¯áá»á¬ážá¡áá«á¡ááẠtps
58.168112
53.278062
áá»áááºáááºááŸá¯áá»á¬ážááᯠáááºáá±á¬ááºááŒááºážááŸááœá²á tps
64.084546
58.725846
á
á®áá®áá°
24%
28%
ááœá±áá±ážááœá±áá°á¡á¬ážáá¯á¶ážááᯠáá»áááºáááºááŸá¯áá áºáá¯áááºážááœáẠáá¯ááºáá±á¬ááºáá«áááºá
latency áá»ááºážáá»áŸ
6.722 ms
6.342 ms
áá»áááºáááºááŸá¯áá»á¬ážá¡áá«á¡ááẠtps
1587.657278
1576.792883
áá»áááºáááºááŸá¯áá»á¬ážááᯠáááºáá±á¬ááºááŒááºážááŸááœá²á tps
1588.380574
1577.694766
á
á®áá®áá°
17%
21%
light loads ááœááºá SSL á ááœáŸááºážááá¯ážááŸá¯ááẠááá¯ááºážáá¬ááŸá¯á¡ááŸá¬ážááŸáá·áº ááŸáá¯ááºážááŸááºááá¯ááºáááºá áá±áá¬ááœáŸá²ááŒá±á¬ááºážááŸá¯ááá¬á á¡ááœááºááŒá®ážáá¬ážáá«áá á¡ááŒá±á¡áá± ááœá²ááŒá¬ážááá¯ááºáááºá á¡áááºá áá»áœááºá¯ááºááá¯á·ááẠááœá±áá±ážááœá±áá°áá áºáá¯áá»áŸáẠáá»áááºáááºááŸá¯áá áºáá¯ááᯠáá°áá±á¬ááºáá«á (áááºážááẠááŸá¬ážáá«ážáááºá á¡áá»á¬ážá¡á¬ážááŒáá·áº á¡áá¯á¶ážááŒá¯áá°áá»á¬ážá¡ááŒá¬áž áá»áááºáááºááŸá¯ááᯠáá»áŸáá±áááº) ááá·áºááœáẠáá»áááºáááºááŸá¯/ááŒááºáá±á¬ááºááŸá¯ á¡áá»á¬ážá¡ááŒá¬ážááŸááá»áŸáẠá¡áá»áá¯ážáááºáá±á¬ááºááŸá¯ á¡áááºážáááºááá¯ááŒá®ážááá¯ááºáá«áááºá ááá¯ááá¯áááºááŸá¬á á áœááºážáá±á¬ááºáááºáá»áááºážááŒááºážáá¡áá¹ááá¬ááºáá»á¬áž ááŸáááá¯ááºáá±á¬áºáááºážá á¡áá¬á¡ááœááºá¡áá¯á¶ážáááŒá¯ááá±á¬ááºá¡á±á¬áẠááœá¬ááŒá¬ážáá»ááºááŸá¬ áááŒá®ážáá¬ážáá±á
áááºáááºááŸá¯áá¯ááºáá»á¬ážááᯠááŸáá¯ááºážááŸááºáá«á ááŒááºážáááºáá±á¬ ááœá¬ááŒá¬ážáá»ááºááŸáááŒá±á¬ááºáž áááááŒá¯áá«- áááºááẠáá°áá®áá±á¬á ááºááŸááºá¡ááœááºáž ááá¯á·ááá¯áẠááá°áá®áá±á¬ááá¹ááá»á¬ážááœáẠáá¯ááºáá±á¬ááºáá±áá«áááºá áááºážááᯠáá¬ážáááºááá¯ááºáááº- áá»áááºáááºááŸá¯áá áºáá¯á á®ááᯠáááºáá®ážáá¬ááœáẠá¡áááºážá¡ááŒá áºáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯áááºá
Zabbix ááá¯áá¯á¶ááŒááºááŸá¯áá¯ááºááœááºáá»áœááºá¯ááºááá¯á·áá»áááºáááºáá±á¬á¡áá«á ááá¯ááá¯áááºááŸá¬ md5 ááá¯á á áºáá±ážááŒááºážáááŸááá«á á¡áá±á¬ááºá¡áá¬ážá áá á áºáááºáááá¯á¡ááºáá«á ááá¯á·áá±á¬áẠáá¯á¶ážá áœá²áá°ááẠmd5 á á áºááŸááºááŒá±á¬ááºážá¡áá±á¬ááºá¡áá¬ážááŒáá¯ááºááᯠááœáá·áºááẠáá±á¬ááºážááá¯áá²á·áááºá áááºážááẠCPU áá±á«áºááœáẠáá±ážáá¶áá±á¬áááºááᯠáá±á¬ááºáá¬ážáᬠá áœááºážáá±á¬ááºááẠáá»áááºážááœá¬ážáááºá áá»áœááºá¯ááºááá¯á·ááẠá¡áá±á¬ááºážáá¯á¶ážááŒá áºá¡á±á¬áẠáááºážáááºážáá»á¬ážááᯠááŸá¬ááœá±áá²á·ááŒáááºá ááŒá¿áá¬á¡ááœáẠááŒá áºááá¯ááºáá»á±ááŸááá±á¬ ááŒá±ááŸááºážáááºážáá»á¬ážáá²ááŸáá áºáá¯ááŸá¬ ááœááºáááºááá·áºáááºáá»ááºáá»á¬ážááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºáááºá DBMS á¡ááœáẠáá®ážááŒá¬áž VLAN áá»á¬ážááŒá¯áá¯ááºáááºá áááºááá·áºáá±áá¬á០áá»áááºáááºáá±ááŒá±á¬ááºáž ááŸááºážáááºážá á±ááẠáááºáááºáá»á¬ážááᯠáá±á«ááºážááá·áºáᬠá¡áá±á¬ááºá¡áá¬ážá áá á áºááŒááºážááᯠáááºááŸá¬ážáááºááŒá áºáááºá á¡áá±á¬ááºá¡áá¬ážá áá á áºááŒááºážááᯠááœáá·áºááá·áºá¡áá« áá¯ááºáá»á ááááºáá»á¬ážááᯠáá»áŸá±á¬á·áá»ááẠá¡áá±á¬ááºá¡áá¬ážá áá á áºááŒááºážáááºáááºáá»á¬ážááᯠááá¯ááá¯áá±á¬ááºážááœááºá¡á±á¬ááºáá¯ááºáá±á¬ááºááá¯ááºáá±á¬áºáááºážá áá±áá°áá»á¡á¬ážááŒáá·áº ááá°áá®áá±á¬áááºážáááºážáá»á¬ážááá¯á¡áá¯á¶ážááŒá¯ááŒááºážááẠá á áºááŸááºááŒá±á¬ááºážá¡áá±á¬ááºá¡áá¬ážááŒááŒááºážááẠá áœááºážáá±á¬ááºáááºááá¯ááááá¯ááºá á±ááŒá®áž DBMS á¡ááœááºáá¬áá¬áá»á¬áž (áá¬á·ááºáá²) áááœááºáá»á°áá¬áá«áá«ááá¯áá®ááá¯ááºážáá±ážááœá²áá±á¬á¡áá«ááœááºá€á¡áá»ááºáá»á¬ážááá¯ááá·áºááœááºážá ááºážá á¬ážáááºááá¯á¡ááºáá«áááºá
áááá¯á¶ážáá»á¯ááº- ááŒá±ááŸááºážáá»ááºá¡áá»á¬ážá¡ááŒá¬ážááœááºá á¡áá±á¬ááºá¡áá¬ážá áá á áºááŒááºážááœáẠáá±ážáááºáá±á¬ ááœá²ááœá²áá»ááºáá»á¬ážááẠááá±á¬áá»ááºááᯠááŒá®ážááŒá®ážáá¬ážáá¬áž ááááá¯ááºá á±ááá¯ááºááŒá®áž áá¯ááºáá¯ááºáá±ážááœáẠá¡áá±á¬ááºá¡áááºáá±á¬áºááá·áºá¡áá«ááŸáᬠáááºážááẠááŸááºážáááºážáá¬áá±á¬á¡áá«ááœáẠááá¯ážááœá¬ážáá«áááºá
á¡ááºá á áºáá»ááº
á á¬áááºážá á áºááẠDBMS áá áºáá¯áááºážáá¬ááá¯ááºááá¯ááºáá«á á á¬áááºážá á áºááẠááá°áá®áá±á¬ á¡ááá¯ááºážáá»á¬ážááœáẠááŒá áºáá»ááºáá±ááá·áº á¡áá»ááºá¡áááºáá»á¬ážááᯠááá°ááŒááºážá¡ááŒá±á¬ááºážááŒá áºáááºá áááºážááẠáá±áá¬áá±á·á áºááá¯ááºážáá±á«áẠááá¯á·ááá¯áẠDBMS áááºáá±á¬ááºáá¬ážááá·áº áááºáááºááŸá¯á áá ẠááŒá áºááá¯ááºáááºá
á á®ážááœá¬ážááŒá áºáá¯ááºáááºážá¡ááá·áº DBMSs ááœááºá á¬áááºážá á áºááŒááºážááŸáá·áºá¡áá¬á¡á¬ážáá¯á¶ážá¡áááºááŒá±áá±á¬áºáááºáž open source ááœáẠ- á¡ááŒá²áááºážááá¯ááºáá«á á€áááºááŸá¬ PostgreSQL ááœááºááŸááááº-
- áá°áááºážááŸááºáááºáž - built-in ááŸááºáááºáž;
- ááá¯ážáá»á²á·ááŸá¯áá»á¬áž- pgaudit - áá¯á¶áá±ááŸááºáááºážááẠááá·áºá¡ááœáẠááá¯á¶áá±á¬ááºáá«áá ááŒá¿áá¬á¡áá»áá¯á·ááᯠááŒá±ááŸááºážáá±ážááá·áº áá®ážááŒá¬ážáááºáááºáá»á¬ážááᯠáááºá¡áá¯á¶ážááŒá¯ááá¯ááºáá«áááºá
áá®áá®ááá¯ááœáẠá¡á á®áááºáá¶á á¬áá« áááºáá±á¬ááºáž-
"á¡ááŒá±áá¶áá¯ááºááŒááºáá»ááºááŸááºáááºážááᯠlog_statement = á¡á¬ážáá¯á¶ážááŒáá·áº á á¶áá áºáá¯ááºááá·áºáá±áá¬á០áá¶á·ááá¯ážáá±ážááá¯ááºáá«áááºá
áááºážááᯠá á±á¬áá·áºááŒáá·áºááŒááºážááŸáá·áº á¡ááŒá¬ážá¡áá¯á¶ážááŒá¯ááŸá¯áá»á¬ážá¡ááœáẠáááºáá¶ááá¯ááºáá±á¬áºáááºáž á á¬áááºážá á áºá¡ááœáẠáá¯á¶ááŸááºááá¯á¡ááºáá±á¬ á¡áá±ážá áááºá¡ááá·áºááᯠááá±ážáá±á¬ááºáá«á
áá±áá¬áá±á·á áºáá±á«áºááœáẠáá¯ááºáá±á¬ááºáá²á·áá±á¬ áá¯ááºáá±á¬ááºáá»ááºá¡á¬ážáá¯á¶ážá á¬áááºážááŸáááẠááá¯á¶áá±á¬ááºáá«á
á á¬áááºážá á áºááᯠá áááºáááºá á¬ážááá·áº áá®ážááŒá¬ážáá¯ááºááŒááºáá»ááºáá»á¬ážááá¯áááºáž ááŸá¬ááœá±ááá¯ááºááá·áºáááºá
Standard logging ááẠá¡áá¯á¶ážááŒá¯áá°áá±á¬ááºážááá¯áá¬ážáááºááá¯ááŒááááºá pgAudit ááẠáá±áá¬áá±á·á áºááŸáá±ážááŒááºážáá»ááºááá¯áá¯ááºáá±á¬ááºáá±á¬á¡áá«ááŒá áºáá»ááºáá²á·ááá·áºá¡áá±ážá áááºá¡áá»ááºá¡áááºáá»á¬ážááá¯á¡á¬áá¯á¶á áá¯ááºáá±áá»áááºááœááºááŒá áºáááºá
á¥ááá¬á¡á¬ážááŒáá·áºá á á¬áááºážá á áºááẠááŸááºáááºážááŒá¯á á¯áá¬ážáá±á¬ ááŒá¯ááŒááºááááºážááááºážááŸá¯áááºážááá¯ážá¡ááœááºáž áá®ážááŒá¬ážááá¬ážáá áºáá¯ááᯠáááºáá®ážáá¬ážááŒá±á¬ááºáž á¡áááºááŒá¯ááá¯áá±áááºá
áááºážááẠá¡ááŒá±áá¶á á¬áááºážá á áºááŒááºážááŸáá·áº grep áá«áá±á¬ ááá¯ážááŸááºážáá±á¬á¡áá¯ááºáá áºáá¯áᯠáááºááá±á¬áºáááºáž áááºááẠá€áá²á·ááá¯á·áá±á¬ (áááºááœááºáá»ááºááŸáááŸá ááŸá¯ááºááœá±ážá á±áá±á¬) á¥ááá¬áá áºáá¯ááŒáá·áº áááºááŒáá²á·áá»áŸáẠá¡áááºáááºážá
áá¯ááºáá«$$
á¡á
'CREATE TABLE áááºááœááºážááŒááºáž' ááᯠáá¯ááºáá±á¬ááºáá« || 'ant_table(id int)';
END$$;
á á¶áá»áááºá á¶ááœáŸááºážááŸááºáááºážááẠááá·áºá¡á¬áž á€á¡áá¬ááá¯áá±ážáááá·áºáááº-
áá±á¬á·ááº- áá¯ááºááŒááºáá»ááº- áá¯ááºáá« $$
á¡á
'CREATE TABLE áááºááœááºážááŒááºáž' ááᯠáá¯ááºáá±á¬ááºáá« || 'ant_table(id int)';
END$$;
á áááºáá«áááºá á¬ážáá±á¬ááá¬ážááá¯ááŸá¬ááœá±ááŒááºážááẠááá¬ážáá»á¬ážááᯠááá¯ááºážááá áºáááºážááŒáá·áºáááºáá®ážááá·áºááá á¹á áá»á¬ážááœáẠáá¯ááºá¡ááááá¬á¡áá»áá¯á·ááá¯á¡ááºááá¯ááºááẠá
ááá¬ážá¡áááºááŒáá·áº ááŸá¬ááœá±ááŒááºážááẠááá¯áá±á¬ááºážáá±á¬ááŒá±á¬áá·áº áááºážááẠá á¶ááŒááá¯ááºáá±á
á€áá±áá¬á pgAudit ááẠá¡áááºááŒá±áááºá
áá°áá®áá±á¬ááá·áºááœááºážááŸá¯á¡ááœááºá áááºážááẠááŸááºáááºážááœáẠဠoutput ááá¯áá¯ááºáá±ážáááá·áºáááº-
á
á¬áááºážá
á
áº- Sessioná33,1áXNUMXáFUNCTIONáDOáá"DO$$
á¡á
'CREATE TABLE áááºááœááºážááŒááºáž' ááᯠáá¯ááºáá±á¬ááºáá« || 'ant_table(id int)';
END$$;"
á
á¬áááºážá
á
áº- SESSIONá 33,2áXNUMXá DDLá CREATE TABLEá TABLEápublic.important_tableá CREATE TABLE á¡áá±ážááŒá®ážáá±á¬_table (id INT)
DO ááá±á¬ááºááᯠááŸááºáá¬ážáá¬ážáá¯á¶áá¬áá CREATE TABLE á á á¬áá¬ážá¡ááŒáá·áºá¡á á¯á¶áá«ááŸááá±á¬ááŒá±á¬áá·áº ááŸá¬ááœá±áááœááºáá°á á±áá«áááºá
SELECT ááŸáá·áº DML áá¯ááºááŒááºáá»ááºáá»á¬ážááᯠáá±á¬á·ááºá¡ááºáá¯ááºáá±á¬á¡áá«á pgAudit ááẠáá¯ááºááŒááºáá»ááºááœááºáá±á¬áºááŒáá¬ážáá±á¬ áááºá ááºááŸá¯áá áºáá¯á á®á¡ááœáẠáá®ážááŒá¬ážááá·áºááœááºážááŸá¯áá áºáá¯ááᯠááŸááºáááºážáááºááẠconfigure áá¯ááºááá¯ááºáááºá
áá®ážááŒá¬ážááá¬ážáá
áºáá¯ááŸáá·áºáááá±á¬áá±á¬áºááŒáá»ááºá¡á¬ážáá¯á¶ážááá¯ááŸá¬ááœá±ááẠááœá²ááŒááºážá
áááºááŒá¬áááºáááá¯á¡ááºáá«(
áááºážááẠDBMS áá áœááºážáá±á¬ááºáááºááᯠáááºááá¯á·á¡áá»áá¯ážáááºáá±á¬ááºáááºáááºážá
á á áºáá±ážááŸá¯á¡ááŒáá·áºá¡á á¯á¶ááŒáá·áº á ááºážáááºááŸá¯áá»á¬ážááᯠáá¯ááºáá±á¬ááºááŒá®áž PostgreSQL á áœááºážáá±á¬ááºáááºááœáẠáá¬ááŒá áºáááºááᯠááŒáá·áºááŸá¯ááŒáá«á áá¯á·á ááá·áºáááºáá»ááºá¡á¬ážáá¯á¶ážá¡ááœáẠá¡áá»á¬ážáá¯á¶ážáá±áá¬áá±á·á áºááŸááºáááºážááᯠááœáá·áºááŒáá«á áá¯á·á
áá»áœááºá¯ááºááá¯á·ááẠconfiguration file ááœááºáá¬áá»áŸáá®ážáá«ážáááŒá±á¬ááºážáá²áá«á á¡áá±ážááŒá®ážáá¯á¶ážá¡áá»ááºááŸá¬ á¡áá»á¬ážáá¯á¶ážá¡áá»ááºá¡áááºáá»á¬ážáááŸáááẠdebug5 áá¯ááºááá¯ááœáá·áºáááºááŒá áºáááºá
postgresql.conf
log_destination = 'stderr'
logging_collector = ááœáá·áºáá¬ážáááºá
log_truncate_on_rotation = ááœáá·áºáááºá
log_rotation_age = 1d
log_rotation_size = 10MB
log_min_messages = á¡ááŸá¬ážááŸá¬ááŒááºááŒááºáž á
log_min_error_statement = á¡ááŸá¬ážááŸá¬ááŒááºááŒááºáž á
log_min_duration_statement = 0
debug_print_parse = ááœáá·áºáá¬ážáááºá
debug_print_rewritten = ááœáá·áºáá¬ážáááºá
debug_print_plan = ááœáá·áºáá¬ážáááºá
debug_pretty_print = ááœáá·áºáá¬ážáááºá
log_checkpoints = ááœáá·áºáá¬ážáááºá
log_connections = ááœáá·áºáá¬ážáááºá
log_disconnections = ááœáá·áºáááºá
log_duration = ááœáá·áºáááºá
log_hostname = on
log_lock_wait = ááœáá·áºáááºá
log_replication_commands = ááœáá·áºáááºá
log_temp_files = 0
log_timezone = 'á¥áá±á¬á/áá±á¬áºá
ááá¯'
1 CPUá 2,8 GHzá 2 GB RAMá 40 GB HDD áá«áá¬áá®áá¬áá»á¬ážáá«ááŸááá±á¬ PostgreSQL DBMS ááœááºá áá»áœááºá¯ááºááá¯á·ááẠcommand áá»á¬ážááá¯á¡áá¯á¶ážááŒá¯á load test áá¯á¶ážáá¯ááŒá¯áá¯ááºáááº-
$ pgbench -p 3389 -U postgres -i -s 150 benchmark
$ pgbench -p 3389 -U postgres -c 50 -j 2 -P 60 -T 600 benchmark
$ pgbench -p 3389 -U postgres -c 150 -j 2 -P 60 -T 600 benchmark
á ááºážáááºááŸá¯ááááºáá»á¬áž
áá
áºáá¯ááºááŒááºáž áááŸááá«á
áá
áºáá¯ááºááŒááºážááŸáá·áº
á
á¯á
á¯áá±á«ááºážáá±áá¬áá±á·á
ááŒáá·áºáá»áááº
43,74 á
áá¹áááºá·
53,23 á
áá¹áááºá·
RAM ááá¯
24%
40%
á
á®áá®áá°
72%
91%
á ááºážáááºááŸá¯ 1 (áá»áááºáááºááŸá¯ 50)
10 áááá
áºá¡ááœááºáž ááœá±áá±ážááœá±áá° á¡áá±á¡ááœááº
74169
32445
ááœá±áá±ážááœá±áá°áá»á¬áž/á
áá¹ááá·áº
123
54
áá»ááºážáá»áŸ Latency
405 ms
925 ms
á ááºážáááºááŸá¯ 2 (ááŒá áºááá¯ááºáá»á± 150 ááŸáá·áº áá»áááºáááºááŸá¯ 100)
10 áááá
áºá¡ááœááºáž ááœá±áá±ážááœá±áá° á¡áá±á¡ááœááº
81727
31429
ááœá±áá±ážááœá±áá°áá»á¬áž/á
áá¹ááá·áº
136
52
áá»ááºážáá»áŸ Latency
550 ms
1432 ms
á¡ááœááºá¡á á¬ážáá»á¬ážá¡ááŒá±á¬ááºáž
DB á¡ááœááºá¡á
á¬áž
á MB
á MB
áá±áá¬áá±á·á
áºááŸááºáááºážá¡ááœááºá¡á
á¬áž
0 ááᯠMB
4587 ááᯠMB
á¡á±á¬ááºááŒá±ááá¯ááºáž- á á¬áááºážá á Ạá¡ááŒáá·áºá¡á á¯á¶á ááááºááá±á¬ááºážáá°ážá á á¬áááºážá á áºá០áá±áá¬ááẠáá±áá¬áá±á·á áºááá¯ááºááá¯ááºááŸá áá±áá¬áá»á¬ážáá²á·ááá¯á· ááŒá®ážáá¬ážáááá·áºáááºá ááá¯á·ááá¯áẠááá¯áááºááá¯áááẠááŒá®ážáá¬ážáááºááŒá áºáááºá DBMS ááŸáá·áº á¡áá¯ááºáá¯ááºáá±á¬á¡áá« áá¯ááºáá±ážááá·áº ááá¬áááẠáá¯ááºáá¯ááºááŸá¯ááœáẠááŒá áºááá¯ážááŒá áºá ááºáá áºáá¯ááŒá áºáááºá
á¡ááŒá¬áž parameters ááœá±ááᯠááŒáá·áºáá¡á±á¬ááºá
- á¡ááŒááºááŸá¯ááºážááẠáá»á¬ážá áœá¬áááŒá±á¬ááºážáá²áá«- ááŸááºáááºážááááºáá² - 43,74 á áá¹ááá·áºá ááŸááºáááºážááá°ááŒááºáž - 53,23 á áá¹ááá·áºá
- á á¬áááºážá á áºááá¯ááºáá áºáá¯áá¯ááºáá¯ááºáááºááá¯á¡ááºáá±á¬ááŒá±á¬áá·áº RAM ááŸáá·áº CPU á áœááºážáá±á¬ááºáááºááẠáá¯áá¹ááá±á¬ááºáááá·áºáááºá áá«áᬠáá¯ááºáá¯ááºá áœááºážá¡á¬ážááá¯ááºážááŸá¬áááºáž áááá¬áááºááŸá¬ážáá«áááºá
áá»áááºáááºááŸá¯ á¡áá±á¡ááœáẠááá¯ážáá¬áááºááŸáá·áºá¡áá»áŸá ááá¬áá¡á¬ážááŒáá·áºá á áœááºážáá±á¬ááºááẠá¡áááºážááẠááá¯ážááœá¬ážááœá¬ážáá«áááºá
á á¬áááºážá á áºááŸáá·áºá¡áá° áá±á¬áºááá¯áá±ážááŸááºážáá»á¬ážááœáẠááá¯ááááºáááºáá²áááº-
- áá±áá¬á¡áá»á¬ážááŒá®ážááŸááá«áááº;
- á á¬áááºážá á áºááẠSIEM ááŸá syslog ááŸáááá·áºáá¬áá ááá¯ááºáá»á¬ážááœááºáá« ááá¯á¡ááºáááº- syslog ááœáẠáá áºáá¯áá¯ááŒá áºááœá¬ážáá«áá áá±áá¬ááááºážáááºážáá¬ážááá·áº áá±áá¬áá±á·á áºááŸáá·áº áá®ážá ááºáá±á¬ ááá¯ááºáá áºáá¯ááŸáááá«áááºá
- á á¬áááºážá á áºá¡ááœááºá áá±áá¬á¡áá»á¬ážááŒá®ážáá°áá²á·á¡ááœáẠI/O disk ááœá±áá±á«áºááŸá¬ áááŒá¯ááºážáá®ážááá¡á±á¬áẠáá®ážááŒá¬ážá ááºáá áºáá¯ááá¯áááºá
- ááááºážá¡áá»ááºá¡áááºáá¯á¶ááŒá¯á¶áá±ážáááºáááºážáá»á¬ážááẠáá±áá¬ááá¯ááºážááœáẠGOST á á¶ááŸá¯ááºážáá»á¬áž ááá¯á¡ááºááŒá®áž áááºážááá¯á·ááẠááá¯ááºáá¶áá±á¬áº ááœá²ááŒá¬ážáááºááŸááºááẠááá¯á¡ááºáá«áááºá
áá±áá¬á¡áá¯á¶ážááŒá¯ááœáá·áºááᯠááá·áºáááºááŒááºážá
áá±áá¬áá»á¬ážááᯠáá¬ááœááºáááºááŸáá·áº á á®ážááœá¬ážááŒá ẠDBMS áá»á¬ážááŸáá·áº open source áá»á¬ážááœáẠáááºáá±á¬ááºááŒáá·áºááŸá¯ááẠá¡áá¯á¶ážááŒá¯ááá·áº áááºážááá¬áá»á¬ážááᯠááŒáá·áºááŒáá«á áá¯á·á
áá±áá°áá»á¡á¬ážááŒáá·áº áá¬ááá¯áá¯á¶ážááá¯ááºááá²-
- áá¯ááºáá¯á¶ážáá¯ááºáááºážáá»á¬ážááŸáá·áº áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááᯠáá¯ááºááŸááºááŒááºážááŸáá·áº ááŸá¯ááºááŸááºáááºááŒááºáž (Wrapping) - ááá¯ááá¯áááºááŸá¬ áááºááá¯ááºáá±á¬áá¯ááºááᯠáááºáááááŒá áºá á±áá±á¬ áá®ážááŒá¬ážáááááá¬áá»á¬ážááŸáá·áº á¡áá¯á¶ážáááºááŸá¯áá»á¬ážá ááŸááºáá«áááºá ááá¯á·ááá¯áá»áŸáẠáááºážááᯠááŒá±á¬ááºážáá²á ááááá¯ááºáááᯠááŒááºáááºááŒá¯ááŒááºá ááááá¯ááºáá«á á€áá»ááºážáááºáááºážááẠáá áºáá«áá áºáá¶ááœáẠDBMS áááºááœáẠá¡áááºážáá¯á¶áž ááá¯á¡ááºááẠ- ááá¯ááºá ááºááá·áºáááºáá»ááºáá»á¬áž ááá¯á·ááá¯áẠááœáá·áºááŒá¯áá»ááºááá¯ááºáᬠáá¯áá¹áááá¯áá¹ááááᯠáá¯ááºáá¯á¶ážáá¯ááºáááºážááŸáá·áº áá¯ááºáá±á¬ááºááŸá¯á¡ááá·áºááœáẠá¡ááá¡áá» áá¯ááºááŸááºáá¬ážáááºá
- á¡áááºážá¡ááá¯áẠáá±áá¬ááŒááºááá¯ááºááŸá¯ááᯠááá·áºáááºááŒááºáž (RLS) ááẠááá°áá®áá±á¬á¡áá¯á¶ážááŒá¯áá°áá»á¬ážááẠááá¬ážáá áºáá¯á¡á¬áž ááŒááºáá±á¬á¡áá«ááœááºá ááá¯á·áá±á¬áº áááºážááœááºááŸááá±á¬ á¡áááºážáá»á¬ážá ááá°áá®áá±á¬ááœá²á·á ááºážááŸá¯áá áºáá¯ááŒá áºááá·áº á¡áááºážá¡ááá·áºááŸááá áºá á¯á¶áá áºáŠážá¡á¬áž áá áºá á¯á¶áá áºáá¯á¡á¬áž ááŒáááááá«á
- áá±á¬áºááŒáá¬ážááá·áºáá±áá¬ááᯠáááºážááŒááºááŒááºáž (Masking) ááẠááá¬ážááá±á¬áºáá¶áá áºáá¯ááŸáá¡áá¯á¶ážááŒá¯áá°áá»á¬ážááẠáá±áᬠááá¯á·ááá¯áẠááŒááºááœáá·áºáá»á¬ážááá¯áá¬ááŒááºááá±á¬á¡áá«á ááá¯ááá¯áááºááŸá¬ á¡áá»áá¯á·áá±á¬á¡áá¯á¶ážááŒá¯áá°áá»á¬ážá¡ááœáẠá¡áá»ááºá¡áááºáá»á¬ážááᯠááááºááœá¬ážáááºááŒá áºáááºá áááºážááá¬ááẠá¡áá¯á¶ážááŒá¯áá°ááááºáá±á¬ááºááœáá·áºá¡ááá·áºáá±á«áºáá°áááºá áááºááá·áºá¡áá¬ááá¯ááŒááááºááᯠáá¯á¶ážááŒááºáááºá
- áá¯á¶ááŒá¯á¶áá±áž DBA/Application DBA/DBA access control ááẠDBMS ááá¯ááºááá¯ááºáááºáá±á¬ááºááœáá·áºááᯠááá·áºáááºááŒááºážááŒá áºááŒá®ážá ááá¯ááá¯áááºááŸá¬ á¡áá»ááºá¡áááºáá»á¬áž áá¯á¶ááŒá¯á¶áá±ážáááºáááºážáá»á¬ážááẠáá±áá¬áá±á·á áºá á®áá¶ááá·áºááœá²áá°áá»á¬ážááŸáá·áº á¡ááá®áá±ážááŸááºážá á®áá¶ááá·áºááœá²áá°áá»á¬ážááŸáá·áº ááœá²ááŒá¬ážááá¯ááºáááºá open source ááœáẠááá¯ááá¯á·áá±á¬áááºážááá¬á¡áááºážáááºáá¬ááŸááá±á¬áºáááºáž á á®ážááœá¬ážááŒá ẠDBMS áá»á¬ážááœáẠáááºážááá¯á·áá»á¬ážá áœá¬ááŸááááºá áá¬áá¬áá»á¬ážááá¯ááºááá¯ááºáááºáá±á¬ááºá¡áá¯á¶ážááŒá¯áá°áá»á¬ážá áœá¬ááŸááá±á¬á¡áá« áááºážááá¯á·ááá¯á¡ááºáá«áááºá
- ááá¯ááºá áá áºá¡ááá·áºááœáẠááá¯ááºáá»á¬ážáááºáá±á¬ááºááœáá·áºááᯠááá·áºáááºáá¬ážáááºá á á®áá¶ááá·áºááœá²áá°áá áºáŠážá á®ááẠááá¯á¡ááºáá±á¬áá±áá¬áá»á¬ážááá¯áᬠáááºáá±á¬ááºááŒáá·áºááŸá¯ááá¯ááºá á±áááºá¡ááœáẠáááºážááœáŸááºáá»ááºáá»á¬ážááᯠá¡ááœáá·áºá¡áá±ážáá»á¬ážááŸáá·áº á¡ááœáá·áºáá°ážáá»á¬áž ááá°ááá¯ááºáá«áááºá
- áááŒá áºááá±áááºáá±á¬ááºááœáá·áºááŸáá·áº ááŸááºáá¬ááºááŸááºážáááºážááŒááºáž - á€áááºážááá¬áá»á¬ážááᯠá¡áá¯á¶ážááŒá¯áá²áá«áááºá
- DBMS á០ááá¯ááºááá¯áẠá¡áá¯á¶ážáá áá¯ááºááŸááºááŒááºáž ááẠáá¬áá¬áááºááŒááºážááŸá áá±á¬á·á á®áá¶ááá·áºááœá²ááŸá¯ááŒáá·áº client-side encryption ááŒá áºáááºá
- áá±áᬠáá¯ááºááŸááºááŒááºáž á¥ááá¬á¡á¬ážááŒáá·áºá columnar encryption ááẠdatabase á áá±á¬áºáá¶áá áºáá¯áááºážááᯠencrypt áá¯ááºááá·áº ááá¹ááá¬ážáá áºáá¯ááᯠáááºá¡áá¯á¶ážááŒá¯áá±á¬á¡áá«ááŒá áºáááºá
áááºážááẠDBMS áá áœááºážáá±á¬ááºáááºááᯠáááºááá¯á·á¡áá»áá¯ážáááºáá±á¬ááºááááºážá
PostgreSQL ááœáẠcolumnar encryption á á¥ááá¬ááᯠááŒáá·áºááŒáá«á áá¯á·á pgcrypto module áá áºáá¯áá«ááŸááááºá áááºážáááºáááºááœá±ážáá»ááºáá¬ážáá±á¬á¡ááœááºáá»á¬ážááᯠáá¯ááºááŸááºáá¬ážáá±á¬áá¯á¶á á¶ááŒáá·áº ááááºážáááºážááá¯ááºá á±áá«áááºá áá±áá¬á¡áá»áá¯á·áᬠáááºááá¯ážááŸáááá·áºá¡áá« áááºážááẠá¡áá¯á¶ážáááºáááºá áá¯ááºááŸááºáá¬ážáá±á¬ á¡ááœááºáá»á¬ážááᯠáááºáááºá áááá¯ááºážááá·áºááẠáá¯ááºááŸááºááŒááºážáá±á¬á·ááᯠáá±ážááá¯á·áááºá áá¬áá¬ááẠáá±áá¬ááᯠáá¯ááºááŸááºááŒá®áž áááºážááᯠáá¯á¶ážá áœá²áá°áᶠááŒááºáá±ážáááºá áá±á¬á·ááá«áá²á ááá·áºáá±áá¬ááᯠáááºáá°áá»áŸ ááá¯ááºááá¯ááºáá«á
pgcrypto áá²á· á ááºážáááºááŒáá·áºáá¡á±á¬ááº. áá¯ááºááŸááºáá¬ážáá±á¬áá±áá¬ááŸáá·áº áá¯á¶ááŸááºáá±áá¬áá«áá±á¬ ááá¬ážáá áºáá¯ááᯠáááºáá®ážááŒáá«á áá¯á·á ááá¬ážáá»á¬ážáááºáá®ážáááºá¡ááœáẠá¡á±á¬ááºááœááºáá±á¬áºááŒáá¬ážáá±á¬ ááœáŸááºááŒá¬ážáá»ááºáá»á¬ážááŸá¬ áááá á¬ááŒá±á¬ááºážááœáẠá¡áá¯á¶ážáááºáá±á¬ command áá áºáá¯áá«ááŸáááẠ- DBMS ááŸááºáá¯á¶áááºááŒááºážááŒáá·áº extension ááᯠááá¯ááºááá¯ááºáááºáá®ážááŒááºážááŒá áºáááº-
CREATE EXTENSION pgcrypto;
CREATE TABLE t1 (id integer, text1 text, text2 text);
CREATE TABLE t2 (id integer, text1 bytea, text2 bytea);
INSERT INTO t1 (id, text1, text2)
VALUES (generate_series(1,10000000), generate_series(1,10000000)::text, generate_series(1,10000000)::text);
INSERT INTO t2 (id, text1, text2) VALUES (
generate_series(1,10000000),
encrypt(cast(generate_series(1,10000000) AS text)::bytea, 'key'::bytea, 'bf'),
encrypt(cast(generate_series(1,10000000) AS text)::bytea, 'key'::bytea, 'bf'));
ááá¯á·áá±á¬ááºá ááá¬ážáá áºáá¯á á®ááŸáá±áá¬ááá°áá¬áá áºáá¯ááŒá¯áá¯ááºááŒá®áž á¡áá±á¬ááºá¡áááºáá±á¬áºáá»áááºáá»á¬ážááá¯ááŒáá·áºááŒáá«á áá¯á·á
áá¯ááºááŸááºááŒááºážáá¯ááºáá±á¬ááºáá»ááºááá«áá² ááá¬ážáá áºáá¯á០ááœá±ážáá»ááºááŒááºážá:
psql -c "timing" -c "select * from t1 limit 1000;" "host=192.168.220.129 dbname=taskdb
user=postgres sslmode=disable" > 1.txt
á¡áá»áááºááŸááºáá¬áá®ááᯠááœáá·áºáá¬ážáááºá
id | text1 | á
á¬áá¬ážá
â+ââ-+ââ-
á | á | á
á | á | á
á | á | á
...
997 | 997 | ááá
998 | 998 | ááá
999 | 999 | ááá
1000 | 1000 | áááá
ááá¯ááºáž (áááá)á
á¡áá»áááº- 1,386 ms
áá¯ááºááŸááºááŒááºážáá¯ááºáá±á¬ááºáá»ááºáá«ááŸááá±á¬ ááá¬ážá០ááœá±ážáá»ááºááŸá¯-
psql -c "timing" -c "select id, decrypt(text1, 'key'::bytea, 'bf'),
decrypt(text2, 'key'::bytea, 'bf') from t2 limit 1000;"
"host=192.168.220.129 dbname=taskdb user=postgres sslmode=disable" > 2.txt
á¡áá»áááºááŸááºáá¬áá®ááᯠááœáá·áºáá¬ážáááºá
id | á
á¬ááŸáẠ| á
á¬ááŸááº
â+ââââââ+ââââ
á | x1 | xáá
á | x2 | xáá
3 | x33 | xáá
...
á | x999 | xáá
1000 | x31303030 | xáá
ááá¯ááºáž (áááá)á
á¡áá»áááº- 50,203 ms
á ááºážáááºááŸá¯ááááº:
áá¯ááºááŸááºááŒááºážáááŸááá²
Pgcrypto (áá¯ááºááŸááº)
ááá°áᬠá¡áááºáž áááá
1,386 ms
50,203 ms
á
á®áá®áá°
15%
35%
RAM ááá¯
+ 5%
áá¯ááºááŸááºááŒááºážááẠá áœááºážáá±á¬ááºáááºá¡áá±á«áº ááŒá®ážáá¬ážáá±á¬ áááºáá±á¬ááºááŸá¯ááŸááááºá áá¯ááºááŸááºáá¬ážáá±á¬áá±áá¬á áá¯ááºááŸááºááŒááºážáá¯ááºáá±á¬ááºááŸá¯áá»á¬áž (áá¯á¶ááŸááºá¡á¬ážááŒáá·áº ááá·áºáá¯áá¹áááá±áááœáẠáá áºáááºáá¬ážáá²ááŒá áºáááº) ááŒá áºáá±á¬ááŒá±á¬áá·áº á¡áá»áááºááá¯ááºááá¯ážáá¬áááºááᯠááœá±á·ááŒááºááá¯ááºáááºá ááá¯ááá¯áááºááŸá¬á á¡áá»áá¯á·áá±á¬áá±áá¬áá« á ááºáá±á¬áá±á¬áºáá¶áá»á¬ážá¡á¬ážáá¯á¶ážááᯠencrypt áá¯ááºááŒááºážáá áááºáá°ážáááºá áœááºážáá±á¬ááºáááºáá»áááºážááŒááºážááŸáá·áºá¡áá°á¡ááŒáá·áºá¡ á ááŒá áºáááºá
ááá¯á·áá±á¬áºá áá¯ááºááŸááºááŒááºážááẠááŒá¿áá¬á¡á¬ážáá¯á¶ážááᯠááŒá±ááŸááºážáá±ážááá·áº ááœá±áá±á¬ááºáá»ááºáááºáá áºáá¯ááá¯ááºáá«á áá¯ááºááŸááºáá¬ážáá±á¬ áá±áá¬ááŸáá·áº á¡áá»ááºá¡áááºááᯠáá¯ááºááŸááºááŒááºážááŸáá·áº ááá¯á·ááœáŸááºááŒááºáž áá¯ááºáááºážá ááºá¡ááœááºáž áá¬áá¬áá±á«áºááœáẠáááºááŸááááºá ááá¯á·ááŒá±á¬áá·áºá á áá áºá á®áá¶ááá·áºááœá²áá°áá²á·ááá¯á· áá±áá¬áá±á·á áºáá¬áá¬ááá¯á· á¡ááŒáá·áºá¡ááááºáá±á¬ááºááœáá·áºááŸááá°á áá±á¬á·áá»á¬ážááᯠááŒá¬ážááŒááºááá¯ááºáááºá
á¡áá¯á¶ážááŒá¯áá°á¡á¬ážáá¯á¶ážá¡ááœáẠáá±á¬áºáá¶áá áºáá¯áá¯á¶ážá¡ááœáẠáá±á¬á·áá áºáá¯ááŸááá±á¬á¡áá« (á¡á¬ážáá¯á¶ážá¡ááœááºááá¯ááºáá±á¬áºáááºáž á¡ááá·áºá¡áááºáá áºáá¯á áá¯á¶ážá áœá²áá°áá»á¬ážá¡ááœááº)á áááºážááẠá¡ááŒá²áááºážáá±á¬ááºážááœááºááŒá®áž ááŸááºáááºáááºááá¯ááºáá«á ááá¯á·ááŒá±á¬áá·áº áááºážááá¯á·ááẠá¡áá¯á¶ážá០á¡áá¯á¶ážáá áá¯ááºááŸááºá áá áºááᯠá áááºáá¯ááºáá±á¬ááºáá²á·ááŒá®áž DBMS ááœáẠclient ááŸáá·áº server áááºááœáẠáá±áá¬á á¬ááŸááºááŒááºážá¡ááœáẠááœá±ážáá»ááºá áá¬áá»á¬ážááᯠá áááºá ááºážá á¬ážáá²á·ááŒá®áž ááá¯áá°áá®áá±á¬ key-vault ááá¯ááŸá±á¬ááºááŸá¯áá»á¬áž áá±á«áºáá¬ááẠ- DBMS ááœáẠáá±á¬á·á á®áá¶ááá·áºááœá²ááŸá¯ááᯠáá¶á·ááá¯ážáá±ážááá·áº áá®ážááŒá¬ážáá¯ááºáá¯ááºáá»á¬áž ááœááºá
áá¯ááºááœááºááŸá¯ááŸáá·áº ááœáá·áºáááºážáááºážááŒá ẠDBMS ááœáẠáá¯á¶ááŒá¯á¶áá±ážá¡ááºá¹áá«áááºáá»á¬áž
áá¯ááºáááºážáá±á¬ááºáá¬
áá¯á¶á
á¶
á
áá¬ážááŸááºáá°áá«á
ááŸá±á
á¬ááá»ážá
á
á»áá±áž
áá¯ááºáá¯á¶ážáá¯ááºáááºážáá»á¬ážááŸáá·áº áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážá á¡áááºážá¡ááŒá
áºáá¯ááºááᯠáá¬ááœááºááŒááºážá
RLS
encryption
Oracle á
á
á®ážááœá¬ážááŒá
áº
+
+
+
+
+
MsSql
á
á®ážááœá¬ážááŒá
áº
+
+
+
+
+
á
á®ážááœá¬ážááŒá
áº
+
+
+
+
extensions ááœá±ááá¯
PostgreSQL
á¡ááá²á·
extensions ááœá±ááá¯
extensions ááœá±ááá¯
-
+
extensions ááœá±ááá¯
MongoDb
á¡ááá²á·
-
+
-
-
MongoDB Enterprise ááœááºáᬠáááá¯ááºáááºá
ááá¬ážááẠááŒá®ážááŒáá·áºá
á¯á¶ááẠáá±ážáá±á¬áºáááºáž á¡ááŒá±á¡áá±ááŸá¬ á€ááá¯á·ááŒá
áºáááº- á
á®ážááœá¬ážáá±ážáá¯ááºáá¯ááºáá»á¬ážááœáẠáá¯á¶ááŒá¯á¶áá±ážááŒá¿áá¬áá»á¬ážááᯠá¡áá»áááºá¡áá±á¬áºááŒá¬á¡á±á¬áẠááŒá±ááŸááºážáá¬ážááŒá®ážá open source ááœáẠá
ááºážáááºážá¡ááá¯ááºážá á¡áá»áá¯á·áá±á¬ add-ons áá»á¬ážááᯠáá¯á¶ááŒá¯á¶áá±ážá¡ááœáẠá¡áá¯á¶ážááŒá¯áááºá áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážá
áœá¬ áá»á±á¬ááºáá¯á¶ážáá±áá«áááºá ááá«ááá¶ááŸá¬ áá
áºáá¯áá¯ááá·áºááááºá á¥ááá¬á¡á¬ážááŒáá·áºá á
áá¬ážááŸááºáá°áá«ááá»á¬áž - PostgreSQL ááœáẠááá°áá®áá±á¬ ááá¯ážáá»á²á·ááŸá¯áá»á¬áž áá»á¬ážá
áœá¬ááŸáááẠ(
áááºáá±áá¬ááŸá¬á០ááá¯á¡ááºáá¬áááŸáááẠáá¬áá¯ááºááá²á? á¥ááá¬á¡á¬ážááŒáá·áºá áááºááẠáá±á¬ááºáááºááá¯á¡ááºááá·áº áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááá«áá±á¬ áá®ážááŒá¬áž DBMS ááᯠáááºá¡áá¯á¶ážááŒá¯ááá¯áááºá
ááá¯á·áá±á¬áẠáááºááẠááá°áá®áá±á¬ DBMSs áá»á¬ážááŸáá·áº á¡áá¯ááºáá¯ááºáá±á¬ ááŒááºáá¡ááœá²á·á¡á ááºážááŒá±ááŸááºážáá»ááºáá»á¬ážá¡á¬áž á¥ááá¬á¡á¬ážááŒáá·áº Crypto DB ááá¯á·ááá¯áẠGarda DB ááᯠá¡áá¯á¶ážááŒá¯ááá¯ááºáááºá áá»áœááºá¯ááºááá¯á·ááẠááŒááºááœááºáž á¡ááá¯ááºážá០ááŒá±ááŸááºážáá»ááºáá»á¬ážá¡ááŒá±á¬ááºáž ááŒá±á¬áá«áá áááºážááá¯á·ááẠopen source ááẠGOSTs á¡ááŒá±á¬ááºáž ááá¯áá±á¬ááºážáááºá
áá¯áááááœá±ážáá»ááºááŸá¯ááŸá¬ áááºááá¯ááºááá¯áẠááá¯á¡ááºáááºáá»á¬ážááᯠáá±ážáááºá áá¯ááºáááºážá ááºá¡ááá·áºááœáẠá¡ááá®áá±ážááŸááºážááœáẠáá±áá¬áááºáá±á¬ááºááœáá·áºááŸáá·áº áá¯ááºááŸááºááŒááºážááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºáááºááŒá áºáááºá ááŸááºáá«áááºá GOST áá²á·ááᯠááá¯áááºáááá·áºáááºá ááá¯á·áá±á¬áº áá±áá°áá»á¡á¬ážááŒáá·áºá áááºááẠááá¯á¡ááºáááᯠáá±áá¬ááᯠááŸááºáá¬ážááá¯ááºááŒá®áž DBMS ááœáẠáá¬ážáᬠáááºážááᯠááŒááºáááºááá°áᬠááá¯á¡ááºáááᯠá á¬ááŸááºáᬠá¡ááºááºá¡ááá·áºááœáẠáá»ááºáá»ááºáž áá¯ááºáá±á¬ááºááá¯ááºáááºá áá áºáá»áááºáááºážááŸá¬áááºá á¡ááá®áá±ážááŸááºážááœáẠဠalgorithms áá»á¬ážááᯠáááºáááºááá¯á·áá¬ááœááºáááºááᯠáá»ááºáá»ááºážá ááºážá á¬ážáá«á áá»áœááºá¯ááºááá¯á·áá¡ááŒááºá¡áá áááºážááẠDBMS á¡ááá·áºááœááºáá¯ááºáá±á¬ááºááá·áºáááºá áááºážáááºááá¯ááá¯ááŒááºáááºá áœá¬á¡áá¯ááºáá¯ááºááá¯ááºáá±á¬ááŒá±á¬áá·áºááŒá áºáááºá
áá®á¡á
á®áááºáá¶á
á¬ááᯠááááá¯á¶áž áááºááŒáá²á·áᬠááŒá
áºáá«áááºá
áá±á¬ááºááẠáá¬á¡ááŒá±á¬ááºážá¡áá¬ááœá± áááºáááºáááá²:
Ceph áááºááá¯- Cloud Block Storage MCS .ááá±á¬áá»ááºáá áºáá¯á¡ááœáẠáá±áá¬áá±á·á áºáá áºáá¯ááᯠáááºááá¯ááœá±ážáá»ááºáááá²ááá¯áᬠáááºááœá±ážáá»ááºá áᬠáááá¯áá±á¬á·áá«áá°ážá .
source: www.habr.com