"ડિલીટ" થયા પછી પણ ગિટ લોગ રહસ્યો કેમ ઉજાગર કરે છે?
ફાઇલમાંથી એક લાઇન કાઢી નાખવી અને commitફેરફાર દાખલ કરવાથી ખરેખર તમારા રેપોમાંથી સંવેદનશીલ ડેટા દૂર થતો નથી. જો તે રહસ્ય, API કી, ઓળખપત્ર અથવા ટોકન, ક્યારેય commitટેડ, તે તમારા ગિટ ઇતિહાસમાં જીવંત છે. કોઈપણ દોડી રહ્યું છે ગિટ લોગ -પી, ગિટ શો, અથવા ભૂતકાળના તફાવતોનું નિરીક્ષણ કરવું commitવપરાશકર્તાઓ હજુ પણ તેને મેળવી શકે છે.
ભલે તમે ફાઇલને ઓવરરાઇટ કરો અથવા મૂલ્ય બદલો, ગિટ લોગ દરેક ફેરફારનો સંપૂર્ણ વંશ સાચવે છે. આ ડિઝાઇન દ્વારા છે. ગિટનું આખું મોડેલ અપરિવર્તનશીલ પર આધારિત છે commit ઇતિહાસ અને વિતરિત નકલો. તેથી જ્યાં સુધી તમે સ્પષ્ટ રીતે ઇતિહાસ ફરીથી લખો નહીં, ત્યાં સુધી તમારા રહસ્યો હજુ પણ ત્યાં જ છે. અહીં એક વ્યવહારુ કિસ્સો છે:
⚠️ શૈક્ષણિક ઉદાહરણ, ઉત્પાદનમાં ચલાવશો નહીં
ખૂબ મોડું. આ ગિટ લોગ હજુ પણ શરૂઆતમાં તે કી બતાવે છે commit.
ગિટ સ્ટેશ અને ગિટ રીબેઝ વિશે ગેરસમજો
ઘણા વિકાસકર્તાઓ ધારે છે ગટ સંતાડવું રહસ્યો છુપાવવામાં અથવા સાફ કરવામાં મદદ કરે છે. સાચું નથી. ગટ સંતાડવું ફક્ત છાજલીઓ કાર્યકારી ડિરેક્ટરી અસ્થાયી રૂપે બદલાય છે; તે ક્યારેય સ્પર્શતું નથી commit ઇતિહાસ. જો કોઈ રહસ્ય ક્યારેય હોત તો commitખેર, પછીથી પૈસા છુપાવવાથી તેને સાફ કરવામાં કંઈ થતું નથી.
તે વિષે ગિટ રિબેઝ? જ્યારે તે ઇતિહાસ ફરીથી લખી શકે છે, તે પહેલા કરવું આવશ્યક છેcisએલી. બસ દોડી રહ્યો છું ગિટ રીબેઝ -i અને ફરીથી ગોઠવણી અથવા સ્ક્વોશિંગ commits રહસ્યો દૂર કરતું નથી સિવાય કે તમે તેમને સ્પષ્ટ રીતે સંપાદિત કરો અથવા છોડી દો. અને જો મૂળ સાથે એક પણ ક્લોન અથવા ફોર્ક અસ્તિત્વમાં હોય તો commitહા, તમારું રહસ્ય જીવંત છે.
તેનાથી પણ ખરાબ, યોગ્ય રીતે દબાણ કર્યા વિના અથવા સહયોગીઓ સાથે ફરીથી સંકલન કર્યા વિના રિબેઝિંગ કરવાથી મર્જ દ્વારા ખુલ્લા ઓળખપત્રોને ફરીથી રજૂ કરી શકાય છે.
⚠️ શૈક્ષણિક ઉદાહરણ, વાસ્તવિક વાતાવરણમાં ઉપયોગ કરશો નહીં
⚠️ શૈક્ષણિક ઉદાહરણ, પ્રોડક્શન રિપોઝીટરી પર ચલાવશો નહીં
ફેરફાર કરો commit રહસ્ય સમાવી રહ્યું છે, પણ તેને દૂર કરવાનું ભૂલી જાવ. તમારા ગિટ લોગ કદાચ જુઓ સ્વચ્છ, પરંતુ સંવેદનશીલ સામગ્રી હજુ પણ પુનઃપ્રાપ્ત કરી શકાય છે.
ગિટ ઇતિહાસમાં ભૂલી ગયેલા ઓળખપત્રોથી વાસ્તવિક દુનિયાના જોખમો
આ સૈદ્ધાંતિક નથી. હુમલાખોરો છુપાયેલા રહસ્યો માટે જાહેર અને ખાનગી રીપોને સક્રિયપણે સ્કેન કરે છે commit ઇતિહાસ. ગિટહબ ફોર્ક્સ, મિરર રિપોઝ અને કેશ્ડ CI/CD pipelineબધા વપરાશકર્તાઓ તે ભૂલી ગયેલા ટોકન્સ રાખી શકે છે.
- જૂનામાંથી લીક થયેલી API કી ગિટ લોગ એક સ્ટાર્ટઅપ માટે હજારો ક્લાઉડ બિલિંગ તરફ દોરી ગયું.
- OAuth ટોકન્સ committed, પછી "કાઢી નાખવામાં આવ્યા", નો ઉપયોગ વપરાશકર્તા ખાતાઓને હાઇજેક કરવા માટે કરવામાં આવતો હતો.
- ઓપન સોર્સ પ્રોજેક્ટ્સના ગૂંચવણોમાં ઊંડા છુપાયેલા રહસ્યોને કારણે મોટી સુરક્ષા ઘટનાઓ બની.
આ સમસ્યાઓનું પ્રમાણ CI/CD. રેપો ક્લોન કરતી દરેક જોબ ચાલે છે ગિટ લોગ હૂડ હેઠળ, અને દરેક બિલ્ડ આર્ટિફેક્ટમાં સંભવિત રીતે ખુલ્લા રહસ્યોના નિશાન શામેલ હોઈ શકે છે.
ગિટ ફિલ્ટર-રેપો વડે સંવેદનશીલ ડેટા સાફ કરવો
જો નુકસાન થયું હોય, તો તેને સાફ કરવા માટેનું સૌથી વિશ્વસનીય સાધન છે git ફિલ્ટર-રેપો. વિપરીત ગિટ રિબેઝ, જે ફરીથી લખે છે વ્યક્તિગત commits, git ફિલ્ટર-રેપો આખું ફરીથી લખી શકે છે commit ફાઇલ પાથ, પેટર્ન અથવા સામગ્રી પર આધારિત ઇતિહાસ.
ઉદાહરણ: બધી ઘટનાઓને સાફ કરવા માટે config.json જેમાં રહસ્યો હોઈ શકે છે:
⚠️ શૈક્ષણિક ઉદાહરણ, ઉત્પાદનમાં ઉપયોગ કરતા પહેલા ટેસ્ટ રેપોમાં ચકાસો
અથવા બધા દૂર કરવા માટે commits જેમાં ચોક્કસ સ્ટ્રિંગનો સમાવેશ થાય છે (દા.ત., AWS_SECRET_ACCESS_KEY):
⚠️ શૈક્ષણિક ઉદાહરણ, ઉત્પાદનમાં ઉપયોગ કરતા પહેલા ટેસ્ટ રેપોમાં ચકાસો
સાવધાન રહો: આ ફરીથી લખાશે commit હેશ. તમારે ફોર્સ-પુશ કરવાની અને બધા સહયોગીઓને જાણ કરવાની જરૂર પડશે. કોઈપણ ઓટોમેશન અથવા ડિપ્લોયમેન્ટ કીઝ સાથે જોડાયેલી છે commit હેશ તૂટી જશે.
ઉપરાંત, સાધનો જેમ કે BFG રેપો-ક્લીનર સમાન ક્ષમતાઓ પ્રદાન કરે છે પરંતુ ઓછી લવચીક છે અને હવે જટિલ કેસ માટે તેને જૂના ગણવામાં આવે છે.
ગુપ્ત લીક્સ ગિટ સુધી પહોંચે તે પહેલાં તેને અટકાવવું
નિવારણ સફાઈ કરતાં પણ આગળ છે. રહસ્યોને ક્યારેય સ્પર્શતા અટકાવવાની રીત અહીં છે. ગિટ લોગ:
1. Pre-commit Hooks
જેવા ટૂલ્સનો ઉપયોગ કરો pre-commit, ગિટલિક્સ, અથવા તાવીજ પહેલાં રહસ્યો શોધવા માટે commits:
2. CI/CD Pipeline અમલીકરણ
એકીકૃત કરો ગુપ્ત શોધ તમારી CI નોકરીઓમાં પ્રવેશ કરો. રહસ્યો મળી આવે ત્યારે નિષ્ફળતા બને છે. આને એક નીતિ બનાવો.
3. રહસ્યોનું સંચાલન
ક્યારેય હાર્ડકોડ ઓળખપત્રો ન આપો. પહેલા દિવસથી જ પર્યાવરણ ચલ, તિજોરીઓ અથવા ગુપ્ત સંચાલકોનો ઉપયોગ કરો.
૪. ઓડિટ ડિપેન્ડન્સીઝ
તૃતીય-પક્ષ પેકેજો પર આંધળો વિશ્વાસ ન કરો. રહસ્યો છલકાઈ શકે છે npm, PyPI, અથવા ડોકર સ્તરો દ્વારા.
અંતિમ ઉકેલ: ગિટ ફિલ્ટર-રેપો વડે સ્ક્રબ સિક્રેટ્સ
કોડમાંથી રહસ્યો કાઢી નાખવા પૂરતા નથી. ગિટ લોગ જ્યાં સુધી તમે ઇતિહાસ ફરીથી લખવા માટે ઇરાદાપૂર્વક પગલાં ન લો ત્યાં સુધી સંપૂર્ણ રેકોર્ડ રાખે છે. પર આધાર રાખશો નહીં ગટ સંતાડવું અથવા અડધું શેકેલું ગિટ રિબેઝ પ્રયાસો. ઉપયોગ git ફિલ્ટર-રેપો જ્યારે તમને ઊંડાણપૂર્વક સફાઈની જરૂર હોય, અને રહસ્યો તમારા ભંડાર સુધી પહોંચે તે પહેલાં નીતિઓ અને સ્કેનિંગ લાગુ કરો.
સક્રિય ગુપ્ત શોધ માટે, જેવા સાધનોનો ઉપયોગ કરવાનું વિચારો ઝીગેની તમારા સુરક્ષિત કરવા માટે pipelines, દબાણ કરો commit સ્વચ્છતા, અને ખર્ચાળ લીક સપાટી પર આવે તે પહેલાં તેને અટકાવો. ગિટ ક્યારેય ભૂલતું નથી, પરંતુ તમે ખાતરી કરી શકો છો કે તે તમારા રહસ્યોને પહેલા ક્યારેય યાદ ન રાખે.





