ስሜ ዴኒስ ሮዝኮቭ እባላለሁ፣ እኔ በምርት ቡድን ውስጥ በ Gazinformservice ኩባንያ የሶፍትዌር ልማት ኃላፊ ነኝ። . ህግ እና የድርጅት ደንቦች ለመረጃ ማከማቻ ደህንነት የተወሰኑ መስፈርቶችን ያስገድዳሉ። ማንም ሶስተኛ ወገኖች ሚስጥራዊ መረጃን እንዲያገኙ አይፈልግም, ስለዚህ የሚከተሉት ጉዳዮች ለማንኛውም ፕሮጀክት አስፈላጊ ናቸው: መለየት እና ማረጋገጥ, የውሂብ መዳረሻን ማስተዳደር, በሲስተሙ ውስጥ ያለውን የመረጃ ታማኝነት ማረጋገጥ, የደህንነት ክስተቶችን ማስገባት. ስለዚህ, ስለ ዲቢኤምኤስ ደህንነትን በተመለከተ አንዳንድ አስደሳች ነጥቦችን ማውራት እፈልጋለሁ.
ጽሑፉ የተዘጋጀው በ ተደራጅተዋል። . ማንበብ ካልፈለግክ መመልከት ትችላለህ፡-

ጽሑፉ ሦስት ክፍሎች አሉት.
- ግንኙነቶችን እንዴት መጠበቅ እንደሚቻል.
- የእርምጃዎች ኦዲት ምንድን ነው እና በመረጃ ቋቱ በኩል ምን እየተከሰተ እንዳለ እና ከእሱ ጋር መገናኘት እንዴት እንደሚመዘገብ።
- በመረጃ ቋቱ ውስጥ ያለውን መረጃ እንዴት መጠበቅ እንደሚቻል እና ለዚህ ምን ዓይነት ቴክኖሎጂዎች አሉ ።

ሶስት የ DBMS ደህንነት ክፍሎች፡ የግንኙነት ጥበቃ፣ የእንቅስቃሴ ኦዲት እና የውሂብ ጥበቃ
ግንኙነቶችዎን በማስጠበቅ ላይ
ከመረጃ ቋቱ ጋር በቀጥታም ሆነ በተዘዋዋሪ በድር መተግበሪያዎች መገናኘት ይችላሉ። እንደ ደንቡ የንግድ ተጠቃሚው ማለትም ከዲቢኤምኤስ ጋር የሚሰራው ሰው በተዘዋዋሪ መንገድ ይገናኛል።
ግንኙነቶችን ስለመጠበቅ ከመናገርዎ በፊት የደህንነት እርምጃዎች እንዴት እንደሚዋቀሩ የሚወስኑ አስፈላጊ ጥያቄዎችን መመለስ ያስፈልግዎታል።
- አንድ የንግድ ተጠቃሚ ከአንድ የ DBMS ተጠቃሚ ጋር እኩል ነው?
- የዲቢኤምኤስ ውሂብ መዳረሻ እርስዎ በሚቆጣጠሩት ኤፒአይ ብቻ ወይም ሠንጠረዦቹ በቀጥታ ይደርሱ እንደሆነ፤
- ዲቢኤምኤስ ለተለየ የተከለለ ክፍል፣ ማን ከእሱ ጋር መስተጋብር እንደሚፈጥር እና እንዴት እንደሆነ፣
- ግንኙነቱ እንዴት እንደተገነባ እና የውሂብ ጎታውን ማን እየተጠቀመ እንዳለ መረጃን ሊለውጥ የሚችል ፑሊንግ/ፕሮክሲ እና መካከለኛ ንብርብሮች ጥቅም ላይ ውለው ይሁን።
አሁን ግንኙነቶችን ለመጠበቅ የትኞቹን መሳሪያዎች መጠቀም እንደሚቻል እንይ፡-
- የውሂብ ጎታ ፋየርዎል ክፍል መፍትሄዎችን ተጠቀም። ተጨማሪ የጥበቃ ንብርብር ቢያንስ በዲቢኤምኤስ ውስጥ እየተከሰተ ያለውን ግልጽነት ይጨምራል፣ እና ቢበዛ ተጨማሪ የውሂብ ጥበቃን መስጠት ይችላሉ።
- የይለፍ ቃል መመሪያዎችን ተጠቀም። የእነሱ አጠቃቀም የሚወሰነው የእርስዎ አርክቴክቸር እንዴት እንደተገነባ ነው። ለማንኛውም ከዲቢኤምኤስ ጋር የሚያገናኘው በድር መተግበሪያ የውቅር ፋይል ውስጥ ያለው አንድ የይለፍ ቃል ለጥበቃ በቂ አይደለም። ተጠቃሚው እና የይለፍ ቃል ማዘመን እንደሚያስፈልጋቸው ለመቆጣጠር የሚያስችሉዎ በርካታ የ DBMS መሳሪያዎች አሉ።
ስለ ተጠቃሚ ደረጃ አሰጣጥ ተግባራት የበለጠ ማንበብ ትችላለህ እንዲሁም ስለ MS SQL ተጋላጭነት ገምጋሚዎች ማወቅ ይችላሉ። .
- የክፍለ-ጊዜውን አውድ አስፈላጊ በሆነ መረጃ ያበልጽጉ። ክፍለ-ጊዜው ግልጽ ያልሆነ ከሆነ በዲቢኤምኤስ ውስጥ በማዕቀፉ ውስጥ ማን እየሰራ እንደሆነ አይረዱም, በሚሰራው ቀዶ ጥገና ማዕቀፍ ውስጥ, ማን ምን እና ለምን እንደሚሰራ መረጃ ማከል ይችላሉ. ይህ መረጃ በኦዲት ውስጥ ሊታይ ይችላል.
- በዲቢኤምኤስ እና በዋና ተጠቃሚዎች መካከል የአውታረ መረብ መለያየት ከሌለህ SSL አዋቅር፤ በተለየ VLAN ውስጥ አይደለም። በእንደዚህ ዓይነት ሁኔታዎች, በተጠቃሚው እና በዲቢኤምኤስ እራሱ መካከል ያለውን ሰርጥ መጠበቅ በጣም አስፈላጊ ነው. የደህንነት መሳሪያዎች በክፍት ምንጭም ይገኛሉ።
ይህ በዲቢኤምኤስ አፈጻጸም ላይ ምን ተጽዕኖ ይኖረዋል?
ኤስኤስኤል በሲፒዩ ጭነት ላይ እንዴት እንደሚጎዳ፣ጊዜ እንደሚጨምር እና TPS እንደሚቀንስ እና እሱን ካነቁት ብዙ ሀብቶችን እንደሚፈጅ ለማየት የ PostgreSQLን ምሳሌ እንመልከት።
PostgreSQLን መጫን pgbench ን በመጠቀም የአፈጻጸም ሙከራዎችን ለማካሄድ ቀላል ፕሮግራም ነው። ነጠላ ተከታታይ ትዕዛዞችን በተደጋጋሚ ያከናውናል, ምናልባትም በትይዩ የውሂብ ጎታ ክፍለ ጊዜዎች, እና ከዚያም አማካይ የግብይት መጠን ያሰላል.
ያለ SSL እና SSL በመጠቀም 1 ይሞክሩ ግንኙነቱ ለእያንዳንዱ ግብይት ተመስርቷል-
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 እና SSL በመጠቀም 2 ይሞክሩ - ሁሉም ግብይቶች በአንድ ግንኙነት ይከናወናሉ
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
ለእያንዳንዱ ግብይት ግንኙነት ይመሰረታል።
የቆይታ አማካይ
171.915 ሚ
187.695 ሚ
tps ግንኙነቶችን ጨምሮ
58.168112
53.278062
tps ግንኙነቶችን ሳይጨምር
64.084546
58.725846
ሲፒዩ
24%
28%
ሁሉም ግብይቶች በአንድ ግንኙነት ይከናወናሉ
የቆይታ አማካይ
6.722 ሚ
6.342 ሚ
tps ግንኙነቶችን ጨምሮ
1587.657278
1576.792883
tps ግንኙነቶችን ሳይጨምር
1588.380574
1577.694766
ሲፒዩ
17%
21%
በቀላል ጭነቶች ፣ የኤስኤስኤል ተፅእኖ ከመለኪያ ስህተት ጋር ሊወዳደር ይችላል። የተላለፈው የውሂብ መጠን በጣም ትልቅ ከሆነ, ሁኔታው የተለየ ሊሆን ይችላል. በአንድ ግብይት አንድ ግንኙነት ከፈጠርን (ይህ አልፎ አልፎ ነው፣ አብዛኛውን ጊዜ ግንኙነቱ በተጠቃሚዎች መካከል ይጋራል)፣ ብዙ ቁጥር ያላቸው ግንኙነቶች/ግንኙነቶች አሉዎት፣ ተፅዕኖው ትንሽ ከፍ ሊል ይችላል። ያም ማለት የአፈፃፀም መቀነስ አደጋዎች ሊኖሩ ይችላሉ, ሆኖም ግን, ልዩነቱ ጥበቃን ላለመጠቀም በጣም ትልቅ አይደለም.
እባክዎን የክወና ሁነታዎችን ካነፃፀሩ ጠንካራ ልዩነት እንዳለ ያስተውሉ-በተመሳሳይ ክፍለ ጊዜ ውስጥ ወይም በተለያዩ ውስጥ እየሰሩ ነው. ይህ ለመረዳት የሚቻል ነው-ሀብቶች እያንዳንዱን ግንኙነት በመፍጠር ላይ ይውላሉ።
Zabbix ን በታማኝነት ሁነታ ስናገናኘው ጉዳይ ነበረን፣ ማለትም md5 አልተረጋገጠም፣ ማረጋገጫ አያስፈልግም። ከዚያ ደንበኛው md5 የማረጋገጫ ሁነታን እንዲያነቃ ጠየቀ። ይህ በሲፒዩ ላይ ከባድ ሸክም ፈጠረ እና አፈፃፀሙ ቀንሷል። ለማመቻቸት መንገዶችን መፈለግ ጀመርን. ለችግሩ መፍትሄ ሊሆኑ ከሚችሉት አንዱ የኔትወርክ ገደቦችን መተግበር፣ ለዲቢኤምኤስ የተለየ VLAN ማድረግ፣ ማን ከየት እንደሚገናኝ ግልጽ ለማድረግ እና ማረጋገጫን ለማስወገድ ቅንጅቶችን ማከል እንዲሁም ማረጋገጥ በሚቻልበት ጊዜ ወጪዎችን ለመቀነስ የማረጋገጫ ቅንብሮችን ማመቻቸት ይችላሉ ነገር ግን በአጠቃላይ የተለያዩ ዘዴዎችን ማረጋገጥ በአፈጻጸም ላይ ተጽእኖ ያሳድራል እና ለዲቢኤምኤስ የአገልጋዮችን (ሃርድዌር) የኮምፒዩተር ሃይል ሲነድፍ እነዚህን ነገሮች ግምት ውስጥ ማስገባት ይጠይቃል።
ማጠቃለያ: በበርካታ መፍትሄዎች, በማረጋገጫ ውስጥ ያሉ ትናንሽ ጥቃቅን ነገሮች እንኳን በፕሮጀክቱ ላይ ከፍተኛ ተጽዕኖ ሊያሳድሩ ይችላሉ እና ይህ በምርት ውስጥ ሲተገበር ብቻ ግልጽ ሆኖ ሲገኝ መጥፎ ነው.
የድርጊት ኦዲት
ኦዲት ዲቢኤምኤስ ብቻ ሊሆን አይችልም። ኦዲት በተለያዩ ክፍሎች ውስጥ እየተከሰተ ስላለው ነገር መረጃ ስለማግኘት ነው። ይህ የውሂብ ጎታ ፋየርዎል ወይም ዲቢኤምኤስ የተገነባበት ስርዓተ ክወና ሊሆን ይችላል።
በንግድ ኢንተርፕራይዝ ደረጃ ዲቢኤምኤስ በኦዲት ሁሉም ነገር ጥሩ ነው፣ ነገር ግን በክፍት ምንጭ - ሁልጊዜ አይደለም። PostgreSQL ያለው ይኸውና፡-
- ነባሪ ምዝግብ ማስታወሻ - አብሮገነብ መግቢያ;
- ቅጥያዎች: pgaudit - ነባሪ ምዝግብ ማስታወሻ ለእርስዎ በቂ ካልሆነ አንዳንድ ችግሮችን የሚፈቱ የተለዩ ቅንብሮችን መጠቀም ይችላሉ።
በቪዲዮው ላይ ካለው ዘገባ ጋር ተጨምሮ፡-
"የመሠረታዊ መግለጫ ምዝግብ ማስታወሻ በሎግ_statement = ሁሉም በመደበኛ የምዝግብ ማስታወሻ አገልግሎት ሊሰጥ ይችላል።
ይህ ለክትትል እና ለሌሎች አጠቃቀሞች ተቀባይነት ያለው ነው፣ ነገር ግን በተለምዶ ለኦዲት አስፈላጊ የሆነውን ዝርዝር ደረጃ አይሰጥም።
በመረጃ ቋቱ ላይ የተከናወኑ ሁሉንም ተግባራት ዝርዝር መያዝ በቂ አይደለም.
እንዲሁም ለኦዲተሩ ትኩረት የሚስቡ ልዩ መግለጫዎችን ማግኘት መቻል አለበት.
መደበኛ ምዝግብ ማስታወሻው ተጠቃሚው የጠየቀውን ያሳያል፣ pgAudit ደግሞ ዳታቤዙ መጠይቁን ሲፈጽም በተፈጠረው ነገር ላይ ያተኩራል።
ለምሳሌ, ኦዲተሩ አንድ የተወሰነ ጠረጴዛ በሰነድ የጥገና መስኮት ውስጥ መፈጠሩን ማረጋገጥ ሊፈልግ ይችላል.
ይህ ከመሰረታዊ ኦዲት እና grep ጋር ቀላል ስራ ሊመስል ይችላል፣ ግን እንደዚህ አይነት ነገር (ሆን ተብሎ ግራ የሚያጋባ) ምሳሌ ቢቀርብልዎስ?
ዶ$$
BEGIN
EXECUTE 'የጠረጴዛ ማስመጣትን ፍጠር' || 'ant_table(id int)';
መጨረሻ$$;
መደበኛ ምዝግብ ማስታወሻ ይህንን ይሰጥዎታል-
LOG: መግለጫ: አድርግ $$
BEGIN
EXECUTE 'የጠረጴዛ ማስመጣትን ፍጠር' || 'ant_table(id int)';
መጨረሻ$$;
ሰንጠረዦች በተለዋዋጭ ሁኔታ በሚፈጠሩበት ጊዜ የፍላጎት ሰንጠረዥን መፈለግ የተወሰነ የኮድ እውቀት ሊፈልግ የሚችል ይመስላል።
ይህ ተስማሚ አይደለም, ምክንያቱም በቀላሉ በሠንጠረዥ ስም መፈለግ ይመረጣል.
pgAudit ጠቃሚ የሚሆነው እዚህ ላይ ነው።
ለተመሳሳይ ግቤት ይህን ውፅዓት በምዝግብ ማስታወሻው ውስጥ ያስገኛል፡-
ኦዲት፡ ክፍለ ጊዜ፣33,1፣XNUMX፣ተግባር፣አድርግ፣፣,"አድርግ $$
BEGIN
EXECUTE 'የጠረጴዛ ማስመጣትን ፍጠር' || 'ant_table(id int)';
መጨረሻ$$;"
ኦዲት፡ ክፍለ ጊዜ፣ 33,2፣XNUMX፣ ዲ ዲኤል፣ ጠረጴዛ ፍጠር፣ ጠረጴዛ፣ ይፋዊ.አስፈላጊ_ጠረጴዛ፣ TABLE ጠቃሚ_ጠረጴዛ ፍጠር (መታወቂያ INT)
የ DO ብሎክ ብቻ ሳይሆን የCREATE TABLE ሙሉ ጽሁፍም በመግለጫ አይነት፣የነገር አይነት እና ሙሉ ስም፣ ፍለጋን ቀላል ያደርገዋል።
የ SELECT እና DML መግለጫዎችን በሚገቡበት ጊዜ pgAudit በመግለጫው ውስጥ ለተጠቀሰው ለእያንዳንዱ ግንኙነት የተለየ ግቤት ለመግባት ሊዋቀር ይችላል።
አንድ የተወሰነ ሰንጠረዥ የሚነኩ ሁሉንም መግለጫዎች ለማግኘት ምንም መተንተን አያስፈልግም(). "
ይህ በዲቢኤምኤስ አፈጻጸም ላይ ምን ተጽዕኖ ይኖረዋል?
ሙሉ ኦዲት የነቃ ፈተናዎችን እናካሂድ እና በPostgreSQL አፈጻጸም ላይ ምን እንደሚሆን እንይ። ለሁሉም መመዘኛዎች ከፍተኛውን የውሂብ ጎታ ምዝግብ ማስታወሻን እናንቃት።
በማዋቀሪያው ፋይል ውስጥ ምንም ማለት ይቻላል እንለውጣለን, በጣም አስፈላጊው ነገር ከፍተኛውን መረጃ ለማግኘት የዲቦግ5 ሁነታን ማብራት ነው.
postgresql.conf
log_destination = 'stderr'
ሎግ_ሰብሳቢ = በርቷል።
log_truncate_on_rotation = በርቷል
log_rotation_age = 1d
log_rotation_size = 10MB
log_min_messages = ማረም5
log_min_error_statement = ማረም5
log_min_duration_statement = 0
ማረም_print_parse = በርቷል
debug_print_rewritten = በርቷል
ማረም_የህትመት_ፕላን = በርቷል።
ማረም_pretty_print = በርቷል።
log_checkpoints = በርቷል
log_connections = በርቷል
log_disconnections = በርቷል
log_duration = በርቷል
log_hostname = በርቷል
log_lock_wait = በርቷል
log_replication_commands = በርቷል
log_temp_files = 0
log_timezone = 'አውሮፓ/ሞስኮ'
በPosgreSQL DBMS ከ1 ሲፒዩ፣ 2,8 GHz፣ 2GB RAM፣ 40GB 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%
ሲፒዩ
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 ሰከንድ.
- የኦዲት ፋይል ማመንጨት ስለሚያስፈልግ የ RAM እና CPU አፈጻጸም ይጎዳል። ይህ ደግሞ በምርታማነት ላይ የሚታይ ነው.
የግንኙነቶች ብዛት እየጨመረ ሲሄድ, በተፈጥሮ, አፈፃፀሙ በትንሹ ይቀንሳል.
በኦዲት ውስጥ ባሉ ኮርፖሬሽኖች ውስጥ የበለጠ ከባድ ነው-
- ብዙ ውሂብ አለ;
- ኦዲት ማድረግ በሲኢኤም ውስጥ በ syslog ብቻ ሳይሆን በፋይሎች ውስጥም ያስፈልጋል: በ syslog ላይ የሆነ ነገር ከተፈጠረ, ውሂቡ የሚቀመጥበት የውሂብ ጎታ ቅርብ የሆነ ፋይል መኖር አለበት;
- ለኦዲት, ብዙ ቦታ ስለሚወስድ በ I / O ዲስኮች ላይ እንዳይባክን የተለየ መደርደሪያ ያስፈልጋል;
- የመረጃ ደህንነት ሰራተኞች በሁሉም ቦታ የ GOST ደረጃዎች እንደሚያስፈልጋቸው ይከሰታል, የስቴት መታወቂያ ያስፈልጋቸዋል.
የውሂብ መዳረሻን መገደብ
መረጃን ለመጠበቅ እና በንግድ ዲቢኤምኤስ እና በክፍት ምንጭ ውስጥ ለመድረስ የሚያገለግሉ ቴክኖሎጂዎችን እንይ።
በአጠቃላይ ምን መጠቀም ይችላሉ:
- ሂደቶችን እና ተግባራትን ማመስጠር እና መደበቅ (መጠቅለል) - ማለትም የሚነበብ ኮድ እንዳይነበብ የሚያደርጉ የተለያዩ መሳሪያዎች እና መገልገያዎች። እውነት ነው፣ ከዚያ ወደ ኋላ መመለስም ሆነ መለወጥ አይቻልም። ይህ አካሄድ አንዳንድ ጊዜ ቢያንስ በዲቢኤምኤስ በኩል ያስፈልጋል - የፈቃድ ገደቦች አመክንዮ ወይም የፈቀዳ አመክንዮ በትክክል በሂደት እና በተግባር ደረጃ የተመሰጠረ ነው።
- የውሂብ ታይነትን በረድፍ (RLS) መገደብ የተለያዩ ተጠቃሚዎች አንድ ጠረጴዛ ሲያዩ ነገር ግን በውስጡ የተለያየ የረድፎች ቅንብር ማለትም አንድ ነገር በረድፍ ደረጃ ላለ ሰው ማሳየት አይቻልም።
- የሚታየውን ዳታ ማስተካከል (ማስኪንግ) በሠንጠረዡ አንድ አምድ ውስጥ ያሉ ተጠቃሚዎች አንዱን ዳታ ወይም ኮከቦችን ብቻ ሲያዩ ማለትም ለአንዳንድ ተጠቃሚዎች መረጃው ይዘጋል ማለት ነው። ቴክኖሎጂው የትኛው ተጠቃሚ ምን እንደሚታይ በመዳረሻ ደረጃቸው ላይ በመመስረት ይወስናል።
- የደህንነት DBA/መተግበሪያ DBA/DBA መዳረሻ ቁጥጥር፣ ይልቁንም፣ ራሱ የ DBMS መዳረሻን ስለ መገደብ፣ ማለትም፣ የመረጃ ደህንነት ሰራተኞች ከዳታቤዝ አስተዳዳሪዎች እና የመተግበሪያ አስተዳዳሪዎች ሊለዩ ይችላሉ። በክፍት ምንጭ ውስጥ እንደዚህ ያሉ ቴክኖሎጂዎች ጥቂት ናቸው፣ ነገር ግን በንግድ ዲቢኤምኤስ ውስጥ ብዙዎቻቸው አሉ። ራሳቸው የአገልጋዮቹ መዳረሻ ያላቸው ብዙ ተጠቃሚዎች ሲኖሩ ያስፈልጋሉ።
- በፋይል ስርዓት ደረጃ የፋይሎች መዳረሻን መገደብ። እያንዳንዱ አስተዳዳሪ አስፈላጊውን ውሂብ ብቻ ማግኘት እንዲችል መብቶችን እና የመዳረሻ መብቶችን ወደ ማውጫዎች መስጠት ይችላሉ።
- የግዴታ መዳረሻ እና ማህደረ ትውስታ ማጽዳት - እነዚህ ቴክኖሎጂዎች እምብዛም ጥቅም ላይ አይውሉም.
- ከጫፍ እስከ ጫፍ ምስጠራ በቀጥታ ከዲቢኤምኤስ የደንበኛ-ጎን ምስጠራ በአገልጋዩ በኩል ቁልፍ አስተዳደር ነው።
- የውሂብ ምስጠራ. ለምሳሌ, columnar ምስጠራ ማለት የውሂብ ጎታውን አንድ አምድ የሚያመሰጥር ዘዴን ሲጠቀሙ ነው.
ይህ በዲቢኤምኤስ አፈጻጸም ላይ ምን ተጽዕኖ ያሳድራል?
በ PostgreSQL ውስጥ የአምድ ምስጠራን ምሳሌ እንመልከት። የ pgcrypto ሞጁል አለ, የተመረጡ መስኮችን በተመሰጠረ መልክ እንዲያከማቹ ያስችልዎታል. ይህ ጠቃሚ የሚሆነው አንዳንድ መረጃዎች ዋጋ ያላቸው ሲሆኑ ነው። የተመሰጠሩትን መስኮች ለማንበብ ደንበኛው የዲክሪፕት ቁልፍን ያስተላልፋል፣ አገልጋዩ መረጃውን ዲክሪፕት አድርጎ ለደንበኛው ይመልሳል። ቁልፉ ከሌለ ማንም ሰው በውሂብዎ ምንም ነገር ማድረግ አይችልም።
በpgcrypto እንሞክር. ኢንክሪፕት የተደረገ ዳታ እና መደበኛ ዳታ ያለው ጠረጴዛ እንፍጠር። ከዚህ በታች ሰንጠረዦችን ለመፍጠር ትዕዛዞች አሉ ፣ በመጀመሪያው መስመር ውስጥ ጠቃሚ ትእዛዝ አለ - ቅጥያውን በራሱ በ DBMS ምዝገባ መፍጠር።
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የሩጫ ሰዓት በርቷል።
መታወቂያ | ጽሑፍ1 | ጽሑፍ2
——+——-+——-
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የሩጫ ሰዓት በርቷል።
መታወቂያ | ዲክሪፕት ማድረግ | ዲክሪፕት ማድረግ
——+———————————
1 | x31 | x31
2 | x32 | x32
3 | x33 | x33
...
999 | x393939 | x393939
1000 | x31303030 | x31303030
(1000 መስመሮች)
ጊዜ፡ 50,203 ሚሴ
የሙከራ ውጤቶች:
ያለ ምስጠራ
Pgcrypto (ዲክሪፕት)
ናሙና 1000 ረድፎች
1,386 ሚ
50,203 ሚ
ሲፒዩ
15%
35%
ራም
+ 5%
ምስጠራ በአፈፃፀም ላይ ትልቅ ተጽእኖ አለው. ኢንክሪፕትድ የተደረጉ ዳታዎችን የመፍቻ ተግባራት (እና ምስጠራ መፍታት አሁንም በእርስዎ ሎጂክ ውስጥ ስለሚጠቀለል) ጉልህ ግብዓቶችን ስለሚፈልግ ሰዓቱ መጨመሩን ማየት ይቻላል። ያም ማለት አንዳንድ መረጃዎችን የያዙ ሁሉንም አምዶች ኢንክሪፕት ማድረግ ሀሳቡ በአፈጻጸም መቀነስ የተሞላ ነው።
ይሁን እንጂ ምስጠራ ሁሉንም ችግሮች የሚፈታ የብር ጥይት አይደለም. ዲክሪፕት የተደረገው ዳታ እና የዲክሪፕት ቁልፍ በአገልጋዩ ላይ ይገኛሉ። ስለዚህ ቁልፎቹ እንደ የስርዓት አስተዳዳሪ ያለ የውሂብ ጎታ አገልጋይ ሙሉ መዳረሻ ባለው ሰው ሊጠለፍ ይችላል።
ለሁሉም ተጠቃሚዎች ለጠቅላላው ዓምድ አንድ ቁልፍ ሲኖር (ምንም እንኳን ለሁሉም ባይሆንም ፣ ግን ለተወሰነ ስብስብ ደንበኞች) ይህ ሁልጊዜ ጥሩ እና ትክክል አይደለም። ለዚህም ነው ከጫፍ እስከ ጫፍ ምስጠራ ማድረግ የጀመሩት፣ በዲቢኤምኤስ ውስጥ በደንበኛው እና በአገልጋዩ በኩል መረጃን ለማመስጠር አማራጮችን ማጤን ጀመሩ እና እነዚያ ተመሳሳይ የቁልፍ-ቮልት ማከማቻዎች ታዩ - በዲቢኤምኤስ ላይ ቁልፍ አስተዳደር የሚሰጡ የተለዩ ምርቶች። ጎን.

የንግድ እና ክፍት ምንጭ DBMS ውስጥ የደህንነት ባህሪያት
ተግባሮች
ይተይቡ
የይለፍ ቃል ፖሊሲ
ተቆጣጠረ
የአሰራር እና ተግባራት ምንጭ ኮድ መጠበቅ
RLS
ምስጠራ
Oracle
የንግድ
+
+
+
+
+
MsSql
የንግድ
+
+
+
+
+
የንግድ
+
+
+
+
ቅጥያዎች
PostgreSQL
ፍርይ
ቅጥያዎች
ቅጥያዎች
-
+
ቅጥያዎች
ሞንጎ ዲቢ
ፍርይ
-
+
-
-
በMongoDB ኢንተርፕራይዝ ውስጥ ብቻ ይገኛል።
ሠንጠረዡ ከተጠናቀቀ በጣም የራቀ ነው, ነገር ግን ሁኔታው ይህ ነው: በንግድ ምርቶች ውስጥ, የደህንነት ችግሮች ለረጅም ጊዜ ተፈትተዋል, በክፍት ምንጭ ውስጥ, እንደ አንድ ደንብ, አንዳንድ ዓይነት ማከያዎች ለደህንነት ጥቅም ላይ ይውላሉ, ብዙ ተግባራት ይጎድላሉ. አንዳንድ ጊዜ አንድ ነገር ማከል አለብዎት. ለምሳሌ የይለፍ ቃል ፖሊሲዎች - PostgreSQL ብዙ የተለያዩ ቅጥያዎች አሉት (, , , , ), የይለፍ ቃል ፖሊሲዎችን የሚተገብሩ, ግን በእኔ አስተያየት, አንዳቸውም ቢሆኑ ሁሉንም የአገር ውስጥ የኮርፖሬት ክፍል ፍላጎቶችን አይሸፍኑም.
የትኛውም ቦታ የሚያስፈልግዎ ከሌለ ምን ማድረግ እንዳለብዎ? ለምሳሌ፣ ደንበኛው የሚፈልገውን ተግባር የሌለውን የተወሰነ ዲቢኤምኤስ መጠቀም ይፈልጋሉ።
ከዚያ ከተለያዩ ዲቢኤምኤስ ጋር የሚሰሩ የሶስተኛ ወገን መፍትሄዎችን መጠቀም ይችላሉ, ለምሳሌ, Crypto DB ወይም Garda DB. ስለ መፍትሄዎች ከተነጋገርን የአገር ውስጥ ክፍል , ከዚያም ስለ GOSTs ከክፍት ምንጭ የበለጠ ያውቃሉ.
ሁለተኛው አማራጭ እራስዎ የሚፈልጉትን መጻፍ, በሂደቱ ደረጃ በመተግበሪያው ውስጥ የውሂብ መዳረሻን እና ምስጠራን መተግበር ነው. እውነት ነው, በ GOST የበለጠ አስቸጋሪ ይሆናል. ነገር ግን በአጠቃላይ ውሂቡን እንደ አስፈላጊነቱ መደበቅ፣ በዲቢኤምኤስ ውስጥ ማስቀመጥ፣ ከዚያ ሰርስረው አውጥተው እንደ አስፈላጊነቱ ዲክሪፕት ማድረግ ይችላሉ፣ ልክ በመተግበሪያው ደረጃ። በተመሳሳይ ጊዜ, በመተግበሪያው ውስጥ እነዚህን ስልተ ቀመሮች እንዴት እንደሚከላከሉ ወዲያውኑ ያስቡ. በእኛ አስተያየት, ይህ በ DBMS ደረጃ መከናወን አለበት, ምክንያቱም በፍጥነት ይሰራል.
ይህ ሪፖርት በመጀመሪያ የቀረበው በ በ Mail.ru Cloud Solutions. ተመልከትሌሎች ትርኢቶች እና በቴሌግራም ውስጥ ለክስተቶች ማስታወቂያዎች ይመዝገቡ .
በርዕሱ ላይ ሌላ ምን ማንበብ:
- .
- .
ምንጭ: hab.com

