আমি কীভাবে আমার সংস্করণ নিয়ন্ত্রণ সিস্টেমে আমার গোপন কী এবং পাসওয়ার্ডটি নিরাপদে সংরক্ষণ করতে পারি?


134

আমি আমার সংস্করণ নিয়ন্ত্রণ সিস্টেমে হোস্টনাম এবং বিকাশ এবং উত্পাদন সার্ভারের পোর্টগুলির মতো গুরুত্বপূর্ণ সেটিংস রাখি। তবে আমি জানি যে ভিসিএস সংগ্রহস্থলে গোপনীয়তা রাখা (ব্যক্তিগত কী এবং ডাটাবেস পাসওয়ার্ডের মতো) রাখা খারাপ অভ্যাস

তবে পাসওয়ার্ডগুলি - অন্য যে কোনও সেটিংয়ের মতো - মনে হয় সেগুলি সংস্করণ করা উচিত। তাই কি হয় পাসওয়ার্ড সংস্করণ নিয়ন্ত্রিত রাখার সঠিক উপায়?

আমি ধারণা করি এর মধ্যে গোপনীয়তাগুলিকে তাদের নিজস্ব "সিক্রেটস সেটিংস" ফাইলটিতে রাখা এবং সেই ফাইলটি এনক্রিপ্ট করা এবং সংস্করণটি নিয়ন্ত্রণ করা অন্তর্ভুক্ত থাকবে। তবে কী প্রযুক্তি? এবং কিভাবে এটি সঠিকভাবে করবেন? এটির জন্য পুরোপুরি আরও ভাল উপায় কি?


আমি প্রশ্নটি সাধারণত জিজ্ঞাসা করি তবে আমার নির্দিষ্ট উদাহরণে আমি গিট এবং গিথাব ব্যবহার করে জ্যাঙ্গো / পাইথন সাইটের জন্য গোপন কী এবং পাসওয়ার্ড সংরক্ষণ করতে চাই ।

এছাড়াও, যখন আমি গিট দিয়ে ধাক্কা / টান করি তখন একটি আদর্শ সমাধান যাদুতে কিছু করতে পারে - উদাহরণস্বরূপ, যদি এনক্রিপ্ট করা পাসওয়ার্ডগুলির ফাইল বদলে কোনও স্ক্রিপ্ট চালিত হয় যা একটি পাসওয়ার্ড জিজ্ঞাসা করে এবং এটি জায়গায় ডিক্রিপ্ট করে।


সম্পাদনা: স্পষ্টতার জন্য, আমি কোথায় প্রোডাকশন সিক্রেট সংরক্ষণ করব তা সম্পর্কে জিজ্ঞাসা করছি


1
পুরো রেপোটি ব্যক্তিগত রাখার জন্য আসলে কিছু অর্থোপার্জন করুন।
জন মি

29
@ জনমী আমি ইতিমধ্যে একটি বেসরকারী ভাণ্ডারের জন্য অর্থ প্রদান করেছি, তবে মূল বক্তব্যটি রয়ে গেছে - আপনার সংবেদনশীল তথ্য আপনার ভাণ্ডারে রাখা উচিত নয়।
ক্রিস ডাব্লু।

1
আমি মনে করি সন্তুষ্টিজনক উত্তরগুলি পাওয়া শক্তির কারণগুলির একটি বড় অংশটি হ'ল একটি ডেটাবেজে সংযোগ স্থাপনের জন্য পুরানো ধাঁচের প্লেইনেক্সট পাসওয়ার্ডটি কম প্রতিকূল যুগের একটি প্রতীক। সঠিক উত্তরটি হ'ল "আপনার কোডটির কোনও গোপন প্রয়োজন হবে না" এর মতো কিছু, তবে আপনি যে সিস্টেমে অ্যাক্সেস করছেন সেগুলি আপনাকে বেশি পছন্দ দেয় না।
এমএসডব্লিউ

4
কেন? বাহ্যিক পরিষেবার জন্য পাসওয়ার্ডগুলি নিয়ন্ত্রণ করে সংস্করণে জিল্চ মান রয়েছে। সংস্করণ নিয়ন্ত্রণের মূল মানটি হ'ল আপনি কার্যত ক্রম হিসাবে পরিচিত আপনার অ্যাপ্লিকেশনটির historicতিহাসিক সংশোধনগুলি পরিদর্শন করতে পারেন এবং সেগুলি পরিচালনা করতে পারেন । তবে, পুরানো পাসওয়ার্ডগুলি আপনার কাছে অকেজো। যদি তাদের প্রত্যাহার করা হয় তবে তারা আর কখনও কাজ করবে না।
কর্নেল আতঙ্ক

উত্তর:


100

সংস্করণ নিয়ন্ত্রণে ফাইলটি বজায় রেখে আপনি আপনার সংবেদনশীল সেটিংস ফাইলটি এনক্রিপ্ট করতে চান ঠিক ঠিক। যেমন আপনি উল্লেখ করেছেন, সর্বোত্তম সমাধানটি হ'ল এটির মধ্যে যখন গিট নির্দিষ্ট সংবেদনশীল ফাইলগুলিকে স্বচ্ছভাবে এনক্রিপ্ট করবে যখন আপনি সেগুলিকে স্থানীয়ভাবে চাপান (যেমন কোনও মেশিনে যার কাছে আপনার শংসাপত্র রয়েছে) আপনি সেটিংস ফাইলটি ব্যবহার করতে পারেন তবে গিট বা ড্রপবক্স বা যে কেউ ভিসির অধীনে আপনার ফাইলগুলি সংরক্ষণ করার ক্ষেত্রে সরলরেখায় তথ্যটি পড়ার ক্ষমতা নেই।

পুশ / পুলের সময় স্বচ্ছ এনক্রিপশন / ডিক্রিপশন সম্পর্কিত টিউটোরিয়াল

এই টুকরোটি 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 আপনার যদি সত্যই সংবেদনশীল ফাইলগুলির একই সংগ্রহস্থলে থাকতে হয়।

যদি আক্রমণকারীদের অনেকগুলি এনক্রিপ্ট করা রেপো / ফাইলগুলিতে অ্যাক্সেস থাকে তবে একটি স্থির পাসফ্রেজের ব্যবহার তাত্ত্বিকভাবে জন্তু-শক্তি দুর্বলতার দিকে নিয়ে যেতে পারে। আইএমও, এর সম্ভাবনা খুব কম। এই টিউটোরিয়ালের নীচের অংশে একটি নোট হিসাবে উল্লেখ করা হয়েছে, একটি নির্দিষ্ট পাসফ্রেজ ব্যবহার না করার ফলে বিভিন্ন মেশিনে রেপোটির স্থানীয় সংস্করণ সর্বদা প্রদর্শিত হবে যে 'গিট স্ট্যাটাস' দিয়ে পরিবর্তন এসেছে।


1
ওহ খুব আকর্ষণীয়। এটি প্রায় আমি যা চাই ঠিক তেমনই শোনায় (এটি পুরো সংগ্রহশালাটি এনক্রিপ্ট করা বাদে)।
ক্রিস ডাব্লু।

আপনি একাধিক অ্যাপ্লিকেশনগুলির জন্য সমস্ত সংবেদনশীল সেটিং ফাইলগুলিকে একটি এনক্রিপ্ট করা সংগ্রহস্থলে রাখতে পারেন বা আপনার প্রকল্পে সংবেদনশীল সেটিংস সহ এনক্রিপ্ট করা সংগ্রহস্থলটি এখানে git-scm.com/book/en/Git- টিউলস-শবুলমুলস হিসাবে বর্ণিত গিট সাবমডিউল হিসাবে যুক্ত করতে পারেন
dgh

(এনক্রিপ্ট করা) সাবমডিউলগুলিতে প্রোডাকশন পাসওয়ার্ড / সেটিংস সংরক্ষণ করা অস্বাভাবিক নয়। stackoverflow.com/questions/11207284/… । এমনকি প্রকল্পগুলির জুড়ে সেটিংস পরিচালনা করা আরও সহজ করে তুলবে।
23:30 এ dg

এটি আপডেট হওয়া সমাধানের জন্য github.com/AGWA/git-crypt পরীক্ষা করার উপযুক্ত হতে পারে । স্বতন্ত্র ফাইলগুলি নথিভুক্ত করার অনুমতি দেওয়ার সুবিধা রয়েছে এবং এটি "সম্ভবত শব্দার্থগতভাবে সুরক্ষিত" বলে দাবি করে। গিস্টের লেখক নিজেই পরামর্শ দিয়েছেন যে এই সরঞ্জামটি আরও ভাল, github.com/shadowhand/git-encrypt এ
গিকলে

52

হেরোকু সেটিংস এবং গোপন কীগুলির জন্য পরিবেশের ভেরিয়েবলের ব্যবহারকে চাপ দেয়:

এই জাতীয় কনফিগারেশন ভার্সাল পরিচালনা করার জন্য traditionalতিহ্যগত পদ্ধতির হ'ল এগুলি উত্সের অধীনে রাখা - কোনও ধরণের বৈশিষ্ট্যের ফাইলে। এটি একটি ত্রুটি-প্রবণ প্রক্রিয়া, এবং বিশেষত ওপেন সোর্স অ্যাপ্লিকেশনগুলির জন্য জটিল যা সাধারণত অ্যাপ-নির্দিষ্ট কনফিগারেশনের সাথে পৃথক (এবং ব্যক্তিগত) শাখা বজায় রাখতে হয়।

আরও ভাল সমাধান হ'ল পরিবেশের ভেরিয়েবলগুলি ব্যবহার করা এবং কীগুলি কোডের বাইরে রাখা। Traditionalতিহ্যবাহী হোস্টে বা স্থানীয়ভাবে কাজ করাতে আপনি আপনার বাশার্কে পরিবেশের ভার সেট করতে পারেন ars হেরোকুতে, আপনি কনফিগারেশন ব্যবহার করেন

ফোরম্যান এবং .envফাইলগুলির সাথে হিরোকু পরিবেশের ভেরিয়েবলগুলি রফতানি, আমদানি এবং সুসংগত করতে একটি enর্ষণীয় সরঞ্জামচেন সরবরাহ করে।


ব্যক্তিগতভাবে, আমি বিশ্বাস করি কোডের পাশাপাশি গোপন কীগুলি সংরক্ষণ করা ভুল। এটি উত্স নিয়ন্ত্রণের সাথে মৌলিকভাবে বেমানান, কারণ কীগুলি কোডের বহির্মুখী পরিষেবার জন্য । এক বর হ'ল কোনও বিকাশকারী হেড ক্লোন করতে এবং কোনও সেটআপ ছাড়াই অ্যাপ্লিকেশনটি চালাতে পারে। তবে, মনে করুন কোনও বিকাশকারী কোডটির একটি historicতিহাসিক সংশোধন পরীক্ষা করে দেখুন। তাদের অনুলিপিটিতে গত বছরের ডাটাবেসের পাসওয়ার্ড অন্তর্ভুক্ত থাকবে, সুতরাং আবেদনটি আজকের ডাটাবেসের বিরুদ্ধে ব্যর্থ হবে।

উপরের হিরোকু পদ্ধতির সাহায্যে কোনও বিকাশকারী গত বছরের অ্যাপ্লিকেশনটি চেকআউট করতে পারে, এটি আজকের কীগুলির সাথে কনফিগার করতে পারে এবং এটি সফলভাবে আজকের ডেটাবেসের বিরুদ্ধে চালাতে পারে।


1
এই উত্তরের যথেষ্ট মনোযোগ নেই, তবে এটি বেশিরভাগ ক্ষেত্রে লিনাক্সের সাথে একত্রিত।
নিকোলে ফমিনিহ

11
সুতরাং যদি আপনার বাশার্কে পরিবেশের ভার সেট করা থাকে এবং আপনি একটি নতুন সার্ভার স্থাপন করছেন, তবে বাশার্কটি কী তৈরি করবে? এটি কি কেবল আপনার উত্স কোড রেপো এবং আপনার স্থাপনার কনফিগারেশনে পাসওয়ার্ড সরিয়ে দেয় না? (সম্ভবতঃ উত্স কোড রেপোতেও, বা এর নিজস্ব একটি রেপোতেও?)
জোনাথন হার্টলি

@ জোনাথান হার্টলি আপনার জ্যাশনো অ্যাপ্লিকেশনটির জন্য কোড। রেপোতে আপনার .Bashrc থাকা উচিত নয়।
স্টিভ

4
দুঃখিত, আমার মন্তব্যটি অস্পষ্ট, তবে এ কারণেই আমি সত্যই বিভ্রান্ত। আমি এই উত্তরের দৃষ্টিভঙ্গির শব্দটি পছন্দ করি তবে এটি কখনই পুরোপুরি বুঝতে পারি নি। যদি আমি বেশ কয়েকটি ভিন্ন পরিবেশে স্থাপন করছি, যার প্রত্যেকটিতে বেশ কয়েকটি হোস্ট এবং সম্ভবত বেশ কয়েকটি ধরণের হোস্ট রয়েছে তবে অবশ্যই স্পষ্টতই আমাকে .bashrc ফাইলগুলি তৈরি করতে স্বয়ংক্রিয় প্রয়োজন যা প্রতিটি হোস্টে তার পরিবেশের ভেরিয়েবলগুলি সেট করতে পারে exist সুতরাং উত্তরটি কি আমার দ্বিতীয় উত্স হতে হবে, আমার উত্স থেকে পৃথক, যা সমস্ত সেটিংস ধারণ করে যা মোতায়েনের উপর .brcrc এ পরিবেশের পরিবর্তনশীল হয়ে উঠবে?
জোনাথন হার্টলি

1
আপনি মোতায়েন করেন এমন PER মেশিন একবারেই তাদের কনফিগার করা দরকার। যদি আপনার স্থাপনার প্রক্রিয়াটি "কোনও নতুন মেশিন স্পিন করে তা ট্র্যাফিকের দিকে পুনর্নির্দেশের আগে এটি ঠিক আছে এবং পরীক্ষা করুন এবং তারপরে পুরানোটিকে মাথায় গুলি করুন", যা আইএমএইচও সর্বোত্তম অনুশীলন, তবে আপনাকে যা যা নির্ধারণ করে সেটাকে স্বয়ংক্রিয়ভাবে তৈরি করতে হবে env vars।
জোনাথন হার্টলি

16

আমার মতে সবচেয়ে পরিষ্কার উপায় হল পরিবেশের ভেরিয়েবলগুলি ব্যবহার করা। উদাহরণস্বরূপ আপনাকে .dist ফাইলগুলি ব্যবহার করতে হবে না এবং উত্পাদনের পরিবেশে প্রকল্পের অবস্থাটি আপনার স্থানীয় মেশিনের মতোই হবে।

আমি দ্বাদশ ফ্যাক্টর অ্যাপ্লিকেশনটির কনফিগার অধ্যায়টি পড়ার পরামর্শ দিচ্ছি , অন্যরাও যদি আপনার আগ্রহী হয়।


6
দেখে মনে হচ্ছে এনভায়রনমেন্ট ভেরিয়েবলগুলি গোপন সেটিংস সহ অ্যাপ্লিকেশনটি চালানোর একটি ভাল উপায় ... তবে এই সেটিংসটি কোথায় রাখা উচিত এই প্রশ্নের উত্তর এখনও দেয় না ।
ক্রিস ডাব্লু।

2
আপনার প্রতিটি অ্যাপ্লিকেশনের জন্য সাধারণত একটি README ফাইল থাকা উচিত। সেখানে, কোন পরিবেশের ভেরিয়েবলগুলি সেট করা উচিত তা নির্দিষ্ট করুন এবং প্রতিবার আপনি যখন কোনও প্রকল্প স্থাপন করবেন, কেবলমাত্র পদক্ষেপগুলি অনুসরণ করুন এবং সেগুলির প্রতিটি সেট করুন। আপনি অনেকের সাথে একটি শেল স্ক্রিপ্টও তৈরি করতে পারেন এবং export MY_ENV_VAR=আপনি স্থাপন করার সময় কেবল এটি সঠিক মান এবং sourceএটি দিয়ে পূরণ করুন । তাহলে দ্বারা রাখা মানে সংস্করণ সেটিংস, আপনি প্রথম স্থানে এই কাজ করা উচিত নয়।
সামি দিনদানে

এছাড়াও, দ্বাদশ-ফ্যাক্টর অ্যাপের জন্য উত্সাহ দিন - সত্যিই দুর্দান্ত জিনিস।
ক্রিস ডব্লিউ।

4
@ সামি: এবং আপনি যদি স্বয়ংক্রিয়ভাবে মোতায়েন করবেন?
জোনাথন হার্টলি

3
@ সামি আমি এখনও পরিবেশ ভেরিয়েবল সেট করা হবে তা বুঝতে পারি না। 12 টি ফ্যাক্টর অ্যাপ্লিকেশন পৃষ্ঠাটি এটি পরিষ্কার করে দেয় না (যদি আপনি হেরোকু না হন তবে আমার বর্তমান প্রকল্পটি এটি নয়।) আমরা কি বলছি যে একটি উত্পাদক স্ক্রিপ্ট একটি কেন্দ্রীয় কনফিগারেশন স্টোরকে জিজ্ঞাসা করতে হবে "আমি মেশিন এক্স, দয়া করে আমাকে আমার কনফিগার ডেটা দিন "এবং এটি পরিবেশগত ভেরিয়েবলগুলির মানগুলির সাথে প্রতিক্রিয়া জানায় যা সেট করা উচিত। সেক্ষেত্রে আমার আর মনে হয় না যে আপনার আর কোনও উত্পন্ন স্ক্রিপ্টের দরকার নেই। আমি এখানে বন্যভাবে অনুমান করছি, আমি কি ঠিক গাছটি ছাঁটাই করছি?
জনাথন হার্টলি

10

একটি বিকল্প হ'ল প্রকল্প-ভিত্তিক শংসাপত্রগুলিকে একটি এনক্রিপ্ট করা ধারক (ট্রুক্রিপট বা কিপাস) এ রেখে এটি চাপ দিন push

নীচে আমার মন্তব্য থেকে উত্তর হিসাবে আপডেট করুন:

আকর্ষণীয় প্রশ্ন বিটিডব্লিউ। আমি সবেমাত্র এটি পেয়েছি: github.com/shadowhand/git-encrypt যা স্বয়ংক্রিয় এনক্রিপশনের জন্য খুব আশাব্যঞ্জক দেখাচ্ছে


আমি স্বয়ংক্রিয় করতে পারি এমন কিছু পেয়ে ভাল লাগবে। যেমন যদি আমার এনক্রিপ্ট করা পাসওয়ার্ড ফাইল এটি পরিবর্তন করে তবে এটি স্বয়ংক্রিয়ভাবে নতুন ফাইলটি ডিক্রিপ্ট করে।
ক্রিস ডাব্লু।

7
আকর্ষণীয় প্রশ্ন বিটিডব্লিউ। আমি সবেমাত্র এটি পেয়েছি: github.com/shadowhand/git-encrypt যা স্বয়ংক্রিয় এনক্রিপশনের জন্য খুব আশাব্যঞ্জক দেখাচ্ছে।
schneck

1
বাহ, দুর্দান্ত। git-encryptশব্দের বর্ণনাটি ঠিক কী হিসাবে আমি সন্ধান করছি ঠিক এর মতোই "তৃতীয় পক্ষের স্টোরেজ সার্ভারে হোস্ট করা দূরবর্তী গিট সংগ্রহস্থল নিয়ে কাজ করার সময়, ডেটা গোপনীয়তা কখনও কখনও উদ্বেগের বিষয় হয়ে পড়ে। এই নিবন্ধটি গিট সংগ্রহস্থল স্থাপনের পদ্ধতিতে আপনাকে নিয়ে যায় যার জন্য আপনার স্থানীয় ওয়ার্কিং ডিরেক্টরিগুলি সাধারণ (আন-এনক্রিপ্ট করা) তবে প্রতিশ্রুতিবদ্ধ সামগ্রীটি এনক্রিপ্ট করা। " (অবশ্যই, আমি কেবল আমার সামগ্রী এনক্রিপ্ট করা একটি উপসেট চাই ...)
ক্রিস ডাব্লু।

@ শ্যাঙ্কেক উত্তর হিসাবে আপনার মন্তব্য পোস্ট করেছেন যাতে ক্রিস তা গ্রহণ করতে পারে - মনে হচ্ছে তিনি যা খুঁজছেন তা মনে হচ্ছে।
টনি আবু-আসালেহ

9

আমি এটির জন্য কনফিগারেশন ফাইলগুলি ব্যবহার করার এবং তাদের সংস্করণ না করার পরামর্শ দিচ্ছি।

তবে আপনি ফাইলগুলির উদাহরণ সংস্করণ করতে পারেন।

উন্নয়নের সেটিংস ভাগ করে নেওয়ার কোনও সমস্যা দেখছি না। সংজ্ঞা অনুসারে এটিতে কোনও মূল্যবান ডেটা থাকা উচিত নয়।


1
তবে তারপরে ক্যানোনিকাল পাসওয়ার্ড রেকর্ডগুলি কোথায় সংরক্ষণ করবেন? কোনও ডেটা কেবল কোনও মেশিনে কনফিগারেশন ফাইলে বসে থাকা ডেটাটি দেখে আমার ঘাবড়ে যায়।
ক্রিস ডাব্লু।

@ChrisW। যদি মেশিনটি ফুঁক দেয় তবে অগত্যা আপনার আর পাসওয়ার্ডের প্রয়োজন হবে না ... তবে, আপনার প্রোডাকশন মেশিনে যদি আপনার কাছে কেবলমাত্র একটি অনুলিপি থাকে, তবে এটি একটি লাল পতাকা উত্থাপন করবে। তবে এর অর্থ এই নয় যে এটি ভিসিএসে থাকা উচিত। চৌম্বকীয় এবং অপটিকাল মিডিয়াগুলিতে রেইড, পূর্ণ ব্যাকআপগুলি ইনক্রিমেন্টাল ব্যাকআপ দ্বারা পরিপূরক হওয়া উচিত। অনেকগুলি কর্পোরেশনের একটি পরিবর্তন নিয়ন্ত্রণের পদ্ধতি রয়েছে যা কাগজগুলিতে পাসওয়ার্ড এবং অন্যান্য সংবেদনশীল উপকরণ কীভাবে এবং কোথায় সংরক্ষণ করতে পারে তা নির্ধারণ করতে পারে।
স্টিভ বুজোনাস

@ ক্রিসডব্লু আমি মোটামুটি হতে চাই না তবে মনে হয় আপনি সত্য এবং পাসওয়ার্ডগুলি সংরক্ষণ করতে চান তা বিকাশে নয় তবে উত্পাদনে ব্যবহৃত হচ্ছে। এটা কি সত্য নয়? অন্যথায়, আপনি কেন একটি বিকাশ বা পরীক্ষার মেশিন এবং বিকাশের পাসওয়ার্ডগুলির যত্ন নিচ্ছেন? কেউ তা করবে না।
tiktak

বিটিডাব্লু, আমাদের সংস্থায়, সমস্ত বিকাশের পাসওয়ার্ড কাগজে এবং ইন্ট্রনেটে পাওয়া যায়। কারণ তাদের কোনও মূল্য নেই। তারা সেখানে রয়েছে কারণ আমাদের তৈরি করা সফ্টওয়্যারটির প্রমাণীকরণ প্রয়োজন।
টিকটাক

@tiktak, আপনি সঠিক - আমার প্রশ্ন উত্পাদন পাসওয়ার্ড সম্পর্কে কি করবেন তা সম্পর্কে। আমি স্পষ্টভাবে একটি ভিসিএসে ডেভলপমেন্ট পাসওয়ার্ডগুলি সংরক্ষণ করার বিষয়ে বিশেষভাবে যত্ন নেব না। দুঃখিত যদি আমি এটি যথেষ্ট পরিস্কার না করে থাকি।
ক্রিস ডাব্লু।

7

কালো বাক্স সম্প্রতি স্ট্যাকএক্সচেঞ্জ দ্বারা প্রকাশিত হয়েছিল এবং আমি এখনও এটি ব্যবহার করতে পারি না বলে মনে হচ্ছে সমস্যাগুলি হুবহু ঠিক করা এবং এই প্রশ্নে অনুরোধ করা বৈশিষ্ট্যগুলিকে সমর্থন করে।

Https://github.com / স্ট্যাকএক্সচেঞ্জ / ব্ল্যাকবক্সে বর্ণনা থেকে :

নিরাপদে কোনও ভিসিএস রেপোতে গোপনীয়তা সঞ্চয় করুন (যেমন গিট বা মার্কুরিয়াল)। এই কমান্ডগুলি আপনার জন্য কোনও জিপিজির নির্দিষ্ট জিপিজি এনক্রিপ্ট করা সহজ করে তোলে যাতে তারা আপনার ভাণ্ডারে "বিশ্রামে এনক্রিপ্ট করা হয়"। যাইহোক, স্ক্রিপ্টগুলি এগুলি দেখতে বা সম্পাদনা করার দরকার হলে সেগুলি ডিক্রিপ্ট করা সহজ করে এবং উত্পাদন ব্যবহারের জন্য সেগুলি ডিক্রিপ্ট করে।


7

এই প্রশ্নটি জিজ্ঞাসা করার পরে আমি একটি সমাধানে স্থির হয়েছি, যা আমি একটি ছোট দলের সাথে ছোট অ্যাপ্লিকেশন বিকাশের সময় ব্যবহার করি।

Git-সমাধিগৃহ

গিট-ক্রিপ্ট যখন জিপিজি ব্যবহার করে তাদের নামগুলি নির্দিষ্ট নিদর্শনগুলির সাথে মিলে যায় তখন স্বচ্ছভাবে ফাইলগুলি এনক্রিপ্ট করতে পারে। ইন্টেনেন্সের জন্য, আপনি যদি নিজের .gitattributesফাইলে যুক্ত হন ...

*.secret.* filter=git-crypt diff=git-crypt

... তারপর একটি ফাইল config.secret.json সর্বদা এনক্রিপশন সহ রিমোট রিপোগুলিতে চাপানো হবে, তবে আপনার স্থানীয় ফাইল সিস্টেমে এনক্রিপ্ট করা থাকবে না।

যদি আমি আপনার রেপোতে একটি নতুন জিপিজি কী (কোনও ব্যক্তি) যুক্ত করতে চাই যা সুরক্ষিত ফাইলগুলি ডিক্রিপ্ট করতে পারে তবে চালানো উচিত git-crypt add-gpg-user <gpg_user_key>। এটি একটি নতুন প্রতিশ্রুতি তৈরি করে। নতুন ব্যবহারকারী পরবর্তীকৃত কমিটগুলি ডিক্রিপ্ট করতে সক্ষম হবেন।


5

আমি প্রশ্নটি সাধারণত জিজ্ঞাসা করি তবে আমার নির্দিষ্ট উদাহরণে আমি গিট এবং গিথাব ব্যবহার করে জ্যাঙ্গো / পাইথন সাইটের জন্য গোপন কী এবং পাসওয়ার্ড সংরক্ষণ করতে চাই।

না, কেবল এটি করবেন না, এমনকি এটি যদি আপনার ব্যক্তিগত রেপো হয় এবং আপনি কখনই এটি ভাগ করে নিতে চান না, করবেন না।

আপনার একটি স্থানীয়_সেটিং তৈরি করা উচিত should পিসি এটি ভিসিএস উপেক্ষা করে আপনার সেটিংসে রেখে দিন py

from local_settings import DATABASES, SECRET_KEY
DATABASES = DATABASES

SECRET_KEY = SECRET_KEY

যদি আপনার গোপনীয়তার সেটিংসটি বহুমুখী হয় তবে আমি বলতে আগ্রহী যে আপনি কিছু ভুল করছেন


9
তবে আমার এখনও এই গোপনীয়তাগুলি কোথাও ট্র্যাক করে রাখতে হবে । যেমন, কিপাস বা lines লাইনের পাশাপাশি কিছু আছে, তাই না?
ক্রিস ডাব্লু।

প্রাইভেট ডেটা সংরক্ষণের নিয়ন্ত্রণ ও প্রয়োগ প্রকল্পের জন্য যে কোম্পানির নীতি রয়েছে তার উপর নির্ভর করে। আমি অত্যন্ত সন্দেহ করি যে কোনও তৃতীয় পক্ষের পরীক্ষক বা প্রোগ্রামার এগুলি দেখতে পারে বলে প্রকল্পের উত্স কোডটি উপযুক্ত জায়গা
Hedde van der Heide

4

সম্পাদনা: আমি ধরে নিয়েছি যে আপনি আপনার আগের পাসওয়ার্ডগুলির সংস্করণগুলি ট্র্যাক করে রাখতে চান - বলুন, এমন কোনও স্ক্রিপ্ট যা পাসওয়ার্ড পুনরায় ব্যবহার ইত্যাদি রোধ করবে for

আমি মনে করি GnuPG যাওয়ার সবচেয়ে ভাল উপায় - এটি ক্লাউড পরিষেবাদিগুলিতে সঞ্চিত সংগ্রহস্থল সামগ্রী এনক্রিপ্ট করার জন্য ইতিমধ্যে একটি গিট-সম্পর্কিত প্রকল্পে (গিট-এনেক্স) ব্যবহৃত হয়েছে। GnuPG (gnu pgp) একটি খুব শক্তিশালী কী-ভিত্তিক এনক্রিপশন সরবরাহ করে।

  1. আপনি আপনার স্থানীয় মেশিনে একটি কী রাখেন।
  2. আপনি উপেক্ষা করা ফাইলগুলিতে 'মাইপ্যাসওয়ার্ড' যুক্ত করুন।
  3. প্রি-কমিট হুকের সময় আপনি মাইপাসওয়ার্ড ফাইলটি গিট দ্বারা ট্র্যাক করা মাইপ্যাসওয়ার্ড.gpg ফাইলটিতে এনক্রিপ্ট করে এবং এটি প্রতিশ্রুতিতে যুক্ত করেন।
  4. পোস্ট-মার্জ হুকের সময় আপনি কেবল মাইপ্যাসওয়ার্ডে ডাইক্রিপ্ট করেন .g

এখন যদি আপনার 'মাইপাসওয়ার্ড' ফাইলটি পরিবর্তন না হয় তবে এটি এনক্রিপ্ট করার ফলে একই সিফেরেক্সটেক্সট আসবে এবং এটি সূচীতে যুক্ত হবে না (অপ্রয়োজনীয়তা নেই)। মঞ্চস্থলে মূলত পৃথক সাইফারেক্সট এবং মাইপ্যাসওয়ার্ড.gpg এ মাইপাসওয়ার্ডের ফলাফলের সামান্যতম সংশোধনীর সঞ্চিতাগুলির তুলনায় অনেকটা পৃথক, এইভাবে প্রতিশ্রুতিতে যুক্ত করা হবে। এমনকি যদি আক্রমণকারী আপনার জিপিজি কী ধরে রাখে তবে তার পাসওয়ার্ডটি ব্রুটফোর্ড করা দরকার। যদি আক্রমণকারী সিফারেক্সটেক্সের সাথে দূরবর্তী সংগ্রহস্থলটিতে অ্যাক্সেস পায় তবে সে একগুচ্ছ সিফারেক্সটসের সাথে তুলনা করতে পারে, তবে তাদের সংখ্যা তাকে কোনও অবহেলিত সুবিধা দিতে যথেষ্ট হবে না।

পরবর্তীতে আপনি আপনার পাসওয়ার্ডের গিট ডিফারেন্টের জন্য ফ্লাই অন-ডিক্রিপশন প্রদান করতে .gitattributes ব্যবহার করতে পারেন।

এছাড়াও আপনার বিভিন্ন ধরণের পাসওয়ার্ড ইত্যাদির জন্য পৃথক কী থাকতে পারে


3

সাধারণত, আমি একটি কনফিগার ফাইল হিসাবে পাসওয়ার্ড পৃথক। এবং তাদের দূরে করতে।

/yourapp
    main.py
    default.cfg.dist

এবং আমি যখন রান করি তখন সেই অনুলিপিটিতে main.pyআসল পাসওয়ার্ডটি রেখে দিন default.cfg

পুনশ্চ. যখন আপনি গিট বা এইচজি দিয়ে কাজ করবেন। আপনি *.cfgফাইলগুলি তৈরি করতে .gitignoreবা উপেক্ষা করতে পারেন.hgignore


.dist ফাইলগুলি আমি যা বলছিলাম সেগুলি: আসল কনফিগারেশন ফাইলগুলির উদাহরণ। একটি ভাল অনুশীলন হ'ল কেবলমাত্র ".ডিসিস্ট" এক্সটেনশন (বা আরও ভাল: অনুলিপি) মুছে ফেলার মাধ্যমে নাম পরিবর্তন করে সফ্টওয়্যারটি চালানো সম্ভব হওয়া উচিত, এটির সময় আপনাকে কনফিগার না করেই কয়েক সেকেন্ডে সফ্টওয়্যার চেষ্টা করা উচিত পুরো দিন.
টিকটাক

3

কনফিগারটিকে ওভাররাইড করার জন্য একটি উপায় সরবরাহ করুন

কনফিগারটি সম্পূর্ণ হওয়া বা হোস্টনাম এবং শংসাপত্রাদি ইত্যাদির মতো জিনিসগুলি না রেখে আপনি যে কনফিগারটি পরীক্ষা করে থাকেন তার জন্য বুদ্ধিমান ডিফল্টগুলির একটি সেট পরিচালনা করার সেরা উপায়। ডিফল্ট কনফিগারেশনগুলিকে ওভাররাইড করার কয়েকটি উপায় রয়েছে।

পরিবেশের পরিবর্তনশীল (যেমন অন্যরা ইতিমধ্যে উল্লেখ করেছে) এটি করার এক উপায় way

সর্বোত্তম উপায় হ'ল কোনও বাহ্যিক কনফিগারেশন ফাইল সন্ধান করা যা ডিফল্ট কনফিগার মানগুলিকে ওভাররাইড করে। এটি আপনাকে শেফ, পুতুল বা সিফেনজিনের মতো কনফিগারেশন ম্যানেজমেন্ট সিস্টেমের মাধ্যমে বাহ্যিক কনফিগারেশন পরিচালনা করতে দেয়। কনফিগারেশন পরিচালন হ'ল কোডবেস থেকে আলাদা কনফিগার করার ব্যবস্থাপনার মানক উত্তর তাই আপনাকে কোনও একক হোস্ট বা হোস্টের একটি গ্রুপের কনফিগারেশন আপডেট করার জন্য কোনও প্রকাশনা করতে হবে না।

এফওয়াইআই: ক্রেডিটগুলি এনক্রিপ্ট করা সর্বদা সেরা অনুশীলন হয় না, বিশেষত সীমিত সংস্থানযুক্ত জায়গায়। এটি এমন ক্ষেত্রে হতে পারে যে এনক্রিপ্ট করা ক্রেডিটগুলি আপনাকে কোনও অতিরিক্ত ঝুঁকি প্রশমন করতে পারবে না এবং কেবল জটিলতার একটি অপ্রয়োজনীয় স্তর যুক্ত করবে। সিদ্ধান্ত নেওয়ার আগে আপনি যথাযথ বিশ্লেষণ করেছেন তা নিশ্চিত করুন।


2

পাসওয়ার্ড ফাইল এনক্রিপ্ট করুন, উদাহরণস্বরূপ জিপিজি ব্যবহার করে। আপনার স্থানীয় মেশিনে এবং আপনার সার্ভারে কীগুলি যুক্ত করুন। ফাইলটি ডিক্রিপ্ট করুন এবং এটি আপনার রেপো ফোল্ডারগুলির বাইরে রাখুন।

আমি আমার পাসওয়ার্ডস কোডফ ব্যবহার করি, আমার হোমফোল্ডারে অবস্থিত। প্রতিটি স্থাপনার সময় এই ফাইলটি আপডেট হয় gets


তারপরে সফ্টওয়্যারটির পাসওয়ার্ড ফাইলটি ডিক্রিপ্ট করা দরকার।
টিকটাক

ঠিক আছে, কেবলমাত্র সাইটটি মোতায়েন করার সময় পাসওয়ার্ডটি ডিক্রিপ্ট হয়ে যায় এবং একটি সরল পাঠ্য পাসওয়ার্ড ফাইলে লেখা হয়
উইলিয়ান

2

না, ব্যক্তিগত কী এবং পাসওয়ার্ডগুলি পুনর্বিবেচনার নিয়ন্ত্রণে আসে না। উত্পাদনে ব্যবহৃত সংবেদনশীল পরিষেবা শংসাপত্রগুলি জেনে আপনার ভাণ্ডারে অ্যাক্সেসের সাথে প্রত্যেককে বোঝার কারণ নেই, যখন সম্ভবত তাদের সকলেরই সেই পরিষেবাগুলিতে অ্যাক্সেস না থাকা উচিত।

জ্যাঙ্গো ১.৪ দিয়ে শুরু করে, আপনার জ্যাঙ্গো প্রকল্পগুলি এখন এমন একটি project.wsgiমডিউল দিয়ে জাহাজ প্রেরণ করবে যা applicationবস্তুটিকে সংজ্ঞায়িত করে এবং project.localসাইট-নির্দিষ্ট কনফিগারেশনের একটি সেটিংস মডিউল ব্যবহারের জন্য এটি কার্যকর করার উপযুক্ত জায়গা perfect

এই সেটিংস মডিউলটি পুনর্বিবেচনা নিয়ন্ত্রণ থেকে উপেক্ষা করা হবে, তবে আপনার প্রকল্পের উদাহরণটি ডাব্লুএসজিআই অ্যাপ্লিকেশন হিসাবে চালিত করার সময় এটির উপস্থিতি প্রয়োজন, উত্পাদন পরিবেশের জন্য আদর্শ। এটি দেখতে যেমন দেখতে হবে:

import os

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "project.local")

# This application object is used by the development server
# as well as any WSGI server configured to use this file.
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()

এখন আপনার কাছে এমন একটি local.pyমডিউল থাকতে পারে যার মালিক এবং গোষ্ঠীটি কনফিগার করা যায় যাতে কেবল অনুমোদিত কর্মীরা এবং জ্যাঙ্গো প্রক্রিয়াগুলি ফাইলের বিষয়বস্তু পড়তে পারে।


2

আপনার গোপনীয়তার জন্য যদি আপনার ভিসিএস দরকার হয় তবে আপনার অবশ্যই কমপক্ষে সত্যিকারের কোড থেকে আলাদা করে রাখা দ্বিতীয় ভান্ডারে রাখতে হবে। সুতরাং আপনি আপনার দলের সদস্যদের উত্স কোড সংগ্রহস্থলটিতে অ্যাক্সেস দিতে পারেন এবং তারা আপনার শংসাপত্রগুলি দেখতে পাবে না। তবুও এই সংগ্রহস্থলটি অন্য কোথাও হোস্ট করুন (উদাহরণস্বরূপ, আপনার নিজের সার্ভারে একটি এনক্রিপ্ট করা ফাইল সিস্টেমের সাহায্যে গিথুব নয়) এবং এটি উত্পাদন সিস্টেমের জন্য যাচাই করার জন্য আপনি গিট-সাবমডিউলের মতো কিছু ব্যবহার করতে পারেন ।


1

সংস্করণ নিয়ন্ত্রণ সিস্টেমে গোপনীয়তাগুলি সম্পূর্ণরূপে এড়ানো এবং এর পরিবর্তে হ্যাশিকর্প থেকে ভল্টের মতো একটি সরঞ্জাম ব্যবহার করা , একটি এপিআই এবং এমবেডেড এনক্রিপশন সহ কী রোলিং এবং অডিটিং সহ একটি গোপন স্টোরেজ ব্যবহার করা যেতে পারে Another


1

এই আমি কি কি:

  • সমস্ত গোপনীয়তা v হোম / .সেক্রেটস (গো-আর পারমস) -এ এনভির ভার্স হিসাবে রাখুন যে $ হোম / .বাশার্ক উত্স (যদি আপনি কারও সামনে .bashrc খুলেন তবে তারা গোপনীয়তা দেখতে পাবে না)
  • কনফিগারেশন ফাইলগুলি ভিসিএসে টেমপ্লেট হিসাবে সংরক্ষণ করা হয়, যেমন কনফিগারেশন।
  • টেম্পলেট ফাইলগুলিতে গোপনীয়তার জন্য একটি স্থানধারক থাকে, যেমন:

    my.password = ## MY_PASSWORD ##

  • অ্যাপ্লিকেশন মোতায়েনের সময়, স্ক্রিপ্টটি সঞ্চালিত হয় যা টেমপ্লেট ফাইলটিকে টার্গেট ফাইলে রূপান্তর করে, স্থানধারককে পরিবেশের ভেরিয়েবলের মানগুলির সাথে প্রতিস্থাপন করে, যেমন # # MY_PASSWORD ## পরিবর্তন করে $ এমওয়াই_পাসসওয়ার্ডের মান to


0

আপনি যদি এনএসএফএস ব্যবহার করতে পারেন তবে আপনার সিস্টেম এটি সরবরাহ করে। এইভাবে আপনি আপনার এনক্রিপ্ট করা ডেটা আপনার সংগ্রহস্থলের সাবফোল্ডার হিসাবে রাখতে পারেন, যখন আপনার অ্যাপ্লিকেশনটি একপাশে মাউন্ট করা ডেটার কাছে একটি ডিক্রিপ্ট করা ভিউ সরবরাহ করে। এনক্রিপশন স্বচ্ছ হওয়ায়, টান বা ধাক্কায় কোনও বিশেষ ক্রিয়াকলাপের প্রয়োজন নেই।

তবে এটি এনএসএফএস ফোল্ডারগুলি মাউন্ট করার প্রয়োজন হবে যা সংস্করণযুক্ত ফোল্ডারগুলির বাইরে অন্য কোথাও সঞ্চিত পাসওয়ার্ডের ভিত্তিতে আপনার অ্যাপ্লিকেশন দ্বারা সম্পন্ন হতে পারে (যেমন: পরিবেশের ভেরিয়েবল)।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.