ΠΠ΅Π½Ρ Π·ΠΎΠ²ΡΡ ΠΠ΅Π½ΠΈΡ Π ΠΎΠΆΠΊΠΎΠ², Ρ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΠΈΡΠ΅Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΠ Π² ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Β«ΠΠ°Π·ΠΈΠ½ΡΠΎΡΠΌΡΠ΅ΡΠ²ΠΈΡΒ», Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ ΠΏΡΠΎΠ΄ΡΠΊΡΠ°
Π‘ΡΠ°ΡΡΡ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²Π»Π΅Π½Π° ΠΏΠΎ Π²ΡΡΡΡΠΏΠ»Π΅Π½ΠΈΡ Π½Π°
Π ΡΡΠ°ΡΡΠ΅ Π±ΡΠ΄Π΅Ρ ΡΡΠΈ ΡΠ°ΡΡΠΈ:
- ΠΠ°ΠΊ Π·Π°ΡΠΈΡΠ°ΡΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ.
- Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Π°ΡΠ΄ΠΈΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ ΠΈ ΠΊΠ°ΠΊ ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°ΡΡ, ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΡΠΎ ΡΡΠΎΡΠΎΠ½Ρ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΊ Π½Π΅ΠΉ.
- ΠΠ°ΠΊ Π·Π°ΡΠΈΡΠ°ΡΡ Π΄Π°Π½Π½ΡΠ΅ Π² ΡΠ°ΠΌΠΎΠΉ Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ Π΅ΡΡΡ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ.
Π’ΡΠΈ ΡΠΎΡΡΠ°Π²Π»ΡΡΡΠΈΡ
Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ Π‘Π£ΠΠ: Π·Π°ΡΠΈΡΠ° ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ, Π°ΡΠ΄ΠΈΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ ΠΈ Π·Π°ΡΠΈΡΠ° Π΄Π°Π½Π½ΡΡ
ΠΠ°ΡΠΈΡΠ° ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ
ΠΠΎΠ΄ΠΊΠ»ΡΡΠ°ΡΡΡΡ ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠ°ΠΊ Π½Π°ΠΏΡΡΠΌΡΡ, ΡΠ°ΠΊ ΠΈ ΠΎΠΏΠΎΡΡΠ΅Π΄ΠΎΠ²Π°Π½Π½ΠΎ ΡΠ΅ΡΠ΅Π· Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΠΎ ΡΡΠΎΡΠΎΠ½Ρ Π±ΠΈΠ·Π½Π΅ΡΠ°, ΡΠΎ Π΅ΡΡΡ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ Π‘Π£ΠΠ, Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΡΠ΅Ρ Ρ Π½Π΅ΠΉ Π½Π΅ Π½Π°ΠΏΡΡΠΌΡΡ.
ΠΠ΅ΡΠ΅Π΄ ΡΠ΅ΠΌ ΠΊΠ°ΠΊ Π³ΠΎΠ²ΠΎΡΠΈΡΡ ΠΎ Π·Π°ΡΠΈΡΠ΅ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΉ, Π½ΡΠΆΠ½ΠΎ ΠΎΡΠ²Π΅ΡΠΈΡΡ Π½Π° Π²Π°ΠΆΠ½ΡΠ΅ Π²ΠΎΠΏΡΠΎΡΡ, ΠΎΡ ΠΊΠΎΡΠΎΡΡΡ Π·Π°Π²ΠΈΡΠΈΡ, ΠΊΠ°ΠΊ Π±ΡΠ΄ΡΡ Π²ΡΡΡΡΠ°ΠΈΠ²Π°ΡΡΡΡ ΠΌΠ΅ΡΠΎΠΏΡΠΈΡΡΠΈΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ:
- ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ΅Π½ Π»ΠΈ ΠΎΠ΄ΠΈΠ½ Π±ΠΈΠ·Π½Π΅Ρ-ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΎΠ΄Π½ΠΎΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π‘Π£ΠΠ;
- ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅ΡΡΡ Π»ΠΈ Π΄ΠΎΡΡΡΠΏ ΠΊ Π΄Π°Π½Π½ΡΠΌ Π‘Π£ΠΠ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΡΠ΅Π· API, ΠΊΠΎΡΠΎΡΡΠΉ Π²Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΡΠ΅ΡΠ΅, Π»ΠΈΠ±ΠΎ Π΅ΡΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠ°Π±Π»ΠΈΡΠ°ΠΌ Π½Π°ΠΏΡΡΠΌΡΡ;
- Π²ΡΠ΄Π΅Π»Π΅Π½Π° Π»ΠΈ Π‘Π£ΠΠ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ Π·Π°ΡΠΈΡΠ΅Π½Π½ΡΠΉ ΡΠ΅Π³ΠΌΠ΅Π½Ρ, ΠΊΡΠΎ ΠΈ ΠΊΠ°ΠΊ Ρ Π½ΠΈΠΌ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΡΠ΅Ρ;
- ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π»ΠΈ pooling/proxy ΠΈ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΡΠ΅ ΡΠ»ΠΎΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ Π²ΡΡΡΡΠΎΠ΅Π½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΈ ΠΊΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ .
Π’Π΅ΠΏΠ΅ΡΡ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ Π΄Π»Ρ Π·Π°ΡΠΈΡΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ:
- ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΊΠ»Π°ΡΡΠ° database firewall. ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΡΠ»ΠΎΠΉ Π·Π°ΡΠΈΡΡ, ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ, ΠΏΠΎΠ²ΡΡΠΈΡ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎΡΡΡ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π² Π‘Π£ΠΠ, ΠΊΠ°ΠΊ ΠΌΠ°ΠΊΡΠΈΠΌΡΠΌ β Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ Π·Π°ΡΠΈΡΡ Π΄Π°Π½Π½ΡΡ .
- ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΏΠ°ΡΠΎΠ»ΡΠ½ΡΠ΅ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ. ΠΡ
ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²ΡΡΡΡΠΎΠ΅Π½Π° Π²Π°ΡΠ° Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΠ°. Π Π»ΡΠ±ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ β ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠ°ΡΠΎΠ»Ρ Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ ΠΊ Π‘Π£ΠΠ, ΠΌΠ°Π»ΠΎ Π΄Π»Ρ Π·Π°ΡΠΈΡΡ. ΠΡΡΡ ΡΡΠ΄ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² Π‘Π£ΠΠ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΡ
ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠΎΠ²Π°ΡΡ, ΡΡΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈ ΠΏΠ°ΡΠΎΠ»Ρ ΡΡΠ΅Π±ΡΡΡ Π°ΠΊΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ.
ΠΠΎΡΠΈΡΠ°ΡΡ ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΏΡΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΡΠ΅Π½ΠΊΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ ΠΌΠΎΠΆΠ½ΠΎ
Π·Π΄Π΅ΡΡ , ΡΠ°ΠΊ ΠΆΠ΅ ΠΏΡΠΎ MS SQL Vulnerability Assessmen ΠΌΠΎΠΆΠ½ΠΎ ΡΠ·Π½Π°ΡΡΡΡΡ .Β - ΠΠ±ΠΎΠ³Π°ΡΠ°ΠΉΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ ΡΠ΅ΡΡΠΈΠΈ Π½ΡΠΆΠ½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ΅ΠΉ. ΠΡΠ»ΠΈ ΡΠ΅ΡΡΠΈΡ Π½Π΅ΠΏΡΠΎΠ·ΡΠ°ΡΠ½Π°Ρ, Π²Ρ Π½Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΡΠ΅, ΠΊΡΠΎ Π² Π΅Π΅ ΡΠ°ΠΌΠΊΠ°Ρ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π² Π‘Π£ΠΠ, ΠΌΠΎΠΆΠ½ΠΎ Π² ΡΠ°ΠΌΠΊΠ°Ρ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΠΎΠΌ, ΠΊΡΠΎ, ΡΡΠΎ ΠΈ Π·Π°ΡΠ΅ΠΌ Π΄Π΅Π»Π°Π΅Ρ. ΠΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ²ΠΈΠ΄Π΅ΡΡ Π² Π°ΡΠ΄ΠΈΡΠ΅.
- ΠΠ°ΡΡΡΠ°ΠΈΠ²Π°ΠΉΡΠ΅ SSL, Π΅ΡΠ»ΠΈ Ρ Π²Π°Ρ Π½Π΅Ρ ΡΠ΅ΡΠ΅Π²ΠΎΠ³ΠΎ ΡΠ°Π·Π³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ Π‘Π£ΠΠ ΠΎΡ ΠΊΠΎΠ½Π΅ΡΠ½ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ, ΠΎΠ½Π° Π½Π΅ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΌ VLAN. Π ΡΠ°ΠΊΠΈΡ ΡΠ»ΡΡΠ°ΡΡ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ Π·Π°ΡΠΈΡΠ°ΡΡ ΠΊΠ°Π½Π°Π» ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Π΅ΠΌ ΠΈ ΡΠ°ΠΌΠΎΠΉ Π‘Π£ΠΠ. ΠΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ Π·Π°ΡΠΈΡΡ Π΅ΡΡΡ Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ ΠΈ ΡΡΠ΅Π΄ΠΈ open source.
ΠΠ°ΠΊ ΡΡΠΎ ΠΏΠΎΠ²Π»ΠΈΡΠ΅Ρ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π‘Π£ΠΠ?
ΠΠΎΡΠΌΠΎΡΡΠΈΠΌ Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ΅ PostgreSQL, ΠΊΠ°ΠΊ SSL Π²Π»ΠΈΡΠ΅Ρ Π½Π° Π½Π°Π³ΡΡΠ·ΠΊΡ CPU, ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΉΠΌΠΈΠ½Π³ΠΎΠ² ΠΈ ΡΠΌΠ΅Π½ΡΡΠ΅Π½ΠΈΠ΅ TPS, Π½Π΅ ΡΠΉΠ΄Π΅Ρ Π»ΠΈ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ΅ΡΡΡΡΠΎΠ², Π΅ΡΠ»ΠΈ Π΅Π³ΠΎ Π²ΠΊΠ»ΡΡΠΈΡΡ.
ΠΠ°Π³ΡΡΠΆΠ°Π΅ΠΌ PostgreSQL, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ pgbench β ΡΡΠΎ ΠΏΡΠΎΡΡΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° ΡΠ΅ΡΡΠΎΠ² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ. ΠΠ½Π° ΠΌΠ½ΠΎΠ³ΠΎΠΊΡΠ°ΡΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΎΠ΄Π½Ρ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π² ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΡ ΡΠ΅Π°Π½ΡΠ°Ρ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ , Π° Π·Π°ΡΠ΅ΠΌ Π²ΡΡΠΈΡΠ»ΡΠ΅Ρ ΡΡΠ΅Π΄Π½ΡΡ ΡΠΊΠΎΡΠΎΡΡΡ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ.
Π’Π΅ΡΡ 1 Π±Π΅Π· SSL ΠΈ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ 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"
Π’Π΅ΡΡ 2 Π±Π΅Π· SSL ΠΈ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ 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
Π Π΅Π·ΡΠ»ΡΡΠ°ΡΡ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ:
Β
NO SSL
SSL
Π£ΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΠΏΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ
latency average
171.915 ms
187.695 ms
tpsΒ including connections establishing
58.168112
53.278062
tps excluding connections establishing
64.084546
58.725846
CPU
24%
28%
ΠΡΠ΅ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π² ΠΎΠ΄Π½ΠΎ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅
latency average
6.722 ms
6.342 ms
tps including connections establishing
1587.657278
1576.792883
tps excluding connections establishing
1588.380574
1577.694766
CPU
17%
21%
ΠΡΠΈ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΡ Π½Π°Π³ΡΡΠ·ΠΊΠ°Ρ Π²Π»ΠΈΡΠ½ΠΈΠ΅ SSL ΡΠΎΠΏΠΎΡΡΠ°Π²ΠΈΠΌΠΎ Ρ ΠΏΠΎΠ³ΡΠ΅ΡΠ½ΠΎΡΡΡΡ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ. ΠΡΠ»ΠΈ ΠΎΠ±ΡΠ΅ΠΌ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Π΅ΠΌΡΡ Π΄Π°Π½Π½ΡΡ ΠΎΡΠ΅Π½Ρ Π±ΠΎΠ»ΡΡΠΎΠΉ, ΡΠΈΡΡΠ°ΡΠΈΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π΄ΡΡΠ³Π°Ρ. ΠΡΠ»ΠΈ ΠΌΡ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ ΠΎΠ΄Π½ΠΎ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠ°ΠΆΠ΄ΡΡ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ (ΡΡΠΎ Π±ΡΠ²Π°Π΅Ρ ΡΠ΅Π΄ΠΊΠΎ, ΠΎΠ±ΡΡΠ½ΠΎ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Π΄Π΅Π»ΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌΠΈ), Ρ Π²Π°Ρ Π±ΠΎΠ»ΡΡΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ/ΠΎΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ, Π²Π»ΠΈΡΠ½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΡΡΡ Π±ΠΎΠ»ΡΡΠ΅. Π’ΠΎ Π΅ΡΡΡ ΡΠΈΡΠΊΠΈ ΡΠ½ΠΈΠΆΠ΅Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ, ΠΎΠ΄Π½Π°ΠΊΠΎ, ΡΠ°Π·Π½ΠΈΡΠ° Π½Π΅ Π½Π°ΡΡΠΎΠ»ΡΠΊΠΎ Π±ΠΎΠ»ΡΡΠ°Ρ, ΡΡΠΎΠ±Ρ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π·Π°ΡΠΈΡΡ.
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ β ΡΠΈΠ»ΡΠ½ΠΎΠ΅ ΡΠ°Π·Π»ΠΈΡΠΈΠ΅ Π΅ΡΡΡ, Π΅ΡΠ»ΠΈ ΡΡΠ°Π²Π½ΠΈΠ²Π°ΡΡ ΡΠ΅ΠΆΠΈΠΌΡ ΡΠ°Π±ΠΎΡΡ: Π² ΡΠ°ΠΌΠΊΠ°Ρ ΠΎΠ΄Π½ΠΎΠΉ ΡΠ΅ΡΡΠΈΠΈ Π²Ρ ΡΠ°Π±ΠΎΡΠ°Π΅ΡΠ΅ ΠΈΠ»ΠΈ ΡΠ°Π·Π½ΡΡ . ΠΡΠΎ ΠΏΠΎΠ½ΡΡΠ½ΠΎ: Π½Π° ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΡΡΠ°ΡΡΡΡΡ ΡΠ΅ΡΡΡΡΡ.
Π£ Π½Π°Ρ Π±ΡΠ» ΠΊΠ΅ΠΉΡ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π»ΠΈ Zabbix Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ trust, ΡΠΎ Π΅ΡΡΡ md5 Π½Π΅ ΠΏΡΠΎΠ²Π΅ΡΡΠ»ΠΈ, Π² Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Π½Π΅ Π±ΡΠ»ΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ. ΠΠΎΡΠΎΠΌ Π·Π°ΠΊΠ°Π·ΡΠΈΠΊ ΠΏΠΎΠΏΡΠΎΡΠΈΠ» Π²ΠΊΠ»ΡΡΠΈΡΡ ΡΠ΅ΠΆΠΈΠΌ md5-Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ. ΠΡΠΎ Π΄Π°Π»ΠΎ Π±ΠΎΠ»ΡΡΡΡ Π½Π°Π³ΡΡΠ·ΠΊΡ Π½Π° CPU, ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΏΡΠΎΡΠ΅Π»Π°. Π‘ΡΠ°Π»ΠΈ ΠΈΡΠΊΠ°ΡΡ ΠΏΡΡΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ. ΠΠ΄Π½ΠΎ ΠΈΠ· Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ β ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΡΠ΅ΡΠ΅Π²ΠΎΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅, ΡΠ΄Π΅Π»Π°ΡΡ Π΄Π»Ρ Π‘Π£ΠΠ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ VLAN, Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ, ΡΡΠΎΠ±Ρ Π±ΡΠ»ΠΎ ΠΏΠΎΠ½ΡΡΠ½ΠΎ, ΠΊΡΠΎ ΠΈ ΠΎΡΠΊΡΠ΄Π° ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ ΠΈ ΡΠ±ΡΠ°ΡΡ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ.Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ, ΡΡΠΎΠ±Ρ ΡΠ½ΠΈΠ·ΠΈΡΡ ΠΈΠ·Π΄Π΅ΡΠΆΠΊΠΈ ΠΏΡΠΈ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΠΈ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ, Π½ΠΎ Π² ΡΠ΅Π»ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Π²Π»ΠΈΡΠ΅Ρ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΈ ΡΡΠ΅Π±ΡΠ΅Ρ ΡΡΠΈΡΡΠ²Π°ΡΡ ΡΡΠΈ ΡΠ°ΠΊΡΠΎΡΡ ΠΏΡΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ Π²ΡΡΠΈΡΠ»ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΌΠΎΡΠ½ΠΎΡΡΠ΅ΠΉ ΡΠ΅ΡΠ²Π΅ΡΠΎΠ² (ΠΆΠ΅Π»Π΅Π·Π°) Π΄Π»Ρ Π‘Π£ΠΠ.
ΠΡΠ²ΠΎΠ΄: Π² ΡΡΠ΄Π΅ ΡΠ΅ΡΠ΅Π½ΠΈΠΉ Π΄Π°ΠΆΠ΅ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΠ΅ Π½ΡΠ°Π½ΡΡ Π½Π° Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΌΠΎΠ³ΡΡ ΡΠΈΠ»ΡΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡΡΡ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ΅ ΠΈ ΠΏΠ»ΠΎΡ ΠΎ, ΠΊΠΎΠ³Π΄Π° ΡΡΠΎ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΠΏΠΎΠ½ΡΡΠ½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΠΈ Π² ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΠ².
ΠΡΠ΄ΠΈΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ
ΠΡΠ΄ΠΈΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π‘Π£ΠΠ. ΠΡΠ΄ΠΈΡ β ΡΡΠΎ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π½Π° ΡΠ°Π·Π½ΡΡ ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ°Ρ . ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈ database firewall, ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ°, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΡΡΠΎΠΈΡΡΡ Π‘Π£ΠΠ.
Π ΠΊΠΎΠΌΠΌΠ΅ΡΡΠ΅ΡΠΊΠΈΡ Π‘Π£ΠΠ ΡΡΠΎΠ²Π½Ρ Enterprise Ρ Π°ΡΠ΄ΠΈΡΠΎΠΌ Π²ΡΠ΅ Ρ ΠΎΡΠΎΡΠΎ, Π² open source β Π½Π΅ Π²ΡΠ΅Π³Π΄Π°. ΠΠΎΡ, ΡΡΠΎ Π΅ΡΡΡ Π² PostgreSQL:
- default log β Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠ΅ Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅;
- extensions: pgaudit β Π΅ΡΠ»ΠΈ Π²Π°ΠΌ Π½Π΅ Ρ Π²Π°ΡΠ°Π΅Ρ Π΄Π΅ΡΠΎΠ»ΡΠ½ΠΎΠ³ΠΎ Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΌΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠ°ΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ΅ΡΠ°ΡΡ ΡΠ°ΡΡΡ Π·Π°Π΄Π°Ρ.
ΠΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ Π΄ΠΎΠΊΠ»Π°Π΄Ρ Π² Π²ΠΈΠ΄Π΅ΠΎ:
Β«ΠΠ°Π·ΠΎΠ²Π°Ρ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½Π° ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΌ ΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ Π²Π΅Π΄Π΅Π½ΠΈΡ ΠΆΡΡΠ½Π°Π»Π° Ρ log_statement = all.
ΠΡΠΎ ΠΏΡΠΈΠ΅ΠΌΠ»Π΅ΠΌΠΎ Π΄Π»Ρ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π° ΠΈ Π΄ΡΡΠ³ΠΈΡ Π²ΠΈΠ΄ΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ, Π½ΠΎ Π½Π΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΡΡΠΎΠ²Π΅Π½Ρ Π΄Π΅ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ, ΠΎΠ±ΡΡΠ½ΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠΉ Π΄Π»Ρ Π°ΡΠ΄ΠΈΡΠ°.
ΠΠ΅Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΈΠΌΠ΅ΡΡ ΡΠΏΠΈΡΠΎΠΊ Π²ΡΠ΅Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ, Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΡ Ρ Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½ΡΡ .
Π’Π°ΠΊΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π½Π°ΠΉΡΠΈ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠ΅ ΡΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΠΈΠ½ΡΠ΅ΡΠ΅Ρ Π΄Π»Ρ Π°ΡΠ΄ΠΈΡΠΎΡΠ°.
Π‘ΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ΅ ΡΡΠ΅Π΄ΡΡΠ²ΠΎ Π²Π΅Π΄Π΅Π½ΠΈΡ ΠΆΡΡΠ½Π°Π»Π° ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΡΠΎ, ΡΡΠΎ Π·Π°ΠΏΡΠΎΡΠΈΠ» ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ pgAudit ΡΠΎΠΊΡΡΠΈΡΡΠ΅ΡΡΡ Π½Π° Π΄Π΅ΡΠ°Π»ΡΡ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΏΡΠΎΠΈΠ·ΠΎΡΠ»ΠΎ, ΠΊΠΎΠ³Π΄Π° Π±Π°Π·Π° Π΄Π°Π½Π½ΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ»Π° Π·Π°ΠΏΡΠΎΡ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π°ΡΠ΄ΠΈΡΠΎΡ ΠΌΠΎΠΆΠ΅Ρ Π·Π°Ρ ΠΎΡΠ΅ΡΡ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½Π°Ρ ΡΠ°Π±Π»ΠΈΡΠ° Π±ΡΠ»Π° ΡΠΎΠ·Π΄Π°Π½Π° Π² Π·Π°Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΎΠΊΠ½Π΅ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π½ΠΈΡ.
ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΡΡΡ ΠΏΡΠΎΡΡΠΎΠΉ Π·Π°Π΄Π°ΡΠ΅ΠΉ Π΄Π»Ρ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ Π°ΡΠ΄ΠΈΡΠ° ΠΈ grep, Π½ΠΎ ΡΡΠΎ, Π΅ΡΠ»ΠΈ Π²Π°ΠΌ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΡΡ ΡΡΠΎ-ΡΠΎ Π²ΡΠΎΠ΄Π΅ ΡΡΠΎΠ³ΠΎ (Π½Π°ΠΌΠ΅ΡΠ΅Π½Π½ΠΎ Π·Π°ΠΏΡΡΠ°Π½Π½ΠΎΠ³ΠΎ) ΠΏΡΠΈΠΌΠ΅ΡΠ°:
DO $$
BEGIN
EXECUTE ‘CREATE TABLE import’ || ‘ant_table (id INT)’;
END $$;
Π‘ΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ΅ Π²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΆΡΡΠ½Π°Π»Π° Π΄Π°ΡΡ Π²Π°ΠΌ ΡΡΠΎ:
LOG:Β statement: DO $$
BEGIN
EXECUTE ‘CREATE TABLE import’ || ‘ant_table (id INT)’;
END $$;
ΠΠΎΡ ΠΎΠΆΠ΅, ΡΡΠΎ Π΄Π»Ρ ΠΏΠΎΠΈΡΠΊΠ° ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΡΡΠ΅ΠΉ ΡΠ°Π±Π»ΠΈΡΡ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΡΡΠ΅Π±ΠΎΠ²Π°ΡΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ΅ Π·Π½Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° Π² ΡΠ΅Ρ ΡΠ»ΡΡΠ°ΡΡ , ΠΊΠΎΠ³Π΄Π° ΡΠ°Π±Π»ΠΈΡΡ ΡΠΎΠ·Π΄Π°ΡΡΡΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ.
ΠΡΠΎ Π½Π΅ ΠΈΠ΄Π΅Π°Π»ΡΠ½ΠΎ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π±ΡΠ»ΠΎ Π±Ρ ΠΏΡΠ΅Π΄ΠΏΠΎΡΡΠΈΡΠ΅Π»ΡΠ½Π΅Π΅ ΠΏΡΠΎΡΡΠΎ ΠΈΡΠΊΠ°ΡΡ ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ ΡΠ°Π±Π»ΠΈΡΡ.
ΠΠΎΡ Π³Π΄Π΅ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ»Π΅Π·Π΅Π½ pgAudit.
ΠΠ»Ρ ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄Π° ΠΎΠ½ Π²ΡΠ΄Π°ΡΡ ΡΡΠΎΡ Π²ΡΠ²ΠΎΠ΄ Π² ΠΆΡΡΠ½Π°Π»Π΅:
AUDIT: SESSION,33,1,FUNCTION,DO,,,Β«DO $$
BEGIN
EXECUTE ‘CREATE TABLE import’ || ‘ant_table (id INT)’;
END $$;"
AUDIT: SESSION,33,2,DDL,CREATE TABLE,TABLE,public.important_table,CREATE TABLE important_table (id INT)
Π Π΅Π³ΠΈΡΡΡΠΈΡΡΠ΅ΡΡΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π±Π»ΠΎΠΊ DO, Π½ΠΎ ΠΈ ΠΏΠΎΠ»Π½ΡΠΉ ΡΠ΅ΠΊΡΡ CREATE TABLE Ρ ΡΠΈΠΏΠΎΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ°, ΡΠΈΠΏΠΎΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΈ ΠΏΠΎΠ»Π½ΡΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ, ΡΡΠΎ ΠΎΠ±Π»Π΅Π³ΡΠ°Π΅Ρ ΠΏΠΎΠΈΡΠΊ.
ΠΡΠΈ Π²Π΅Π΄Π΅Π½ΠΈΠΈ ΠΆΡΡΠ½Π°Π»Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² SELECT ΠΈ DML pgAudit ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΡΡΠΎΠΈΡΡ Π΄Π»Ρ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡ, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠ΅ Π΅ΡΡΡ ΡΡΡΠ»ΠΊΠ° Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ΅.
ΠΠ΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·, ΡΡΠΎΠ±Ρ Π½Π°ΠΉΡΠΈ Π²ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΊΠ°ΡΠ°ΡΡΡΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΡ(
ΠΠ°ΠΊ ΡΡΠΎ ΠΏΠΎΠ²Π»ΠΈΡΠ΅Ρ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π‘Π£ΠΠ?
ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΡΠΎΠ²Π΅Π΄Π΅ΠΌ ΡΠ΅ΡΡΡ Ρ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ Π°ΡΠ΄ΠΈΡΠ° ΠΈ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ, ΡΡΠΎ Π±ΡΠ΄Π΅Ρ Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡΡ PostgreSQL. ΠΠΊΠ»ΡΡΠΈΠΌ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΠ ΠΏΠΎ Π²ΡΠ΅ΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌ.
Π ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅ ΠΏΠΎΡΡΠΈ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΠΌΠ΅Π½ΡΠ΅ΠΌ, ΠΈΠ· Π²Π°ΠΆΠ½ΠΎΠ³ΠΎ β Π²ΠΊΠ»ΡΡΠ°Π΅ΠΌ ΡΠ΅ΠΆΠΈΠΌ debug5, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΌΠ°ΠΊΡΠΈΠΌΡΠΌ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ.
postgresql.conf
log_destination = ‘stderr’
logging_collector = on
log_truncate_on_rotation = on
log_rotation_age = 1d
log_rotation_size = 10MB
log_min_messages = debug5
log_min_error_statement = debug5
log_min_duration_statement = 0
debug_print_parse = on
debug_print_rewritten = on
debug_print_plan = on
debug_pretty_print = on
log_checkpoints = on
log_connections = on
log_disconnections = on
log_duration = on
log_hostname = on
log_lock_waits = on
log_replication_commands = on
log_temp_files = 0
log_timezone = ‘Europe/Moscow’
ΠΠ° Π‘Π£ΠΠ PostgreSQL Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ 1 CPU, 2,8 ΠΠΡ, 2 ΠΠ± ΠΠΠ£, 40 ΠΠ± HDD ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΠΌ ΡΡΠΈ Π½Π°Π³ΡΡΠ·ΠΎΡΠ½ΡΡ ΡΠ΅ΡΡΠ°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
$ 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 ΡΠ΅ΠΊ
ΠΠΠ£
24%
40%
CPU
72%
91%
Π’Π΅ΡΡ 1 (50 ΠΊΠΎΠ½Π½Π΅ΠΊΡΠΎΠ²)
ΠΠΎΠ»-Π²ΠΎ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ Π·Π° 10 ΠΌΠΈΠ½
74169
32445
Π’ΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ/ΡΠ΅ΠΊ
123
54
Π‘ΡΠ΅Π΄Π½ΡΡ Π·Π°Π΄Π΅ΡΠΆΠΊΠ°
405 ΠΌΡ
925 ΠΌΡ
Π’Π΅ΡΡ 2 (150 ΠΊΠΎΠ½Π½Π΅ΠΊΡΠΎΠ² ΠΏΡΠΈ 100 Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ )
ΠΠΎΠ»-Π²ΠΎ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ Π·Π° 10 ΠΌΠΈΠ½
81727
31429
Π’ΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ/ΡΠ΅ΠΊ
136
52
Π‘ΡΠ΅Π΄Π½ΡΡ Π·Π°Π΄Π΅ΡΠΆΠΊΠ°
550 ΠΌΡ
1432 ΠΌΡ
ΠΡΠΎ ΡΠ°Π·ΠΌΠ΅ΡΡ
Π Π°Π·ΠΌΠ΅Ρ ΠΠ
2251 ΠΠ
2262 ΠΠ
Π Π°Π·ΠΌΠ΅Ρ Π»ΠΎΠ³ΠΎΠ² ΠΠ
0 ΠΠ±
4587 ΠΠ±
Π ΠΈΡΠΎΠ³Π΅: ΠΏΠΎΠ»Π½ΡΠΉ Π°ΡΠ΄ΠΈΡ β ΡΡΠΎ Π½Π΅ ΠΎΡΠ΅Π½Ρ Ρ ΠΎΡΠΎΡΠΎ. ΠΠ°Π½Π½ΡΡ ΠΎΡ Π°ΡΠ΄ΠΈΡΠ° ΠΏΠΎΠ»ΡΡΠΈΡΡΡ ΠΏΠΎ ΠΎΠ±ΡΠ΅ΠΌΡ, ΠΊΠ°ΠΊ Π΄Π°Π½Π½ΡΡ Π² ΡΠ°ΠΌΠΎΠΉ Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ , Π° ΡΠΎ ΠΈ Π±ΠΎΠ»ΡΡΠ΅. Π’Π°ΠΊΠΎΠΉ ΠΎΠ±ΡΠ΅ΠΌ ΠΆΡΡΠ½Π°Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π³Π΅Π½Π΅ΡΠΈΡΡΡ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ Π‘Π£ΠΠ, β ΠΎΠ±ΡΡΠ½Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π½Π° ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΠ²Π΅.
Π‘ΠΌΠΎΡΡΠΈΠΌ Π΄ΡΡΠ³ΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ:
- Π‘ΠΊΠΎΡΠΎΡΡΡ ΡΠΈΠ»ΡΠ½ΠΎ Π½Π΅ ΠΌΠ΅Π½ΡΠ΅ΡΡΡ: Π±Π΅Π· Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ β 43,74 ΡΠ΅ΠΊ, Ρ Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ β 53,23 ΡΠ΅ΠΊ.
- ΠΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΏΠΎ ΠΠΠ£ ΠΈ CPU Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΡΠ΅Π΄Π°ΡΡ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π½ΡΠΆΠ½ΠΎ ΡΡΠΎΡΠΌΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°ΠΉΠ» Ρ Π°ΡΠ΄ΠΈΡΠΎΠΌ. ΠΡΠΎ ΡΠ°ΠΊΠΆΠ΅ Π·Π°ΠΌΠ΅ΡΠ½ΠΎ Π½Π° ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΠ²Π΅.
ΠΡΠΈ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠΈ ΡΠΈΡΠ»Π° ΠΊΠΎΠ½Π½Π΅ΠΊΡΠΎΠ², Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ, ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ Π±ΡΠ΄ΡΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΡ ΡΠ΄ΡΠ°ΡΡΡΡ.
Π ΠΊΠΎΡΠΏΠΎΡΠ°ΡΠΈΡΡ Ρ Π°ΡΠ΄ΠΈΡΠΎΠΌ Π΅ΡΠ΅ ΡΠ»ΠΎΠΆΠ½Π΅Π΅:
- Π΄Π°Π½Π½ΡΡ ΠΌΠ½ΠΎΠ³ΠΎ;
- Π°ΡΠ΄ΠΈΡ Π½ΡΠΆΠ΅Π½ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΡΠ΅Π· syslog Π² SIEM, Π½ΠΎ ΠΈ Π² ΡΠ°ΠΉΠ»Ρ: Π²Π΄ΡΡΠ³ Ρ syslog ΡΡΠΎ-ΡΠΎ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ, Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π±Π»ΠΈΠ·ΠΊΠΎ ΠΊ Π±Π°Π·Π΅ ΡΠ°ΠΉΠ», Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠΎΡ ΡΠ°Π½ΡΡΡΡ Π΄Π°Π½Π½ΡΠ΅;
- Π΄Π»Ρ Π°ΡΠ΄ΠΈΡΠ° Π½ΡΠΆΠ½Π° ΠΎΡΠ΄Π΅Π»ΡΠ½Π°Ρ ΠΏΠΎΠ»ΠΊΠ°, ΡΡΠΎΠ±Ρ Π½Π΅ ΠΏΡΠΎΡΠ΅ΡΡΡ ΠΏΠΎ I/O Π΄ΠΈΡΠΊΠΎΠ², ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠ΅ΡΡΠ°;
- Π±ΡΠ²Π°Π΅Ρ, ΡΡΠΎ ΡΠΎΡΡΡΠ΄Π½ΠΈΠΊΠ°ΠΌ ΠΠ Π½ΡΠΆΠ½Ρ Π²Π΅Π·Π΄Π΅ ΠΠΠ‘Π’Ρ, ΠΎΠ½ΠΈ ΡΡΠ΅Π±ΡΡΡ Π³ΠΎΡΡΠΎΠ²ΡΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ.
ΠΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ Π΄Π°Π½Π½ΡΠΌ
ΠΠΎΡΠΌΠΎΡΡΠΈΠΌ Π½Π° ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ Π΄Π»Ρ Π·Π°ΡΠΈΡΡ Π΄Π°Π½Π½ΡΡ ΠΈ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ Π½ΠΈΠΌ Π² ΠΊΠΎΠΌΠΌΠ΅ΡΡΠ΅ΡΠΊΠΈΡ Π‘Π£ΠΠ ΠΈ open source.
Π§ΡΠΎ Π² ΡΠ΅Π»ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ:
- Π¨ΠΈΡΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΎΠ±ΡΡΡΠΊΠ°ΡΠΈΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ (Wrapping) β ΡΠΎ Π΅ΡΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ ΠΈ ΡΡΠΈΠ»ΠΈΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· ΡΠΈΡΠ°Π΅ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π΄Π΅Π»Π°ΡΡ Π½Π΅ΡΠΈΡΠ°Π΅ΠΌΡΠΉ. ΠΡΠ°Π²Π΄Π°, ΠΏΠΎΡΠΎΠΌ Π΅Π³ΠΎ Π½Π΅Π»ΡΠ·Ρ Π½ΠΈ ΠΏΠΎΠΌΠ΅Π½ΡΡΡ, Π½ΠΈ Π·Π°ΡΠ΅ΡΠ°ΠΊΡΠΎΡΠΈΡΡ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ. Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΈΠ½ΠΎΠ³Π΄Π° ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ Π½Π° ΡΡΠΎΡΠΎΠ½Π΅ Π‘Π£ΠΠ β Π»ΠΎΠ³ΠΈΠΊΠ° Π»ΠΈΡΠ΅Π½Π·ΠΈΠΎΠ½Π½ΡΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ ΠΈΠ»ΠΈ Π»ΠΎΠ³ΠΈΠΊΠ° Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ ΡΠΈΡΡΡΠ΅ΡΡΡ ΠΈΠΌΠ΅Π½Π½ΠΎ Π½Π° ΡΡΠΎΠ²Π½Π΅ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ.
- ΠΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ Π΄Π°Π½Π½ΡΡ ΠΏΠΎ ΡΡΡΠΎΠΊΠ°ΠΌ (RLS) β ΡΡΠΎ ΠΊΠΎΠ³Π΄Π° ΡΠ°Π·Π½ΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ Π²ΠΈΠ΄ΡΡ ΠΎΠ΄Π½Ρ ΡΠ°Π±Π»ΠΈΡΡ, Π½ΠΎ ΡΠ°Π·Π½ΡΠΉ ΡΠΎΡΡΠ°Π² ΡΡΡΠΎΠΊ Π² Π½Π΅ΠΉ, ΡΠΎ Π΅ΡΡΡ ΠΊΠΎΠΌΡ-ΡΠΎ ΡΡΠΎ-ΡΠΎ Π½Π΅Π»ΡΠ·Ρ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡ Π½Π° ΡΡΠΎΠ²Π½Π΅ ΡΡΡΠΎΠΊ.
- Π Π΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΠΌΡΡ Π΄Π°Π½Π½ΡΡ (Masking) β ΡΡΠΎ ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ΅ ΡΠ°Π±Π»ΠΈΡΡ Π²ΠΈΠ΄ΡΡ ΠΈΠ»ΠΈ Π΄Π°Π½Π½ΡΠ΅, ΠΈΠ»ΠΈ ΡΠΎΠ»ΡΠΊΠΎ Π·Π²Π΅Π·Π΄ΠΎΡΠΊΠΈ, ΡΠΎ Π΅ΡΡΡ Π΄Π»Ρ ΠΊΠ°ΠΊΠΈΡ -ΡΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π±ΡΠ΄Π΅Ρ Π·Π°ΠΊΡΡΡΠ°. Π’Π΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ, ΠΊΠ°ΠΊΠΎΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΡΠΎ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡ Ρ ΡΡΠ΅ΡΠΎΠΌ ΡΡΠΎΠ²Π½Ρ Π΄ΠΎΡΡΡΠΏΠ°.
- Π Π°Π·Π³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ Π΄ΠΎΡΡΡΠΏΠ° Security DBA/Application DBA/DBA β ΡΡΠΎ, ΡΠΊΠΎΡΠ΅Π΅, ΠΏΡΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΠ°ΠΌΠΎΠΉ Π‘Π£ΠΠ, ΡΠΎ Π΅ΡΡΡ ΡΠΎΡΡΡΠ΄Π½ΠΈΠΊΠΎΠ² ΠΠ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠ΄Π΅Π»ΠΈΡΡ ΠΎΡ database-Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠΎΠ² ΠΈ application-Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠΎΠ². Π open source ΡΠ°ΠΊΠΈΡ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ, Π² ΠΊΠΎΠΌΠΌΠ΅ΡΡΠ΅ΡΠΊΠΈΡ Π‘Π£ΠΠ ΠΈΡ Ρ Π²Π°ΡΠ°Π΅Ρ. ΠΠ½ΠΈ Π½ΡΠΆΠ½Ρ, ΠΊΠΎΠ³Π΄Π° ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ Ρ Π΄ΠΎΡΡΡΠΏΠΎΠΌ ΠΊ ΡΠ°ΠΌΠΈΠΌ ΡΠ΅ΡΠ²Π΅ΡΠ°ΠΌ.
- ΠΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΠ°ΠΉΠ»Π°ΠΌ Π½Π° ΡΡΠΎΠ²Π½Π΅ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ. ΠΠΎΠΆΠ½ΠΎ Π²ΡΠ΄Π°Π²Π°ΡΡ ΠΏΡΠ°Π²Π°, ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°ΠΌ, ΡΡΠΎΠ±Ρ ΠΊΠ°ΠΆΠ΄ΡΠΉ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡ ΠΏΠΎΠ»ΡΡΠ°Π» Π΄ΠΎΡΡΡΠΏ ΡΠΎΠ»ΡΠΊΠΎ ΠΊ Π½ΡΠΆΠ½ΡΠΌ Π΄Π°Π½Π½ΡΠΌ.
- ΠΠ°Π½Π΄Π°ΡΠ½ΡΠΉ Π΄ΠΎΡΡΡΠΏ ΠΈ ΠΎΡΠΈΡΡΠΊΠ° ΠΏΠ°ΠΌΡΡΠΈ β ΡΡΠΈ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ ΡΠ΅Π΄ΠΊΠΎ.
- End-to-end encryption Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ Π‘Π£ΠΠ β ΡΡΠΎ client-side ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΠ΅ Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΊΠ»ΡΡΠ°ΠΌΠΈ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ½ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Π΅.
- Π¨ΠΈΡΡΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ . ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΠ»ΠΎΠ½ΠΎΡΠ½ΠΎΠ΅ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΠ΅ β ΠΊΠΎΠ³Π΄Π° Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΈΡΡΡΠ΅Ρ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΠΊΠΎΠ»ΠΎΠ½ΠΊΡ Π±Π°Π·Ρ.
ΠΠ°ΠΊ ΡΡΠΎ Π²Π»ΠΈΡΠ΅Ρ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π‘Π£ΠΠ?
ΠΠΎΡΠΌΠΎΡΡΠΈΠΌ Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΊΠΎΠ»ΠΎΠ½ΠΎΡΠ½ΠΎΠ³ΠΎ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ Π² PostgreSQL. Π’Π°ΠΌ Π΅ΡΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ pgcrypto, ΠΎΠ½ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π² Π·Π°ΡΠΈΡΡΠΎΠ²Π°Π½Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅ Ρ ΡΠ°Π½ΠΈΡΡ ΠΈΠ·Π±ΡΠ°Π½Π½ΡΠ΅ ΠΏΠΎΠ»Ρ. ΠΡΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, ΠΊΠΎΠ³Π΄Π° ΡΠ΅Π½Π½ΠΎΡΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π΄Π°Π½Π½ΡΠ΅. Π§ΡΠΎΠ±Ρ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ Π·Π°ΡΠΈΡΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΏΠΎΠ»Ρ, ΠΊΠ»ΠΈΠ΅Π½Ρ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅Ρ Π΄Π΅ΡΠΈΡΡΡΡΡΠΈΠΉ ΠΊΠ»ΡΡ, ΡΠ΅ΡΠ²Π΅Ρ ΡΠ°ΡΡΠΈΡΡΠΎΠ²ΡΠ²Π°Π΅Ρ Π΄Π°Π½Π½ΡΠ΅ ΠΈ Π²ΡΠ΄Π°Π΅Ρ ΠΈΡ ΠΊΠ»ΠΈΠ΅Π½ΡΡ. ΠΠ΅Π· ΠΊΠ»ΡΡΠ° Ρ Π²Π°ΡΠΈΠΌΠΈ Π΄Π°Π½Π½ΡΠΌΠΈ Π½ΠΈΠΊΡΠΎ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΡΠΌΠΎΠΆΠ΅Ρ ΡΠ΄Π΅Π»Π°ΡΡ.
ΠΡΠΎΠ²Π΅Π΄Π΅ΠΌ ΡΠ΅ΡΡ c pgcrypto. Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΡΠ°Π±Π»ΠΈΡΡ Ρ Π·Π°ΡΠΈΡΡΠΎΠ²Π°Π½Π½ΡΠΌΠΈ Π΄Π°Π½Π½ΡΠΌΠΈ ΠΈ Ρ ΠΎΠ±ΡΡΠ½ΡΠΌΠΈ Π΄Π°Π½Π½ΡΠΌΠΈ. ΠΠΈΠΆΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ°Π±Π»ΠΈΡ, Π² ΡΠ°ΠΌΠΎΠΉ ΠΏΠ΅ΡΠ²ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅ ΠΏΠΎΠ»Π΅Π·Π½Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° β ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠ°ΠΌΠΎΠ³ΠΎ 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 | text2
——+——-+——-
1 | 1 Β Β | 1
2 | 2 Β Β | 2
3 | 3 Β Β | 3
β¦
997 | 997 Β | 997
998 | 998 Β | 998
999 | 999 Β | 999
1000 | 1000Β | 1000
(1000 ΡΡΡΠΎΠΊ)
ΠΡΠ΅ΠΌΡ: 1,386 ΠΌΡ
ΠΡΠ±ΠΎΡΠΊΠ° ΠΈΠ· ΡΠ°Π±Π»ΠΈΡΡ Ρ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ:
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Β |Β decrypt Β |Β decrypt
——+—————+————
1 | x31 Β | x31
2 | x32 Β | x32
3 | x33 | x33
β¦
999 | x393939 Β | x393939
1000 | x31303030 | x31303030
(1000 ΡΡΡΠΎΠΊ)
ΠΡΠ΅ΠΌΡ: 50,203 ΠΌΡ
Π Π΅Π·ΡΠ»ΡΡΠ°ΡΡ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ:
Β
ΠΠ΅Π· ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ
Pgcrypto (decrypt)
ΠΡΠ±ΠΎΡΠΊΠ° 1000 ΡΡΡΠΎΠΊ
1,386 ΠΌΡ
50,203 ΠΌΡ
CPU
15%
35%
ΠΠΠ£
Β
+5%
Π¨ΠΈΡΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΈΠ»ΡΠ½ΠΎ Π²Π»ΠΈΡΠ΅Ρ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ. ΠΠΈΠ΄Π½ΠΎ, ΡΡΠΎ Π²ΡΡΠΎΡ ΡΠ°ΠΉΠΌΠΈΠ½Π³, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π΄Π΅ΡΠΈΡΡΠ°ΡΠΈΠΈ Π·Π°ΡΠΈΡΡΠΎΠ²Π°Π½Π½ΡΡ Π΄Π°Π½Π½ΡΡ (Π° Π΄Π΅ΡΠΈΡΡΠ°ΡΠΈΡ ΠΎΠ±ΡΡΠ½ΠΎ Π΅ΡΠ΅ ΠΎΠ±Π΅ΡΠ½ΡΡΠ° Π² Π²Π°ΡΡ Π»ΠΎΠ³ΠΈΠΊΡ) ΡΡΠ΅Π±ΡΡΡ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΠ΅ΡΡΡΡΠΎΠ². Π’ΠΎ Π΅ΡΡΡ ΠΈΠ΄Π΅Ρ Π·Π°ΡΠΈΡΡΠΎΠ²Π°ΡΡ Π²ΡΠ΅ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠ΅ ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ Π΄Π°Π½Π½ΡΠ΅, ΡΡΠ΅Π²Π°ΡΠ° ΡΠ½ΠΈΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ.
ΠΡΠΈ ΡΡΠΎΠΌ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π΅ ΡΠ΅ΡΠ΅Π±ΡΡΠ½Π°Ρ ΠΏΡΠ»Ρ, ΡΠ΅ΡΠ°ΡΡΠ°Ρ Π²ΡΠ΅ Π²ΠΎΠΏΡΠΎΡΡ. Π Π°ΡΡΠΈΡΡΠΎΠ²Π°Π½Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΈ ΠΊΠ»ΡΡ Π΄Π΅ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΡΠ°ΡΡΠΈΡΡΠΎΠ²ΡΠ²Π°Π½ΠΈΡ ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π΄Π°Π½Π½ΡΡ Π½Π°Ρ ΠΎΠ΄ΡΡΡΡ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅. ΠΠΎΡΡΠΎΠΌΡ ΠΊΠ»ΡΡΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΏΠ΅ΡΠ΅Ρ Π²Π°ΡΠ΅Π½Ρ ΡΠ΅ΠΌ, ΠΊΡΠΎ ΠΈΠΌΠ΅Π΅Ρ ΠΏΠΎΠ»Π½ΡΠΉ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠ΅ΡΠ²Π΅ΡΡ Π±Π°Π· Π΄Π°Π½Π½ΡΡ , Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠΌ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠΎΠΌ.
ΠΠΎΠ³Π΄Π° Π½Π° Π²ΡΡ ΠΊΠΎΠ»ΠΎΠ½ΠΊΡ Π΄Π»Ρ Π²ΡΠ΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ ΠΎΠ΄ΠΈΠ½ ΠΊΠ»ΡΡ (Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ Π½Π΅ Π΄Π»Ρ Π²ΡΠ΅Ρ , Π° Π΄Π»Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ² ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡΠ°), β ΡΡΠΎ Π½Π΅ Π²ΡΠ΅Π³Π΄Π° Ρ ΠΎΡΠΎΡΠΎ ΠΈ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ. ΠΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎΡΡΠΎΠΌΡ Π½Π°ΡΠ°Π»ΠΈ Π΄Π΅Π»Π°ΡΡ end-to-end ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΠ΅, Π² Π‘Π£ΠΠ ΡΡΠ°Π»ΠΈ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ Π²Π°ΡΠΈΠ°Π½ΡΡ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ ΡΠΎ ΡΡΠΎΡΠΎΠ½Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΠΈ ΡΠ΅ΡΠ²Π΅ΡΠ°, ΠΏΠΎΡΠ²ΠΈΠ»ΠΈΡΡ ΡΠ΅ ΡΠ°ΠΌΡΠ΅ key-vault Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° β ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΠΏΡΠΎΠ΄ΡΠΊΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠ»ΡΡΠ°ΠΌΠΈ Π½Π° ΡΡΠΎΡΠΎΠ½Π΅ Π‘Π£ΠΠ.
Π‘ΡΠ΅Π΄ΡΡΠ²Π° Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ Π² ΠΊΠΎΠΌΠΌΠ΅ΡΡΠ΅ΡΠΊΠΈΡ ΠΈ open source Π‘Π£ΠΠ
Π€ΡΠ½ΠΊΡΠΈΠΈ
Π’ΠΈΠΏ
Password Policy
Audit
ΠΠ°ΡΠΈΡΠ° ΠΈΡΡ
ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΏΡΠΎΡΠ΅Π΄ΡΡ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ
RLS
Encryption
Oracle
ΠΠΎΠΌΠΌΠ΅ΡΡΠ΅ΡΠΊΠ°Ρ
+
+
+
+
+
MsSql
ΠΠΎΠΌΠΌΠ΅ΡΡΠ΅ΡΠΊΠ°Ρ
+
+
+
+
+
ΠΠΎΠΌΠΌΠ΅ΡΡΠ΅ΡΠΊΠ°Ρ
+
+
+
+
extensions
PostgreSQL
Free
extensions
extensions
—
+
extensions
MongoDb
Free
—
+
—
—
Available in MongoDB Enterprise only
Π’Π°Π±Π»ΠΈΡΠ° Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ ΠΏΠΎΠ»Π½Π°Ρ, Π½ΠΎ ΡΠΈΡΡΠ°ΡΠΈΡ ΡΠ°ΠΊΠ°Ρ: Π² ΠΊΠΎΠΌΠΌΠ΅ΡΡΠ΅ΡΠΊΠΈΡ
ΠΏΡΠΎΠ΄ΡΠΊΡΠ°Ρ
Π·Π°Π΄Π°ΡΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ ΡΠ΅ΡΠ°ΡΡΡΡ Π΄Π°Π²Π½ΠΎ, Π² open source, ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, Π΄Π»Ρ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ Π½Π°Π΄ΡΡΡΠΎΠΉΠΊΠΈ, ΠΌΠ½ΠΎΠ³ΠΈΡ
ΡΡΠ½ΠΊΡΠΈΠΉ Π½Π΅ Ρ
Π²Π°ΡΠ°Π΅Ρ, ΠΈΠ½ΠΎΠ³Π΄Π° ΠΏΡΠΈΡ
ΠΎΠ΄ΠΈΡΡΡ ΡΡΠΎ-ΡΠΎ Π΄ΠΎΠΏΠΈΡΡΠ²Π°ΡΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠ°ΡΠΎΠ»ΡΠ½ΡΠ΅ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ β Π² PostgreSQL ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ°Π·Π½ΡΡ
ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠΉ (
Π§ΡΠΎ Π΄Π΅Π»Π°ΡΡ, Π΅ΡΠ»ΠΈ Π½ΠΈΠ³Π΄Π΅ Π½Π΅Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ? ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Ρ ΠΎΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ Π‘Π£ΠΠ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ Π½Π΅Ρ ΡΡΠ½ΠΊΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠ΅Π±ΡΠ΅Ρ Π·Π°ΠΊΠ°Π·ΡΠΈΠΊ.
Π’ΠΎΠ³Π΄Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΎΡΠΎΠ½Π½ΠΈΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΡΠ°Π·Π½ΡΠΌΠΈ Π‘Π£ΠΠ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Β«ΠΡΠΈΠΏΡΠΎ ΠΠΒ» ΠΈΠ»ΠΈ Β«ΠΠ°ΡΠ΄Π° ΠΠΒ». ΠΡΠ»ΠΈ ΡΠ΅ΡΡ ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΡΡ ΠΈΠ· ΠΎΡΠ΅ΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ°, ΡΠΎ ΡΠ°ΠΌ ΠΏΡΠΎ ΠΠΠ‘Π’Ρ Π·Π½Π°ΡΡ Π»ΡΡΡΠ΅, ΡΠ΅ΠΌ Π² open source.
ΠΡΠΎΡΠΎΠΉ Π²Π°ΡΠΈΠ°Π½Ρ β ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ, ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ, ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ Π½Π° ΡΡΠΎΠ²Π½Π΅ ΠΏΡΠΎΡΠ΅Π΄ΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ Π΄Π°Π½Π½ΡΠΌ ΠΈ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΠ΅ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ. ΠΡΠ°Π²Π΄Π°, Ρ ΠΠΠ‘Π’ΠΎΠΌ Π±ΡΠ΄Π΅Ρ ΡΠ»ΠΎΠΆΠ½Π΅Π΅. ΠΠΎ Π² ΡΠ΅Π»ΠΎΠΌ β Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΠ΅, ΠΊΠ°ΠΊ Π½ΡΠΆΠ½ΠΎ, ΡΠ»ΠΎΠΆΠΈΡΡ Π² Π‘Π£ΠΠ, ΠΏΠΎΡΠΎΠΌ Π΄ΠΎΡΡΠ°ΡΡ ΠΈ ΡΠ°ΡΡΠΈΡΡΠΎΠ²Π°ΡΡ ΠΊΠ°ΠΊ Π½Π°Π΄ΠΎ, ΠΏΡΡΠΌΠΎ Π½Π° ΡΡΠΎΠ²Π½Π΅ application. ΠΡΠΈ ΡΡΠΎΠΌ ΡΡΠ°Π·Ρ Π΄ΡΠΌΠ°ΠΉΡΠ΅, ΠΊΠ°ΠΊ Π²Ρ Π±ΡΠ΄Π΅ΡΠ΅ ΡΡΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ Π½Π° application Π·Π°ΡΠΈΡΠ°ΡΡ. ΠΠ° Π½Π°Ρ Π²Π·Π³Π»ΡΠ΄, ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ Π΄Π΅Π»Π°ΡΡ Π½Π° ΡΡΠΎΠ²Π½Π΅ Π‘Π£ΠΠ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΠ°ΠΊ Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π±ΡΡΡΡΠ΅Π΅.
ΠΡΠΎΡ Π΄ΠΎΠΊΠ»Π°Π΄ Π²ΠΏΠ΅ΡΠ²ΡΠ΅ ΠΏΡΠΎΠ·Π²ΡΡΠ°Π» Π½Π°
Π§ΡΠΎ Π΅ΡΠ΅ ΠΏΠΎΡΠΈΡΠ°ΡΡ ΠΏΠΎ ΡΠ΅ΠΌΠ΅:
ΠΠΎΠ»ΡΡΠ΅ ΡΠ΅ΠΌ Ceph: Π±Π»ΠΎΡΠ½ΠΎΠ΅ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ ΠΎΠ±Π»Π°ΠΊΠ° MCS .ΠΠ°ΠΊ Π²ΡΠ±ΡΠ°ΡΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ Π΄Π»Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ°, ΡΡΠΎΠ±Ρ Π½Π΅ Π²ΡΠ±ΠΈΡΠ°ΡΡ ΡΠ½ΠΎΠ²Π° .
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com