সংস্করণ নিয়ন্ত্রণে ফাইলটি বজায় রেখে আপনি আপনার সংবেদনশীল সেটিংস ফাইলটি এনক্রিপ্ট করতে চান ঠিক ঠিক। যেমন আপনি উল্লেখ করেছেন, সর্বোত্তম সমাধানটি হ'ল এটির মধ্যে যখন গিট নির্দিষ্ট সংবেদনশীল ফাইলগুলিকে স্বচ্ছভাবে এনক্রিপ্ট করবে যখন আপনি সেগুলিকে স্থানীয়ভাবে চাপান (যেমন কোনও মেশিনে যার কাছে আপনার শংসাপত্র রয়েছে) আপনি সেটিংস ফাইলটি ব্যবহার করতে পারেন তবে গিট বা ড্রপবক্স বা যে কেউ ভিসির অধীনে আপনার ফাইলগুলি সংরক্ষণ করার ক্ষেত্রে সরলরেখায় তথ্যটি পড়ার ক্ষমতা নেই।
পুশ / পুলের সময় স্বচ্ছ এনক্রিপশন / ডিক্রিপশন সম্পর্কিত টিউটোরিয়াল
এই টুকরোটি https://gist.github.com/873637 কীভাবে গিটের স্মাড / ক্লিন ফিল্টার ড্রাইভারকে ওপেনসেল দিয়ে স্বচ্ছভাবে পুশ করা ফাইলগুলি এনক্রিপ্ট করতে হবে সে সম্পর্কে একটি টিউটোরিয়াল দেখায়। আপনার কিছু প্রাথমিক সেটআপ করা দরকার।
এটি কীভাবে কাজ করে তার সংক্ষিপ্তসার
আপনি মূলত .gitencrypt3 টি ব্যাশ স্ক্রিপ্টযুক্ত ফোল্ডার তৈরি করবেন ,
clean_filter_openssl
smudge_filter_openssl
diff_filter_openssl
যা গিট ডিক্রিপশন, এনক্রিপশন, এবং গিট ডিফ সমর্থন করার জন্য ব্যবহার করে। এই স্ক্রিপ্টগুলির মধ্যে একটি মাস্টার পাসফ্রেজ এবং লবণ (ফিক্সড!) সংজ্ঞায়িত করা হয়েছে এবং আপনাকে অবশ্যই নিশ্চিত করতে হবে যে .gitencrypt আসলে কখনও ধাক্কা দেয় না। উদাহরণ clean_filter_opensslলিপি:
#!/bin/bash
SALT_FIXED=<your-salt> # 24 or less hex characters
PASS_FIXED=<your-passphrase>
openssl enc -base64 -aes-256-ecb -S $SALT_FIXED -k $PASS_FIXED
smudge_filter_open_sslএবং অনুরূপ diff_filter_oepnssl। গিস্ট দেখুন।
সংবেদনশীল তথ্যের সাথে আপনার রেপোতে একটি .gitattribute ফাইল থাকা উচিত (এনক্রিপ্ট করা এবং রেপোতে অন্তর্ভুক্ত) যা .gitencrypt ডিরেক্টরিকে উল্লেখ করে (যাতে গিটকে প্রকল্পটি স্বচ্ছভাবে এনক্রিপ্ট / ডিক্রিপ্ট করার দরকার রয়েছে) যা আপনার স্থানীয় মেশিনে উপস্থিত রয়েছে।
.gitattribute সূচিপত্র:
* filter=openssl diff=openssl
[merge]
renormalize = true
শেষ অবধি, আপনার .git/configফাইলে আপনাকে নিম্নলিখিত বিষয়বস্তু যুক্ত করতে হবে
[filter "openssl"]
smudge = ~/.gitencrypt/smudge_filter_openssl
clean = ~/.gitencrypt/clean_filter_openssl
[diff "openssl"]
textconv = ~/.gitencrypt/diff_filter_openssl
এখন, আপনি যখন আপনার সংবেদনশীল তথ্য সম্বলিত সংগ্রহস্থলটিকে একটি দূরবর্তী সংগ্রহস্থলের দিকে ঠেলাবেন তখন ফাইলগুলি স্বচ্ছভাবে এনক্রিপ্ট করা হবে। আপনি যখন কোনও স্থানীয় মেশিন থেকে টানেন যার .gitencrypt ডিরেক্টরি রয়েছে (আপনার পাসফ্রেজ রয়েছে) ফাইলগুলি স্বচ্ছভাবে ডিক্রিপ্ট হবে ted
মন্তব্য
আমার লক্ষ্য করা উচিত যে এই টিউটোরিয়ালটি আপনার সংবেদনশীল সেটিংস ফাইলটি কেবল এনক্রিপ্ট করার কোনও উপায় বর্ণনা করে না। এটি স্বতঃস্ফূর্তভাবে পুরো সংগ্রহস্থল এনক্রিপ্ট করবে যা দূরবর্তী ভিসি হোস্টের দিকে ধাক্কা খায় এবং পুরো সংগ্রহস্থলটি ডিক্রিপ্ট করে যাতে এটি স্থানীয়ভাবে সম্পূর্ণ ডিক্রিপ্ট হয়। আপনি যে আচরণটি চান তা অর্জন করতে আপনি এক বা একাধিক প্রকল্পের জন্য একটি সংবেদনশীল_সেটিংস_রেপোতে সংবেদনশীল ফাইল রাখতে পারেন। এই স্বচ্ছ এনক্রিপশন কৌশলটি গিট সাবমডিউলগুলির সাথে কীভাবে কাজ করে তা আপনি তদন্ত করতে পারেন http://git-scm.com/book/en/Git-Tools-Submodules আপনার যদি সত্যই সংবেদনশীল ফাইলগুলির একই সংগ্রহস্থলে থাকতে হয়।
যদি আক্রমণকারীদের অনেকগুলি এনক্রিপ্ট করা রেপো / ফাইলগুলিতে অ্যাক্সেস থাকে তবে একটি স্থির পাসফ্রেজের ব্যবহার তাত্ত্বিকভাবে জন্তু-শক্তি দুর্বলতার দিকে নিয়ে যেতে পারে। আইএমও, এর সম্ভাবনা খুব কম। এই টিউটোরিয়ালের নীচের অংশে একটি নোট হিসাবে উল্লেখ করা হয়েছে, একটি নির্দিষ্ট পাসফ্রেজ ব্যবহার না করার ফলে বিভিন্ন মেশিনে রেপোটির স্থানীয় সংস্করণ সর্বদা প্রদর্শিত হবে যে 'গিট স্ট্যাটাস' দিয়ে পরিবর্তন এসেছে।