Securitas et DBMS: quod meminisse debes cum instrumenta securitatis eligens

Securitas et DBMS: quod meminisse debes cum instrumenta securitatis eligens

Nomen meum est Denis Rozhkov, ego caput progressionis programmatis in Gazinformservice comitatu, in quadrigis producti. Jatoba. Leges et ordinationes corporales quaedam requisita ad securitatem notitiarum repositionis imponunt. Nemo partes tertias ad informationem secretiorem accedere cupit, ideoque hae quaestiones magni momenti sunt ad quodlibet consilium: agnitio et authenticatio, accessus ad notitias procurans, integritatem informationum in systematis, securitatem eventus colligationem. Ideo loqui de quibusdam rebus iucundis de securitate DBMS cupio.

Articulus paratus ex oratione @DatabasesMeetup, constituto Mail.ru Cloud Solutions. Si non vis legere, spectare potes;


Articulus tres partes habebit;

  • Quam ut hospites.
  • Quid actionum computum et quomodo notare quae in parte datorum aguntur et cum eo conectuntur.
  • Quomodo notitias in ipso datorum praesidio et quaenam technologiae huic praesto sint.

Securitas et DBMS: quod meminisse debes cum instrumenta securitatis eligens
Tres partes securitatis DBMS: nexum praesidium, actio audiendi et data tutela

Impetrandum hospites

Per applicationes interretiales vel directe vel indirecte ad database coniungere potes. Pro regula, negotiatio utentis, id est, persona quae cum DBMS operatur, indirecte cum eo correspondet.

Priusquam de nexibus custodiendis colloqueris, quaestionibus maximis respondere debes, qui quomodo mensurae securitatis structuri sint decernunt;

  • Estne una res usor aequivalens uni DBMS usor?
  • utrum accessus ad DBMS notitiae praebeatur nisi per API quam imperas, vel tabulae directe accessae;
  • an segmentum separatum DBMS sortiatur, qui cum ea et quomodo se- quitur;
  • an in collatione/procuratori et stratis intermediis adhibeantur, quae informationem mutare possunt quomodo connexio aedificatur et quis datorum utens.

Nunc videamus quid instrumenta ad nexus secure adhiberi possint;

  1. Classis firewall database solutiones utere. Additamentum tutelae ad minimum augebit perspicuitatem eorum quae in DBMS fiunt, et ad maximam, additional notitia tutelae praebere poteris.
  2. Tessera usus lobortis. Earum usus pendet ex quo fabricatur architectura tua. Utcumque, una password in lima applicationis configurationis interretialem, quae cum DBMS coniungitur, tutelae satis non est. Sunt plures instrumenta DBMS quae te regere sinunt utentis et tesserae adaequationis exigant.

    De usuario rating munera legere potes hic, invenire etiam potes de Assessmen MS SQL Passibilitatem hic

  3. Ditebunt contextum sessionis cum informationibus necessariis. Si sessionis opaca est, non intellegis qui in DBMS intra eius compagem laborat, potes, intra ambitum operationis peractae, informationes addere de quis quid et quare agit. Haec notitia in computo videri potest.
  4. Configurare SSL si separationem retis inter DBMS et finem utentes non habes, separato VLAN non est. In talibus casibus debitum est canalem inter consumptorem et ipsum DBMS tueri. Instrumenta securitatis etiam in fonte aperto praesto sunt.

Quomodo hoc afficit observantia DBMS?

Inspiciamus exemplum PostgreSQL videre quomodo SSL onus afficit CPU, timiones auget et minuit TPS, et num nimis multas opes consumet si id potes.

Loading PostgreSQL utens pgbench simplex est programma currendi probat. Unam seriem mandatorum saepe exsequitur, fortasse in sessionibus parallelis datorum, ac deinde rate transactionis mediocris computat.

Test I sine SSL et utens SSL - Connexio constituitur pro qualibet re;

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"

Test I sine SSL et utens SSL - omnia in uno nexu fiunt;

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"

Aliae occasus:

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

test results:

 
NO SSL
SSL

Connexio constituitur pro omni negotio

latency mediocris
MS 171.915
MS 187.695

tps inter hospites constituendum
58.168112
53.278062

TPS extra hospites constituendum
64.084546
58.725846

cpu
24%
28%

Omnes operationes quae fiunt in uno nexu

latency mediocris
MS 6.722
MS 6.342

tps inter hospites constituendum
1587.657278
1576.792883

TPS extra hospites constituendum
1588.380574
1577.694766

cpu
17%
21%

In oneribus levibus, influxus SSL cum errore mensurae comparandus est. Si summa notitiarum translatum est permagna, res aliter se habere potest. Si unum nexum per transactionem constituimus (hoc rarum est, plerumque nexus inter utentes participatur), magnum numerum nexuum/disiunctio- rum habes, ictum paulo maius esse potest. Hoc est, periculum minui potest, tamen interest, non tam magna est, ut tutelae non utatur.

Nota quod multum interest si modos operantes compares: in eadem sessione vel in diversis laboras. Hoc intelligibile est: opes conduntur in creandis inter se connexionibus.

Causam habuimus cum Zabbix in fiducia modi coniunctus, id est, md5 non repressus, authenticas non opus erat. Tum emptorem rogavit ut md5 authenticas modum praeberet. Hoc onus grave in CPU posuit, et perficientur omissa. Modi ad optimize spectare coepimus. Una possibilium solutionum problematum est ad restrictiones retis deducendi, singulas VLANs pro DBMS fac, uncinos addas ut pateat qui connectit unde et authenticas removeat. Potes etiam optimize obitus authenticas reducere impensas cum sinit authenticas, sed generatim usus variarum methodorum authenticas efficiendi afficit ac requirit ut horum factores rationem habeant cum computandi potestas ministrantium (hardware) pro DBMS designans.

Conclusio: in pluribus solutionibus, etiam parvae nuances in authenticas, possunt multum afficere consilium et malum est cum hoc solum patebit cum in productione perficiatur.

Actio audit

Audit non solum DBMS. Auditio est de obtinendo informationes circa ea quae in diversis segmentis aguntur. Hoc vel firewall database esse potest vel ratio operativa in qua DBMS aedificatur.

In inceptum commerciale gradu DBMSs omnia bene audiendo, sed in fonte aperto - non semper. Hic est quod PostgreSQL habet:

  • default iniuriarum - constructum- in logging;
  • extensiones: pgaudit - si logging default tibi non est satis, uti potes separatis uncinis qui aliquas difficultates solvunt.

Additio ad relationem in video:

"Enuntiatio fundamentalis logingis praeberi potest per regulam rationis log_statem = omnia.

Hoc vigilantia et aliis usibus placet, sed gradum singillatim quae ad audiendum necessaria non praebet.

Non satis est omnium rerum in datorum indice peractarum habere.

Debet etiam reperire certas propositiones auditori quae sunt commodae.

Standard logging ostendit quid usor postulavit, dum pgAudit in singulis rebus factis, cum datorum quaestionem quaesivit.

Exempli causa, auditor cognoscere volet certam mensam factam esse in documentis sustentationis fenestrae.

Hoc videri potest sicut munus simplex cum auditione et gressu fundamentali, sed quid si hoc exemplo (intentionaliter confundens) praesentatus esses;

DO$$
COEPTO
EXSECUTO 'CREATE TABLE import' || 'ant_table (id int)';
FINIS$$;

Latin logging will give you this:

TRUNCUS: constitutionis: DO $$
COEPTO
EXSECUTO 'CREATE TABLE import' || 'ant_table (id int)';
FINIS$$;

Videtur quod tabula usurarum invenire possit notitiam aliquem codicem requirere in casibus in quibus tabulae dynamice creatae sunt.

Hoc non est ideale, ut potius sit nomen tabulae simpliciter quaerere.

Haec ubi pgAudit in promptu venit.

Idem input, hoc output in sextarium producet:

AUDIT: Sessio, 33,1, OFFICIUM, DO,,,"DO$$
COEPTO
EXSECUTO 'CREATE TABLE import' || 'ant_table (id int)';
FINIS$$;"
AUDIT: CONVENTUS, 33,2, DDL, TABULA CREATA, TABLE, public.important_table, CREATE TABLE important_table (id INT)

Non solum scandalum DO est initium, sed etiam textus plenus tabulae CREATUS cum constitutionis speciei, speciei obiectione et nomine pleno, faciliorem reddens inquisitionem.

Quando colligationem SELECT et DML enuntiationes, pgAudit configurari potest ut aperias ingressum separatum pro relatione relationis in enuntiatione.

Nulla parsing requiritur ad inveniendum omnia quae certo mensae attingunt.*) ».

Quomodo hoc afficit observantia DBMS?

Testimonia curramus cum plena audiendi facultate et vide quid ad effectum PostgreSQL eveniat. Maximam database colligationem pro omnibus parametris faciamus.

Nihil fere mutamus in file configuratione, quod maximum est in debug5 modum vertere ut notitias maximam obtineamus.

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_wait = on
log_replication_commands = on
log_temp_files = 0
log_timezone = 'Europae/Moscoviae'

In a PostgreSQL DBMS cum parametris 1 CPU, 2,8 GHz, 2 GB RAM, 40 GB HDD, tres onerarias probationes iussa adhibemus;

$ 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

Proventus test:

Non logging
Cum logging

Totalis database impletionem temporis
43,74 seconds
53,23 seconds

ram
24%
40%

cpu
72%
91%

Test 1 (nexiones 50)

Numerus transactions in X minuta
74169
32445

Transactions/sec
123
54

Mediocris Latency
MS 405
MS 925

Test 2 (CL nexus cum 150 fieri potest)

Numerus transactions in X minuta
81727
31429

Transactions/sec
136
52

Mediocris Latency
MS 550
MS 1432

De magnitudinum

DB magnitudine
2251 MB
2262 MB

Database log size
0 MB
4587 MB

Solum versus: plenum audit non est valde bonum. Notitia ex computo tanta erit quanta in ipso datorum datorum, vel etiam amplius. Moles logging quod generatur cum opus cum DBMS est commune problema in productione.

Intueamur alios parametri:

  • Celeritas non multum mutat: sine logging - 43,74 secundis, cum logging - 53,23 secundis.
  • RAM et CPU effectus patiuntur, ut tabellam computum generare debes. Hoc etiam notabile est in fructibus.

Cum numerus nexuum augetur naturaliter, effectus leviter degeneret.

In collegiis cum computo etiam difficilius est;

  • multum est data;
  • auditing opus est non solum per syslogum in SIEM, sed etiam in scriniis: si aliquid syslog accidit, fasciculus prope datorum erit in quo notitia salvatur;
  • ad audiendum, pluteo separato opus est ut in I/O disci non terere, cum multum spatii aggreditur;
  • Accidit ut informationes securitatis conductorum ubique signa GOST egent, identitatem civitatis requirunt.

Restricting accessum ad notitia

Intueamur technologias quae ad notitias tuendas et accessum in DBMSs mercatorum et fonte aperto usi sunt.

Quid vulgo uti potes;

  1. Encryption et obfuscatio rationum et functionum (Wrapping) - hoc est, singula instrumenta et utilitates quae codicem readabile faciunt unreadable. Vera ergo nec mutari nec reparari potest. Accessus hic interdum saltem requiritur in DBMS parte - restrictiones seu licentiae logicae logicae ratio praecise in modo procedendi et functionis.
  2. Visibilitas notitiarum per ordines limitata (RLS) est cum diversi utentes unam tabulam vident, sed in ea diversa ordinum compositio, hoc est, aliquid alicui in ordine adaequari non potest.
  3. Emendo proponendum data (Masking) est cum utentes in una tabulae columnae vel notitias vel tantum asteriscos vident, hoc est, pro aliquibus utentibus informationes claudentur. De technologia decernit uter ostendatur quid usoris in gradu accessu suo fundatum sit.
  4. Securitas DBA/Applicationis DBA/DBA imperium accessum est, potius de restrictione ad ipsa DBMS accessum, id est, notitiae securitatis conductorum a datorum administratoribus et applicatione administratoribus separari posse. Paucae huiusmodi technologiae in fonte aperto sunt, sed multae earum in DBMSs commercii sunt. Opus est cum multi sunt utentes accessus ad ipsos ministrantes.
  5. Accessum ad lima restringens in gradu tabellae systematis. Potes dare iura et privilegia ad directoria accedere, ut administrator accessum habeat tantum ad data necessaria.
  6. Amet accessus et memoria purgandi - hae technologiae raro adhibitae sunt.
  7. Encryption end-ad-finis directe ex DBMS est encryption clientis lateris cum administratione clavem lateris ministri.
  8. Data encryption. Exempli gratia, encryption columnaris est cum mechanismo uteris, qui encryptas datorum unam columnam facit.

Quomodo hoc afficit observantia DBMS?

Inspiciamus exemplum encryptionis columnaris in PostgreSQL. Modulus pgcrypto est, permittit tibi electos agros in forma encrypta condere. Hoc utile est, cum sola aliqua notitia utilis est. Agros encryptatos legere, cliens decryptionem clavem transmittit, servo decryptas notas reddit et clienti reddit. Sine clave, nemo quidquam cum notitia tua facere potest.

Sit scriptor test cum pgcrypto. Faciamus mensam cum encrypted notitia et notitia iusto. Infra praecepta ad tabulas creandas sunt, in prima linea mandatum utile est - ipsam extensionem cum adnotatione DBMS creandi:

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'));

Deinde, ex unaquaque mensa specimen quoddam facere conemur et exsecutionem timings intueri.

Discriptis encryption mensam sine functione:

psql -c "timing" -c "select * from t1 limit 1000;" "host=192.168.220.129 dbname=taskdb
user=postgres sslmode=disable" > 1.txt

In stopwatch est.

  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 lines)

Time: 1,386 ms

Electio ex mensa cum encryption functionis;

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

In stopwatch est.

  id | minutum | minutum
--------------
1 | x31 | x31
2 | x32 | x32
3 | x33 | x33
...
999 | x393939 | x393939
1000 | x31303030 | x31303030
(1000 lines)

Time: 50,203 ms

test results:

 
Sine encryption
Pgcrypto (decrypt)

Sample 1000 ordines
MS 1,386
MS 50,203

cpu
15%
35%

ram
 
+ 5%

Encryption magnum momentum in perficientur habet. Timaeo augeri potest videri, cum decryptionis operationes notitiarum encryptarum (et decryption in logica tua adhuc involuta solet) significantes opes requirunt. Hoc est, idea encryptarum omnium columnarum, quae aliquas notitias continent, minui in effectu est plena.

Autem, encryption non est glans argentea quae omnes difficultates solvit. Decryptae notae et clavis decryptionis in processu decryptae et notulae transmittendi in calculonis collocatae sunt. Ideo claves intercipi possunt ab eo qui servo datorum plenum accessum habet, ut administrator systematis.

Cum una clavis sit pro tota columna pro omnibus utentibus (etsi non omnibus, sed pro clientibus limitata copia), hoc non semper bonum et verum est. Quam ob rem encryption finem facere coeperunt, in DBMS optiones considerare inceperunt pro notitia encrypting in parte clientis et servitoris, et eadem stormata clavis fornices apparuerunt - producta separata quae procurationem key in DBMS praebent. latus.

Securitas et DBMS: quod meminisse debes cum instrumenta securitatis eligens
Exemplum talis encryption in MongoDB

Securitas features in commercial et aperto fonte DBMS

munera
genus
Password Policy
Audit
Tuens fons codicem processuum et functionum
RLS
encryption

Oraculum
commercial
+
+
+
+
+

MsSql
commercial
+
+
+
+
+

Jatoba
commercial
+
+
+
+
tractus

PostgreSQL
Liber
tractus
tractus
-
+
tractus

MongoDb
Liber
-
+
-
-
Available in MongoDB Enterprise only

Mensa longe abest, sed ita se habet: in commercii fructibus, quaestiones securitatis diu solutae sunt, in fonte aperto, fere, quaedam additiones ad securitatem adhibentur, multae functiones desunt. nonnumquam aliquid addere. Exempli gratia, tesserae rationes - PostgreSQL multas extensiones varias habet (1, 2, 3, 4, 5) quae tesseram instrumentorum instrumentorum efficiunt, sed, mea sententia, nulla earum omnes necessitates segmenti corporis domestici comprehendit.

Quid facias, si non habes quod usquam opus est?? Exempli gratia, certa DBMS uti velis quae munera non habet quae emptorem exigit.

Tunc uti potes solutiones tertia-partium quae laborant cum diversis DBMSs, exempli gratia, Crypto DB vel Garda DB. Si de solutionibus ex segmento domestico loquimur, tunc melius sciunt de GOSTS quam in aperto fonte.

Secunda optio scribenda est quid tibi opus sit, notitias accessus efficiendi et encryption in applicatione in gradu procedendi. Verum cum GOST difficilius erit. Sed in genere, notitias prout opus fuerit, occultare potes, pone in DBMS, deinde recupera et minutum illud ut opus est, ius in gradu applicationis. Simul, statim cogita quomodo has applicationes algorithms tueberis. Nostro iudicio, hoc in gradu DBMS fieri debet, quia velocius faciet.

Haec fama primum est @Databases Meetup by Mail.ru Cloud Solutions. Vide видео alias res gestas subscribunt et denuntiationes in Telegram Circum Kubernetes apud Mail.ru Group.

Quid aliud legere in topic?:

  1. Plus quam Ceph: MCS nubes obstructionum repono.
  2. Quomodo eligere database in project ut non iterum eligere.

Source: www.habr.com

Add a comment