የጂት ሎግ ምስጢሮችን “ከተሰረዙ” በኋላም ቢሆን ለምን ያጋልጣል?
ከፋይል ላይ መስመርን መሰረዝ እና commitለውጡን ማድረግ ሚስጥራዊውን መረጃ ከማከማቻዎ ላይ አያስወግደውም። ያ ሚስጥር፣ የኤፒአይ ቁልፍ፣ የምስክር ወረቀት ወይም ቶከን ቢሆን ኖሮ commitቴድ፣ በጂት ታሪክህ ውስጥ ይኖራል። የሚሮጥ ማንኛውም ሰው git log-p, የጊት ሾውወይም ካለፈው ጊዜ ልዩነቶችን መመርመር commitኤስ አሁንም ሊያገኘው ይችላል።
ፋይልን ቢተኩም ወይም እሴቱን ቢተኩም፣ git log የእያንዳንዱን ለውጥ ሙሉ መስመር ይጠብቃል። ይህ በዲዛይን የተገኘ ነው። የጊት አጠቃላይ ሞዴል የተመሠረተው በማይለወጥ ላይ ነው commit ታሪክ እና የተከፋፈሉ ቅጂዎች። ስለዚህ ታሪክን በግልጽ እንደገና ካልጻፉ በስተቀር፣ ምስጢሮችዎ አሁንም አሉ። ተግባራዊ ጉዳይ እነሆ፡-
⚠️ ትምህርታዊ ምሳሌ፣ በምርት ውስጥ አይሂዱ
በጣም ዘግይቷል። git log አሁንም ቁልፉን በመጀመሪያው ክፍል ውስጥ ያሳያል commit.
ስለ git stash እና git rebase ያሉ የተሳሳቱ አመለካከቶች
ብዙ ገንቢዎች እንደሚገምቱት ጊት ስታሽ ምስጢሮችን ለመደበቅ ወይም ለማጽዳት ይረዳል። እውነት አይደለም። ጊት ስታሽ መደርደሪያዎች ብቻ የስራ ማውጫ ለጊዜው ይለወጣል፤ አይነካም commit ታሪክ። ምስጢር ቢሆን ኖሮ commitቴድ፣ በኋላ ላይ ለውጦችን ማስቀመጥ ለማጽዳት ምንም አያደርግም።
ስለ ምን git rebaseታሪክን እንደገና መጻፍ ቢችልም፣ አስቀድሞ መደረግ አለበትcisኤሊ። እየሮጥኩ ነው። git rebase -i እና እንደገና ማዘዝ ወይም መጨፍለቅ commits ምስጢሮችን በግልጽ ካላስተካከሉ ወይም ካላስወገዱ በስተቀር አያስወግዳቸውም። እና ከመጀመሪያው ጋር አንድ ክሎን ወይም ሹካ እንኳን ካለ commitዎች፣ ሚስጥርህ ሕያው ነው።
ከዚህ የባሰው ደግሞ፣ በትክክል ሳይገፋ ወይም ከተባባሪዎች ጋር እንደገና ሳይተባበር እንደገና ማዋሃድ የተጋለጠውን ማስረጃ በውህደት እንደገና ሊያቀርብ ይችላል።
⚠️ ትምህርታዊ ምሳሌ፣ በእውነተኛ አካባቢዎች አይጠቀሙ
⚠️ ትምህርታዊ ምሳሌ፣ በምርት ማከማቻዎች ላይ አይሂዱ
ን ያርትዑ commit ምስጢሩን የያዘ፣ ግን ማስወገድዎን ይርሱ። ያንተ git log ኀይል መልክ ንፁህ፣ ነገር ግን ሚስጥራዊው ይዘት አሁንም መልሶ ማግኘት ይቻላል።
በጂት ታሪክ ውስጥ የተረሱ የምስክር ወረቀቶች እውነተኛ አደጋዎች
ይህ ቲዎሪቲካል አይደለም። አጥቂዎች የተደበቁ ምስጢሮችን ለማግኘት የህዝብ እና የግል ማከማቻዎችን በንቃት ይቃኛሉ commit ታሪኮች። የጂትሆብ ሹካዎች፣ የመስታወት ማከማቻዎች፣ እና የተሸጎጡ CI/CD pipelineሁሉም የተረሱትን ቶከኖች ሊይዙ ይችላሉ።
- ከአሮጌ የተለቀቀ የኤፒአይ ቁልፍ git log ለአንድ ጅምር ኩባንያ በሺዎች የሚቆጠሩ የደመና ክፍያ እንዲከፍሉ ምክንያት ሆኗል።
- የOAuth ቶከኖች commitቴድ፣ ከዚያም “ተሰርዟል”፣ የተጠቃሚ መለያዎችን ለመጥለፍ ያገለግሉ ነበር።
- በክፍት ምንጭ ፕሮጀክቶች ውስጥ የተደበቁ ሚስጥሮች ዋና ዋና የደህንነት ክስተቶችን አስከትለዋል።
እነዚህ ችግሮች በ ውስጥ ይስፋፋሉ CI/CD. የመጠባበቂያ ቅጂን የሚቀርጽ እያንዳንዱ ስራ ይሰራል git log ከኮፈኑ ስር፣ እና እያንዳንዱ የግንባታ ቅርስ የተጋለጠ ምስጢሮችን ዱካዎች ሊያካትት ይችላል።
በ git filter-repo አማካኝነት ሚስጥራዊ መረጃዎችን ማጽዳት
ጉዳቱ ከተከሰተ ለማጽዳት በጣም አስተማማኝው መሣሪያ git ማጣሪያ-repo. የማይመሳስል git rebase, እሱም እንደገና ይጽፋል ግለሰብ commits, git ማጣሪያ-repo ሙሉውን እንደገና መጻፍ ይችላል commit በፋይል ዱካዎች፣ ቅጦች ወይም ይዘት ላይ የተመሠረተ ታሪክ።
ምሳሌ፡ ሁሉንም ክስተቶች ለማፅዳት config.json ሚስጥሮችን ሊይዝ ይችላል፡-
⚠️ የትምህርት ምሳሌ፣ በምርት ውስጥ ከመጠቀምዎ በፊት በሙከራ ማከማቻ ውስጥ ያረጋግጡ
ወይም ሁሉንም ለማስወገድ commitየተወሰነ ሕብረቁምፊ የሚያካትቱ s (ለምሳሌ፣ AWS_SECRET_ACCESS_ቁልፍ):
⚠️ የትምህርት ምሳሌ፣ በምርት ውስጥ ከመጠቀምዎ በፊት በሙከራ ማከማቻ ውስጥ ያረጋግጡ
ይጠንቀቁ፦ ይህ እንደገና ይጽፋል commit ሃሽ። ሁሉንም ተባባሪዎች በኃይል መግፋት እና ማሳወቅ ያስፈልግዎታል። ማንኛውም አውቶሜሽን ወይም የማሰማሪያ ቁልፎች ከ ጋር የተያያዙ ናቸው commit ሃሽ ይሰበራል።
እንዲሁም እንደ የቢኤፍጂ ሪፖ-ክሊነር ተመሳሳይ ችሎታዎችን ይሰጣሉ ነገር ግን ብዙም ተለዋዋጭ አይደሉም እና አሁን ውስብስብ ለሆኑ ጉዳዮች ጊዜ ያለፈባቸው እንደሆኑ ይቆጠራሉ።
ድብቅ ፍሳሾችን ወደ ጊት ከመድረሳቸው በፊት መከላከል
መከላከል ከጽዳት ይበልጣል፤ ምስጢሮች ከመቼውም ጊዜ በበለጠ እንዳይጎዱ እንዴት መከላከል እንደሚቻል እነሆ git log:
1. Pre-commit Hooks
መሳሪያዎችን ይጠቀሙ pre-commit, ጊትሊክስ, ወይም ድንገቴ ምስጢሮችን ከመፈተሽ በፊት commits:
2. CI/CD Pipeline ማስፈጸም
ማዋሃድ ሚስጥራዊ ማወቂያ ወደ CI ስራዎችዎ ይግቡ። ምስጢሮች ሲገኙ ውድቀት ይፈጠራል። ይህንን ፖሊሲ ያድርጉት።
3. የምስጢር አስተዳደር
በፍፁም ጠንካራ ኮድ ማስረጃዎችን አይጠቀሙ። ከመጀመሪያው ቀን ጀምሮ የአካባቢ ተለዋዋጮችን፣ ቫውቸሮችን ወይም ሚስጥራዊ አስተዳዳሪዎችን ይጠቀሙ።
4. የኦዲት ጥገኝነቶች
የሶስተኛ ወገን ፓኬጆችን በጭፍን አትመኑ። ምስጢሮች ሊፈሱ ይችላሉ በ npm፣ PyPI ወይም Docker ንብርብሮች በኩል።
የመጨረሻ ጥገና፡ የስክርብ ሚስጥሮች ከ git filter-repo ጋር
ከኮድ ውስጥ ምስጢሮችን መሰረዝ ብቻውን በቂ አይደለም። git log ታሪክን እንደገና ለመጻፍ ሆን ተብሎ እርምጃ ካልወሰዱ በስተቀር ሙሉ መዝገብ ይይዛል። በ ጊት ስታሽ ወይም ግማሽ የተጋገረ git rebase ሙከራዎች። ይጠቀሙ git ማጣሪያ-repo ጥልቅ ጽዳት ሲያስፈልግዎ፣ እና ምስጢሮች ወደ ማከማቻዎ ከመድረሳቸው በፊት ፖሊሲዎችን እና ቅኝቶችን ያስፈጽሙ።
ለቅድመ ጥንቃቄ ሚስጥራዊ ፍለጋ፣ እንደሚከተሉት ያሉ መሳሪያዎችን መጠቀም ያስቡበት ዚጌኒ የእርስዎን ደህንነት ለመጠበቅ pipelineኤስ፣ አስገድድ commit ንፅህናን መጠበቅ እና ውድ የሆኑ ፍሳሾችን ከመውሰዳቸው በፊት መከላከል። ጊት ፈጽሞ አይረሳም፣ ነገር ግን መጀመሪያ ላይ ምስጢሮችዎን እንደማያስታውስ ማረጋገጥ ይችላሉ።





