গিথুব এবং হিরোকু ব্যবহার করার সময় কেউ কীভাবে সংবেদনশীল ডেটা পরিচালনা করতে পারে?


49

গিট যেভাবে কাজ করে সে সম্পর্কে এখনও আমি অভ্যস্ত নই (এবং লিনাসের পাশাপাশি যদি কেউ থাকেন তবে তিনি অবাক হন;))।

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

পাবলিক রেপোতে কিছু জিনিস পরীক্ষা করা উচিত নয়; ডাটাবেস পাসওয়ার্ড, এপিআই কী, শংসাপত্র, ইত্যাদি ... তবে এই জিনিসগুলিকে এখনও গিট রেপোর অংশ হওয়া দরকার যেহেতু আপনি নিজের কোডটি হিরোকুতে ঠেলাতে ব্যবহার করেন।

এই ব্যবহারের ক্ষেত্রে কীভাবে কাজ করবেন?

দ্রষ্টব্য: আমি জানি যে হেরোকু বা পিএইচপিফোগ এই সমস্যাটি থেকে বাঁচাতে সার্ভার ভেরিয়েবলগুলি ব্যবহার করতে পারে। আমার প্রশ্নটি কোডের অংশগুলি কীভাবে "লুকিয়ে রাখবেন" সে সম্পর্কে is


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

উত্তর:


30

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

(নীচের উদাহরণ এবং আমার পুরো উত্তরটি রেল অ্যাপসের সাথে সম্পর্কিত)

$ cd myapp
$ heroku config:add S3_KEY=8N029N81 S3_SECRET=9s83109d3+583493190
Adding config vars and restarting myapp... done, v14
S3_KEY:     8N029N81
S3_SECRET:  9s83109d3+583493190

তারপরে ENV [] ভেরিয়েবল ব্যবহার করে আপনার কোডে এই কনফিগার মানগুলি উল্লেখ করুন

AWS::S3::Base.establish_connection!(
  :access_key_id     => ENV['S3_KEY'],
  :secret_access_key => ENV['S3_SECRET']
)

এইভাবে আপনার সংবেদনশীল পাসওয়ার্ডগুলি গিট সংগ্রহস্থলে সংরক্ষণ করা হয় না। (দ্রষ্টব্য: স্থানীয়ভাবে অ্যাপ্লিকেশন চালানোর সময়, আপনার .bashrcফাইলে এই মানগুলি সেট করুন

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

এছাড়াও, আপনি যদি নিজের নিজস্ব অ্যাপ্লিকেশনটি চালাচ্ছেন এবং এটি ব্যক্তিগত থাকতে চান, গিথুবের একটি দুর্দান্ত বিকল্প হ'ল বিটবাকেট যা নিখরচায় ব্যক্তিগত সংগ্রহস্থল সরবরাহ করে।


17

বেশ কয়েকটি ধারণা ... সর্বজনীন কী ক্রিপ্টোগ্রাফি সবচেয়ে নমনীয় উত্তর।

অবরুদ্ধকরণ (কেবল কোডের জন্য)

আপনি যে কোডটি আড়াল করতে চান তার অংশগুলির জন্য, আপনি কি সেগুলি অন্য কোনও প্রকল্পে স্থাপন করতে, সংকলন করতে এবং উত্স নয়, কেবল সংকলিত কোডটি পরীক্ষা করতে পারেন? এটি এনক্রিপশন নয় এবং পাসওয়ার্ড বা কীগুলি এনক্রিপ্ট করার জন্য উপযুক্ত নয় । লোকেরা এখনও আপনার সংকলিত কোডটি বিপরীতে ইঞ্জিনিয়ার করতে পারে, তবে তারা উত্স পায় না।

ব্যক্তিগত জিআইটি সংগ্রহস্থল

এটি কি সার্বজনীন গিট ভান্ডার হতে হবে ?

সার্ভার স্টোরেজ

আপনি কি এই তথ্যটি কোনও সুরক্ষিত ফাইলে ব্যবহারকারীর অ্যাকাউন্ট ডিরেক্টরিতে ব্যবহার করতে পারেন? আমি sh / .ssh / id_rsa এবং 600০০ এর একটি chmod দিয়ে ssh যেভাবে এটি করে তা অনুলিপি করব that এটি ব্যর্থ হলে, পরিবেশের পরিবর্তনশীলটি ব্যবহার করা যেতে পারে। কোনও ধরণের কী সংরক্ষণ করার জন্য আপনাকে সার্ভারে কোথাও প্রয়োজন, বা কোনও কিছু রক্ষা করার উপায় নেই।

প্রতিসম ক্রিপ্টোগ্রাফি (কেবল আপনার জন্য)

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

অসম্পূর্ণ ক্রিপ্টোগ্রাফি (একাধিক বিকাশকারীদের জন্য)

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

টুল

ওপেনসেল সম্ভবত একমাত্র ক্রিপ্টোগ্রাফি সরঞ্জাম যা আপনার প্রয়োজন হবে। আপনার নিজের ক্রিপ্টোগ্রাফি অ্যালগরিদম বা একটি প্রকাশিত অ্যালগরিদমের নিজস্ব বাস্তবায়ন লিখবেন না।

সমাপ্তি চিন্তা

যদি "সার্ভার" কোনও ওয়েব সার্ভার যা https ব্যবহার করে তবে আপনার ব্যক্তিগত কী সংরক্ষণ করতে সার্ভারে ইতিমধ্যে কোনও সুরক্ষিত কীস্টোর থাকা উচিত It's এই. আপনার মুখোমুখি চ্যালেঞ্জগুলি অন্যরা কীভাবে সমাধান করবেন সে সম্পর্কে তাদের কিছু ইঙ্গিত থাকতে পারে?


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

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

7

আপনি যদি হিরোকুতে আপনার কোডটি চালাতে চান তবে আপনাকে এটি তাদের দিতে হবে - আপনি আপনার হোস্টিং সরবরাহকারীর কাছ থেকে এটি "গোপন" রাখতে পারবেন না।

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


1
ধন্যবাদ, তবে এর জন্য কর্মপ্রবাহ কী?
জোনাস

6

আপনি কোডের কিছু অংশ গোপন করবেন না। আপনার সিস্টেমের সুরক্ষা কোডের গোপনীয়তার উপর নির্ভর করা উচিত নয়; এটি "অস্পষ্টতার মাধ্যমে সুরক্ষা" নামে পরিচিত, এটি সুরক্ষা বিশেষজ্ঞরা ভেবে দেখেন কারণ এটি খুব খারাপভাবে কাজ করে।

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

গুরুত্বপূর্ণ: আপনার উত্স কোডটিতে কখনই হার্ডকোড ক্রিপ্টোগ্রাফিক কী, পাসওয়ার্ড বা অন্যান্য গোপনীয়তা নেই! এটা খুব খারাপ অনুশীলন।

আরো দেখুন:

প্লাগ: সুরক্ষা সম্পর্কে প্রশ্ন জিজ্ঞাসা করার জন্য আইটি সুরক্ষা.এসই একটি দুর্দান্ত জায়গা!

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