কোনও ওয়েবসাইটের গোপনীয় মান পরিবেশের পরিবর্তনশীল হিসাবে রাখার সুবিধা কী কী?


24

এ devops নির্দেশিকা https://12factor.net/config এনভায়রনমেন্ট ভেরিয়েবল মধ্যে ওয়েবসাইট গোপন (ডাটাবেস পাসওয়ার্ড, API কীগুলির, ইত্যাদি) করা সুপারিশ। সংস্করণ নিয়ন্ত্রণ থেকে উপেক্ষা পাঠ্য ফাইল (জেএসএন, এক্সএমএল, ওয়াইএমএল, আইএনআই বা অনুরূপ) ব্যবহার করার পরিবর্তে কী কী সুবিধা রয়েছে?

.Bash_profile এবং ওয়েবসারভার কনফিগারেশনে পরিবেশের ভেরিয়েবলগুলি পরিচালনা করার চেয়ে গোপনীয়তার সাথে কনফিগারেশন ফাইলটি অনুলিপি করা আমার পক্ষে অনেক সহজ find আমি কি কিছু মিস করছি?


1
তাত্ত্বিকভাবে মেমরির চেয়ে কোনও ফাইল পড়া সহজ হয় যাতে আপনি আক্রমণ পৃষ্ঠকে আরও বড় এবং জটিলতা আরও কম বিবেচনা করতে পারেন।
ফ্লোরিন Asăvoaie

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

উত্তর:


21

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

আমার নিজের অভিজ্ঞতা দেওয়া, আপনি মূলত নিম্নলিখিত তিনটি বিকল্প পেয়েছেন, সম্পর্কিত সুবিধা এবং অসুবিধা সহ:

কনফিগার ফাইলগুলিতে ডেটা সংরক্ষণ করুন।

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

সুবিধাদি:

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

অসুবিধা:

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

পরিবেশের ভেরিয়েবলগুলিতে ডেটা সংরক্ষণ করুন।

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

সুবিধাদি:

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

অসুবিধেও

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

ডেটা পাস করার জন্য কমান্ড-লাইন আর্গুমেন্ট ব্যবহার করুন।

গুরুতরভাবে, এটিকে যেকোন মূল্যে এড়িয়ে চলুন, এটি সুরক্ষিত নয় এবং এটি বজায় রাখার জন্য পাছার একটি ব্যথা।

সুবিধাদি:

  • এমনকি বেশিরভাগ ভাষায় পরিবেশের ভেরিয়েবলের চেয়ে পার্স করা সহজ।
  • শিশু প্রক্রিয়াগুলি স্বয়ংক্রিয়ভাবে ডেটা উত্তরাধিকারসূত্রে আসে না।
  • অ্যাপ্লিকেশন বিকাশকালে নির্দিষ্ট কনফিগারেশনগুলি দ্রুত পরীক্ষা করার একটি সহজ উপায় সরবরাহ করে।

অসুবিধা:

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

1
একটি গুরুত্বহীন বিন্দু নয় সার্ভারের অপ্রয়োজনীয় (পুনরায়) বুট, ম্যানুয়ালি কোনও পাসওয়ার্ড না দিয়েই শেষ পর্যন্ত তারা তার জন্য ডিস্কে কোথাও রয়েছে
প্লাজমাএইচএইচ

7
বেশিরভাগ ইউনিক্স সিস্টেমে আপনি কোনও প্রসেসের এনভায়রনমেন্ট ভেরিয়েবলগুলি উল্লেখযোগ্য সুযোগের প্রয়োজন ছাড়াই বেশ কিছুটা পড়তে পারেন। - আপনি কি এটি প্রসারিত করতে পারেন? / Proc / #### / এনভায়রনমেন্ট ফাইলটি কেবলমাত্র মালিকের দ্বারা পঠনযোগ্য, তাই আপনাকে রুট হওয়া বা sudo থাকা দরকার।
ruuenza

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

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

3
আমি @ রারাউঞ্জা যে বক্তব্যটি দিয়েছি তাতে আমি একমত। উত্তরটি চারপাশে বেশ দুর্দান্ত, তবে আপনি কীভাবে কোনও প্রসেসের পরিবেশের পরিবর্তনগুলি সঠিকভাবে কোনও বিশেষ সুযোগের প্রয়োজন ছাড়াই পড়তে পারবেন ঠিক সে সম্পর্কে আমি স্পষ্টতা চাই । সম্পর্কিত " এবং আপনার কেবলমাত্র কেবল CAP_SYS_ADMIN সামর্থ্য প্রয়োজন (যার মূলটি অন্তর্ভুক্তভাবে রয়েছে) ..." ভাল, কোনও দূষিত এজেন্টের যদি রুট সুবিধাগুলি থাকে তবে আরও আলোচনা অতিরিক্ত কাজ হবে এবং সিএপিএসওয়াইএস_এডিএমআইএনও মূল অধিকার হতে পারে (দেখুন man7.org/linux /man-pages/man7/capables.7.html , CAP_SYS_ADMIN এবং কার্নেল বিকাশকারীদের জন্য নোটগুলি )
নুবার্ক

13

পরিবেশের ভেরিয়েবলগুলি ওয়েব সার্ভারের প্রতিটি শিশু প্রক্রিয়া দ্বারা উত্তরাধিকার সূত্রে প্রাপ্ত হবে। এটি প্রতিটি অধিবেশন যা সার্ভারের সাথে সংযোগ স্থাপন করে এবং প্রতিটি প্রোগ্রাম তাদের দ্বারা তৈরি হয়। গোপনীয়তাগুলি স্বয়ংক্রিয়ভাবে সেই সমস্ত প্রক্রিয়াটিতে প্রকাশিত হবে।

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


1
"এটি প্রতিটি অধিবেশন যা সার্ভারের সাথে সংযোগ স্থাপন করে" একটি বিভ্রান্তিমূলক বক্তব্য। আপনি সার্ভারে কোনও HTTP সেশনটি খুলতে পারবেন না এবং এটির পরিবেশের ভেরিয়েবলগুলি অ্যাক্সেস পেতে পারবেন না, না আপনি সেই সার্ভারের শেলটিতে লগইন করতে পারবেন এবং না পেয়ে যতক্ষণ না আপনার রুট অ্যাক্সেস থাকে বা ওয়েব সার্ভার প্রক্রিয়াটির মালিক না থাকে।
সেগফল্ট

ওয়েব সার্ভার দ্বারা উদ্ভূত প্রতিটি প্রক্রিয়া তার পরিবেশের উত্তরাধিকার সূত্রে প্রাপ্ত, যদি না আপনি অন্যথায় সক্রিয় পদক্ষেপ গ্রহণ করেন। একটি HTML পৃষ্ঠায় সেই তথ্যটি ব্যবহার করার ক্ষমতা নেই, তবে একটি স্ক্রিপ্ট রয়েছে।
অ্যান্ড্রু শুলম্যান

সঠিক থাকা অবস্থায়, এই উত্তরটি কিছু সংশোধন / ছাড় দিয়ে করতে পারে, বিশেষত শব্দ সেশনের ক্ষেত্রে । প্রথম পড়ার সময়, মনে হয় কোনও বাহ্যিক ক্লায়েন্টের কাছে তথ্য প্রকাশের সম্ভাবনার পরামর্শ দেওয়ার জন্য পরিবেশের ভেরিয়েবলের ব্যবহারকে খারাপ আলোতে আঁকতে পারে। এছাড়াও এনভ-ওয়ার্সের সীমিত সেটিংয়ের জন্য সুেক্সেকের সাথে তুলনীয় ছাড় দেওয়া যেতে পারে যেমন প্রতি প্রক্রিয়া এনভ-ওয়ার্স নির্ধারণ (একটি লা MYVAR=foo /path/to/some/executable) কোনও প্রসেসের প্রসারণকে সীমাবদ্ধ করে এবং এটি কেবলমাত্র শিশু - এবং যেখানে মাস্টার ডিমনগুলি প্রয়োজন তা স্ক্র্যাব / পুনরায় সেট / সংশোধন করতে পারে শিশু প্রক্রিয়া পরিবেশ।
শালম্ব

2

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

যে কিছু কথোপকথন হয়েছিল তা অনুমান করতে খুব বেশি কল্পনা লাগে না।

বিকাশকারী এ: "আহ এই গোপনীয় কনফিগারেশন ফাইল ইউআই খুব বিশৃঙ্খলাযুক্ত! জসন, এক্সএমএল এবং সিএসভির মধ্যে স্যুইচ করা আমাদের কি সত্যিই একটি ড্রপ ডাউন হওয়া দরকার?"

বিকাশকারী বি: "ওহ, যদি সকলেই অ্যাপ্লিকেশন কনফিগারেশনের জন্য পরিবেশের ভেরিয়েবল ব্যবহার করে life

বিকাশকারী এ: "আসলে এটির জন্য কিছু প্রশংসনীয় নিরাপত্তা সম্পর্কিত কারণ রয়েছে Environment

বিকাশকারী বি: "আপনি কি ডেমোন, বা কোনও কনফিগার ফাইল চালু করে এমন স্ক্রিপ্ট দিয়ে পরিবেশের ভেরিয়েবলগুলি সেট করবেন না?"

বিকাশকারী এ: "হিরোকুতে নেই! আমরা সেগুলি তাদের ইউআইতে টাইপ করব" "

বিকাশকারী বি: "ওহ দেখুন, 12factor.net এর জন্য আমার ডোমেন নাম সতর্কতা সবেমাত্র বন্ধ হয়ে গেছে" " 1


1 : উত্স: আপ আপ।


1

টি এল; ডিআর

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

বাহিরের ব্যান্ড কনফিগারেশন: উত্স কোড থেকে গোপনীয়তা পৃথক করা

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

আপনার গোপনীয় বিষয়গুলি এনক্রিপ্ট করা এর সমাধান করতে সত্যই সহায়তা করে না। যা যা করে তা হ'ল সমস্যাটিকে এক সরানোর দিকে ঠেলে দেয়, কারণ এখন আপনাকে কী পরিচালনা এবং বিতরণ সম্পর্কেও চিন্তা করতে হবে!

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

বিভাজন বৃদ্ধি: সার্ভার, অ্যাপ্লিকেশন এবং ভূমিকা

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

আপনি যদি প্রতিটি সার্ভারে অনন্য গোপনীয়তা রাখতে চান বা প্রতিটি অ্যাপ্লিকেশনটির জন্য, পরিবেশের ভেরিয়েবলগুলি প্রচুর পরিমাণে ফাইল পরিচালনা করার সমস্যাটি সরিয়ে দেয়। আপনি যদি একটি নতুন সার্ভার, অ্যাপ্লিকেশন, বা ভূমিকা যোগ করেন তবে আপনাকে নতুন ফাইল তৈরি করতে হবে না বা পুরানো ফাইলগুলি আপডেট করতে হবে না: আপনি কেবল সিস্টেমটির পরিবেশকে প্রশ্নবিদ্ধ update

সুরক্ষা বিষয়ে পার্টিং চিন্তাভাবনা

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

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

পরিবেশের ভেরিয়েবল বনাম অন্যান্য গোপনীয়তা-পরিচালনার কৌশলগুলির বিষয়টি সুরক্ষা এবং ব্যবহারযোগ্যতা বাণিজ্য সম্পর্কিত বিষয়গুলির তুলনায় সত্যিকারের চেয়ে বেশি abs আপনার মাইলেজ পরিবর্তিত হতে পারে.


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

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

2
আপনার সমস্ত পয়েন্ট সঠিক, এটি অন্য কোনও কনফিগারেশন ডেটার মতোই পরিবেশের ভেরিয়েবলের ক্ষেত্রে প্রযোজ্য except আপনি যদি ফাইলগুলিতে পরিবেশের ভেরিয়েবল সঞ্চয় করেন তবে আপনি সেগুলি প্রতিশ্রুতিবদ্ধ করতে পারেন; এবং আপনি যদি তাদের ব্যান্ড-অফ-ব্যান্ড প্রেরণ করেন তবে কোনও ফাইল টাইপ করে না করে ফাইলে করা আরও সহজ। তবে আপনি যদি এগুলি টাইপ করতে পছন্দ করেন তবে তার পরিবর্তে কোনও JSON অবজেক্টটি কেন টাইপ করে স্টিনে পড়বেন না? এটি আসলে কমান্ড লাইনের চেয়ে বেশি সুরক্ষিত।
jpaugh

1

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

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

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

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

উৎপাদন জন্য, আমি আবেদন একটি ইন env-Vars সেটিং পক্ষে EnvironmentFile যেমন /etc/default/myapplication.confযে কনফিগারেশন পরিচালনার দ্বারা মোতায়েন এবং শুধুমাত্র দ্বারা পাঠযোগ্য সেট করা হয় rootযেমন যে systemd(অথবা যে বিষয়টি জন্য অন্য কিছু) একটি ডেডিকেটেড অধীনে আবেদন ডিম পারেন Deprivileged সিস্টেম ব্যবহারকারী একটি ব্যক্তিগত দল । এর জন্য ডেডিকেটেড ইউজার গ্রুপগুলির সাথে ব্যাকড হয়েছে opsএবং sudo- এই ফাইলগুলি বিশ্বব্যাপী ডিফল্টরূপে অপঠনযোগ্য। এটি ডিভেল + আপ্সের সমস্ত সদ্ব্যবহারকে সমর্থনকারী 12 ফ্যাক্টর অনুগত এবং এর পরেও বিকাশকারী / পরীক্ষকদের দেব / কিউএ / পরীক্ষার পরিবেশগুলিতে তাদের নিজস্ব এনভায়রনফায়ালগুলিতে ফেলে দেওয়ার অনুমতি দেওয়ার সাথে সাথে শালীন সুরক্ষার সমস্ত সুবিধা রয়েছে।


0

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

আজুর ওয়েব অ্যাপ্লিকেশনগুলি এই প্যাটার্নটি ব্যবহার করার বিকল্প সরবরাহ করে এবং এটি খুব ভালভাবে কাজ করে।

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

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