বিল্ড প্রক্রিয়ায় এনভায়রনমেন্ট ভেরিয়েবল যুক্ত করা হলো একটি standard আধুনিক অনুশীলনে CI/CD pipelineটিমগুলো হার্ডকোডিং ভ্যালু ছাড়াই সিক্রেট, টোকেন এবং রানটাইম কনফিগারেশন বিল্ডে পাস করার জন্য বিল্ড প্রসেসে এনভায়রনমেন্ট ভ্যারিয়েবল ইনজেক্ট করে। আপাতদৃষ্টিতে, এটি একটি সহজ এবং নিরাপদ প্যাটার্ন বলে মনে হয়।
তবে, বাস্তবে এটি প্রায়শই সফটওয়্যার সরবরাহ শৃঙ্খলের সবচেয়ে অবমূল্যায়িত ঝুঁকিগুলোর একটি হয়ে ওঠে।
কারণ একবার টিমগুলো বিল্ড প্রসেসে এনভায়রনমেন্ট ভেরিয়েবল যুক্ত করলে, সেই মানগুলো আর বিচ্ছিন্ন থাকে না। এর ভেতরে যা কিছু চলে, তার সবকিছুর কাছেই সেগুলো সহজলভ্য হয়ে যায়। pipelineবিল্ড স্ক্রিপ্ট, সিএলআই টুল, থার্ড-পার্টি অ্যাকশন, এমনকি ডিপেন্ডেন্সিগুলোও এগুলো পড়তে পারে।
এখান থেকেই সবকিছু ভেস্তে যেতে শুরু করে।
এই নির্দেশিকায়, আমরা আলোচনা করব কিভাবে টিমগুলো বাস্তব ক্ষেত্রে বিল্ড প্রসেসে এনভায়রনমেন্ট ভেরিয়েবল যুক্ত করে। pipelineকোথায় আসলে লিক হয়, এবং ডেভেলপমেন্টের গতি না কমিয়ে কীভাবে বিল্ড প্রসেসকে সুরক্ষিত করা যায়।
বিল্ড প্রক্রিয়ায় এনভায়রনমেন্ট ভেরিয়েবল যুক্ত করার অর্থ কী
মূলতঃ, এনভায়রনমেন্ট ভেরিয়েবল ইনজেক্ট করার অর্থ হলো একটি ভেরিয়েবলে মান পাস করা। pipeline রানটাইমে, যাতে জবগুলো নির্বাহের সময় সেগুলোতে অ্যাক্সেস করতে পারে।
এই মানগুলির মধ্যে সাধারণত এপিআই কী, ডাটাবেস ক্রেডেনশিয়াল, টোকেন বা পরিবেশ-নির্দিষ্ট কনফিগারেশন অন্তর্ভুক্ত থাকে। এগুলিকে সরাসরি কোডে সংরক্ষণ করার পরিবর্তে, CI/CD বিল্ড শুরু হলে সিস্টেম সেগুলোকে ডায়নামিকভাবে লোড করে।
এটি একটি বাস্তব সমস্যার সমাধান করে। এটি কোডকে পরিচ্ছন্ন রাখে, পুনরাবৃত্তি এড়ায় এবং একই রকম সুযোগ দেয়। pipeline স্টেজিং, টেস্টিং এবং প্রোডাকশন এনভায়রনমেন্ট জুড়ে চালানোর জন্য।
তবে, এই মডেলটি এমন একটি অনুমানের উপর নির্ভর করে যা এখন আর খাটে না: যে নির্মাণ পরিবেশ নিয়ন্ত্রিত এবং অনুমানযোগ্য।
আধুনিক pipelineএগুলো কোনোটিই নয়। এগুলোতে একাধিক ধাপ, বাহ্যিক ইন্টিগ্রেশন এবং ডিপেন্ডেন্সি অন্তর্ভুক্ত থাকে যা ডাইনামিকভাবে কোড এক্সিকিউট করে। ফলে, একবার কোনো ভ্যারিয়েবল ইনজেক্ট করা হলে, তা আর শুধু কনফিগারেশন থাকে না। এটি এক্সিকিউশন কনটেক্সটের অংশ হয়ে যায়।
বিল্ড প্রক্রিয়ায় এনভায়রনমেন্ট ভেরিয়েবল কোথায় লিক করে
বেশিরভাগ তথ্য ফাঁস হয় না কারণ কেউ স্পষ্টভাবে কোনো গোপন তথ্য ফাঁস করে দেয়। এগুলো ঘটে কারণ... pipelineগুলো এমনভাবে আচরণ করে যা ডেভেলপাররা পুরোপুরি অনুমান করতে পারেন না।
উদাহরণস্বরূপ, একজন ডেভেলপার কোনো ব্যর্থ বিল্ড ডিবাগ করার জন্য ভার্বোস লগিং চালু করতে পারেন। একটি CLI টুল তার আউটপুটের অংশ হিসেবে এনভায়রনমেন্ট ভেরিয়েবল প্রিন্ট করতে পারে। একটি ডিপেন্ডেন্সি তার এক্সিকিউশনের অংশ হিসেবে নীরবে প্রসেস ভেরিয়েবল অ্যাক্সেস করতে পারে।
এই কাজগুলোর কোনোটিই এককভাবে সন্দেহজনক মনে হয় না। তবে, সব মিলিয়ে এগুলো তথ্য ফাঁসের একাধিক পথ তৈরি করে।
গোপনীয় তথ্যগুলো নিম্নলিখিত ক্ষেত্রে গিয়ে পৌঁছাতে পারে:
- বিল্ড লগ যা সংরক্ষিত এবং সূচীবদ্ধ করা হয়
- ডিবাগ আউটপুট দলগুলোর মধ্যে শেয়ার করা হয়েছে
- তৃতীয় পক্ষের CI অ্যাকশন যা বাহ্যিক কোড চালায়
- ইনস্টলেশন বা রানটাইমের সময় কার্যকর হওয়া নির্ভরতা
- বিল্ডের সময় তৈরি হওয়া অস্থায়ী আর্টিফ্যাক্ট
একবার কোনো গোপনীয় তথ্য লগ-এ প্রকাশিত হলে, তা খুব কমই সীমাবদ্ধ থাকে। লগগুলো একাধিক সিস্টেমে অনুলিপি করা, সংরক্ষণ করা এবং ধরে রাখা হয়। সেই পর্যায়ে, এর প্রকাশ মূল উৎসকে ছাড়িয়ে বহুদূর পর্যন্ত ছড়িয়ে পড়ে। pipeline.
এই কারণেই পরিবেশগত পরিবর্তনশীল পদার্থের লিকেজ প্রায়শই দেরিতে ধরা পড়ে, এবং ততক্ষণে ক্ষতি হয়েই যায়।
কেন টিমস বিল্ড প্রসেসে এনভায়রনমেন্ট ভেরিয়েবল যুক্ত করে
এই ঝুঁকিগুলো থাকা সত্ত্বেও, টিমগুলো এনভায়রনমেন্ট ভ্যারিয়েবল ইনজেকশনের ওপর ব্যাপকভাবে নির্ভর করে। এবং এর যথেষ্ট কারণও রয়েছে।
এটি সচল আছে pipelineনমনীয় থাকার জন্য। একটি একক ওয়ার্কফ্লো বিভিন্ন পরিবেশের সাথে খাপ খাইয়ে নিতে পারে, একাধিক পরিষেবার বিরুদ্ধে প্রমাণীকরণ করতে পারে এবং কোড পরিবর্তন না করেই গতিশীলভাবে আচরণ পরিবর্তন করতে পারে।
দ্রুত পরিবর্তনশীল ডেভঅপস পরিবেশে এই নমনীয়তা অপরিহার্য। তবে, নমনীয়তার সাথে সবসময়ই কিছু ছাড় দিতে হয়। একটি ডেভঅপস যত বেশি গতিশীল হয়, নমনীয়তা তত বেশি পরিবর্তনশীল হয়। pipeline এটি যত বড় হয়, এর ভেতরে কী ঘটছে তা নিয়ন্ত্রণ করা ততই কঠিন হয়ে পড়ে। প্রতিটি অতিরিক্ত ধাপ, সংযোজন বা নির্ভরশীলতা সংবেদনশীল তথ্যে প্রবেশযোগ্য স্থানের সংখ্যা বাড়িয়ে দেয়।
এর ফলে, এনভায়রনমেন্ট ভেরিয়েবল ইনজেকশন কনফিগারেশনের একটি খুঁটিনাটি বিষয় থেকে একটি নিরাপত্তা উদ্বেগে পরিণত হয়।
বিল্ড প্রসেসে এনভায়রনমেন্ট ভেরিয়েবল যুক্ত করার সাধারণ ঝুঁকিগুলো
ঝুঁকিগুলো তাত্ত্বিক নয়। সেগুলো বাস্তবে দেখা দেয়। pipelineপ্রতিদিন।
লগগুলিতে গোপনীয়তা ফাঁস হচ্ছে
লগগুলি হল অন্যতম সংস্পর্শের সবচেয়ে সাধারণ উৎসগুলিডিবাগ ফ্ল্যাগ, সিএলআই টুল এবং স্ট্যাক ট্রেস প্রায়শই ডেভেলপারদের অজান্তেই সংবেদনশীল মান প্রকাশ করে ফেলে।
একবার প্রকাশিত হলে, সেই মানগুলো সিস্টেম জুড়ে দ্রুত ছড়িয়ে পড়ে।
অতিরিক্ত অনুমতিমূলক প্রবেশাধিকার
অনেক pipelineসমস্ত ভেরিয়েবলকে সব জবের কাছে প্রকাশ করে দেওয়া হয়। এতে অপ্রয়োজনীয় ঝুঁকি তৈরি হয়।
যদি কোনো একটি ধাপ অরক্ষিত হয়ে পড়ে, তবে এটি এমন সব ক্রেডেনশিয়াল অ্যাক্সেস করতে পারে যার আসলে কোনো প্রয়োজন নেই।
নির্ভরশীলতা এবং কর্মের অপব্যবহার
আধুনিক pipelineএগুলো থার্ড-পার্টি টুল এবং ইন্টিগ্রেশনের উপর ব্যাপকভাবে নির্ভর করে। এই উপাদানগুলো আপনার সিক্রেটগুলোর মতোই একই পরিবেশে চলে।
যদি তাদের মধ্যে কেউ অসৎ আচরণ করে, তবে সে নীরবে ইনজেক্ট করা ভেরিয়েবলগুলো অ্যাক্সেস করতে পারে।
অনুসারে OWASPসাপ্লাই চেইন আক্রমণগুলো প্রায়শই বিল্ড প্রক্রিয়ার বিশ্বস্ত উপাদানগুলোকে কাজে লাগায়। এক্ষেত্রে এনভায়রনমেন্ট ভেরিয়েবলগুলো প্রায়শই সবচেয়ে সহজ লক্ষ্যবস্তু হয়ে ওঠে।
কোডে ফলব্যাক গোপনীয়তা
ভেরিয়েবল অনুপস্থিত থাকার কারণে যখন বিল্ড ব্যর্থ হয়, তখন টিমগুলো মাঝে মাঝে ফলব্যাক ভ্যালু যোগ করে রাখে। pipelineদৌড়াচ্ছে।
সময়ের সাথে সাথে, এই মানগুলি commitমোতায়েন বা স্থাপন করা, যা দীর্ঘমেয়াদী ঝুঁকি তৈরি করে।
বিল্ড প্রক্রিয়ায় নিরাপদে এনভায়রনমেন্ট ভেরিয়েবল যুক্ত করার সর্বোত্তম পদ্ধতি
| বিভাগ | ভাল অভ্যাস | কেন এটি গুরুত্বপূর্ণ |
|---|---|---|
| গোপনীয়তা সংরক্ষণ | একটি ভল্ট বা সিআই সিক্রেটস ম্যানেজার ব্যবহার করুন | কোডে প্রকাশ রোধ করে |
| প্রবেশাধিকার নিয়ন্ত্রণ | প্রতি কাজের জন্য অ্যাক্সেস সীমিত করুন | আক্রমণের পৃষ্ঠতল হ্রাস করে |
| লগিং | সংবেদনশীল মানগুলি মাস্ক করুন | ফাঁস প্রতিরোধ করে |
| পরিধি ও জীবনকাল | স্বল্পস্থায়ী পরিচয়পত্র ব্যবহার করুন | বিস্ফোরণ ব্যাসার্ধ সীমাবদ্ধ করে |
| ভ্যালিডেশন | ভেরিয়েবল অনুপস্থিত থাকলে বিল্ড ব্যর্থ হবে। | অনিরাপদ বিকল্প পরিহার করে |
কেন অনেক CI/CD নিরাপত্তা সরঞ্জাম মিস এনভায়রনমেন্ট ভেরিয়েবল লিক
বেশিরভাগ নিরাপত্তা টুল বিল্ড সম্পন্ন হওয়ার পর কোড বা ডিপেন্ডেন্সি স্ক্যান করার ওপর মনোযোগ দেয়।
তবে, এক্সিকিউশন চলাকালীন এনভায়রনমেন্ট ভেরিয়েবল লিক ঘটে থাকে।
A pipeline সঠিকভাবে সিক্রেট ইনজেক্ট করার পরেও লগ বা রানটাইম আচরণের মাধ্যমে তা প্রকাশ হয়ে যেতে পারে। কোনো স্ক্যানার সমস্যাটি শনাক্ত করার আগেই হয়তো সিক্রেটটি ইতিমধ্যেই ফাঁস হয়ে গেছে।
এর ফলে শনাক্তকরণ ও প্রতিরোধের মধ্যে একটি ব্যবধান তৈরি হয়।
দলগুলোর এমন নিয়ন্ত্রণ ব্যবস্থা প্রয়োজন যা একই সাথে কাজ করে। pipeline দৌড়ায়, শেষ হওয়ার পরে নয়।
এনভায়রনমেন্ট ভেরিয়েবল ইনজেকশন সুরক্ষিত করার জন্য আমাদের সুপারিশ
বাস্তবে, কার্যকর সুরক্ষা কয়েকটি সুসংগত নীতির উপর নির্ভর করে।
গোপনীয়তা বাইরে সংরক্ষণ করুন pipelineএগুলো শুধুমাত্র রানটাইমে ইনজেক্ট করুন। অ্যাক্সেসকে ন্যূনতম প্রয়োজনীয় পরিধির মধ্যে সীমাবদ্ধ রাখুন। যখনই সম্ভব স্বল্পস্থায়ী ক্রেডেনশিয়াল ব্যবহার করুন।
একই সময়ে, পর্যবেক্ষণ করুন কিভাবে pipelineসংবেদনশীল ডেটা অ্যাক্সেস করা। কোনো লিকেজ দৃশ্যমান হওয়ার আগেই অপ্রত্যাশিত অ্যাক্সেস প্যাটার্ন প্রায়শই ঝুঁকির ইঙ্গিত দেয়।
এই পদ্ধতি নিরাপত্তাকে প্রতিক্রিয়াশীল শনাক্তকরণ থেকে সক্রিয় নিয়ন্ত্রণে স্থানান্তরিত করে।
জাইজেনি কীভাবে সুরক্ষায় সাহায্য করে CI/CD গোপন ইনজেকশন
শুধুমাত্র পোস্ট-বিল্ড স্ক্যানিংয়ের ওপর নির্ভর না করে, জাইজেনি বিশ্লেষণ করে কীভাবে pipelineজবগুলো চলার সময় এনভায়রনমেন্ট ভেরিয়েবল ব্যবহার করে। এর মধ্যে অন্তর্ভুক্ত রয়েছে কীভাবে সিক্রেটগুলো এক জব থেকে অন্য জবে স্থানান্তরিত হয়, কীভাবে বিল্ড স্টেপগুলো সেগুলোকে অ্যাক্সেস করে এবং কীভাবে ডিপেন্ডেন্সিগুলো এক্সিকিউশন এনভায়রনমেন্টের সাথে ইন্টারঅ্যাক্ট করে।
উদাহরণস্বরূপ, জাইজেনি সনাক্ত করতে পারে কখন একটি pipeline যখন ভেরিয়েবলগুলোকে অতিরিক্ত উন্মুক্ত করে দেওয়া হয়, কোনো ধাপে লগ-এ সংবেদনশীল মান প্রিন্ট হওয়ার ঝুঁকি থাকে, অথবা যখন কোনো ডিপেন্ডেন্সি অপ্রত্যাশিতভাবে ক্রেডেনশিয়াল অ্যাক্সেস করার চেষ্টা করে।
একই সময়ে, guardrails সরাসরি নীতি প্রয়োগ করুন pipelineটিমগুলো অনিরাপদ বিল্ড ব্লক করতে পারে, নির্দিষ্ট জবে গোপন অ্যাক্সেস সীমাবদ্ধ করতে পারে এবং প্রোডাকশনে পৌঁছানোর আগেই ঝুঁকিপূর্ণ কনফিগারেশন প্রতিরোধ করতে পারে।
কারণ এটি এর মধ্যে ঘটে CI/CD কর্মপ্রবাহের জন্য, ডেভেলপারদের তাদের কাজের পদ্ধতি পরিবর্তন করার প্রয়োজন নেই। নিরাপত্তা এর একটি অংশ হয়ে ওঠে। pipeline, একটি পৃথক ধাপ নয়।
এর ফলে, দলগুলো গোপনীয় তথ্য কীভাবে ব্যবহৃত হচ্ছে সে সম্পর্কে ধারণা পায়, সেগুলো কীভাবে ফাঁস হচ্ছে তা নিয়ন্ত্রণ করতে পারে এবং কাজের গতি না কমিয়েই তথ্য ফাঁসের ঝুঁকি কমাতে পারে।
সর্বশেষ ভাবনা
তবে, এটি এমন একটি ঝুঁকির কারণও তৈরি করে যা প্রায়শই অলক্ষিত থেকে যায়।
চ্যালেঞ্জটি এনভায়রনমেন্ট ভেরিয়েবল ব্যবহার করা হবে কি না, তা নয়, বরং এক্সিকিউশনের সময় সেগুলোর প্রকাশ কীভাবে নিয়ন্ত্রণ করা যায়।
আধুনিক ডেভঅপ্স পরিবেশে, বিল্ড প্রক্রিয়া চলাকালীন মেমরি লিক প্রতিরোধ করা, পরবর্তীতে তা শনাক্ত করার চেয়ে অনেক বেশি গুরুত্বপূর্ণ।




