GitHub push protection চালু করুন—৫০MB push-এ secret এড়িয়ে যেতে পারে

|লেখক: QUASA সম্পাদকীয় দল|5 মিনিটের পাঠ| 1
GitHub push protection চালু করুন—৫০MB push-এ secret এড়িয়ে যেতে পারে

GitHub রিপোজিটরিতে সমর্থিত সিক্রেট পৌঁছানোর আগে আটকাতে Settings থেকে Advanced Security খুলে Secret Protection-এর অধীনে Push protection চালু করুন। GitHub-এর রিপোজিটরি সেটআপ নির্দেশনা অনুযায়ী, পুশ প্রোটেকশন সিক্রেট শনাক্ত করলে পুশ আটকে দেয়; কেউ বাধা এড়িয়ে পুশ করলে সতর্কতা তৈরি হয়।

GitHub-এর শনাক্তকরণ সীমা অনুযায়ী, পাবলিক রিপোজিটরিতে ৫০MB-এর বেশি পুশ পুশ প্রোটেকশন স্ক্যান করে না। তাই সফল পুশকে সিক্রেটমুক্ত কোডের প্রমাণ ধরবেন না। সেটিংস চালুর পাশাপাশি দলের বাইপাস অনুমতি, বড় পুশ এবং পরে তৈরি হওয়া সতর্কতা দেখার দায়িত্ব ঠিক করুন।

কারা চালু করতে পারবেন

রিপোজিটরির মালিক, প্রতিষ্ঠানের মালিক, নিরাপত্তা ব্যবস্থাপক অথবা প্রশাসনিক ভূমিকা থাকা ব্যবহারকারী রিপোজিটরিতে পুশ প্রোটেকশন চালু করতে পারেন। Settings ট্যাব না দেখলে রিপোজিটরির নামের পাশের মেনু দেখুন। সেখানেও সেটিংস না পেলে নিজের প্রশাসনিক অধিকার যাচাই করুন; কেবল কোড পুশ করার অনুমতি থাকলেই নিরাপত্তা সেটিংস বদলানো যায় না।

পাবলিক রিপোজিটরিতে সিক্রেট স্ক্যানিং বিনামূল্যে স্বয়ংক্রিয়ভাবে চলে। প্রতিষ্ঠানের মালিকানাধীন প্রাইভেট ও অভ্যন্তরীণ রিপোজিটরিতে GitHub Team বা GitHub Enterprise Cloud-এর সঙ্গে GitHub Secret Protection সক্রিয় থাকা প্রয়োজন। ব্যক্তিগত অ্যাকাউন্টের মালিকানাধীন রিপোজিটরির জন্য প্রাপ্যতার শর্ত আলাদা: GitHub Enterprise Cloud-এ Enterprise Managed Users অথবা উপযুক্ত GitHub Enterprise Server ব্যবস্থার শর্ত প্রযোজ্য। ফলে একটি পাবলিক রিপোজিটরিতে সুবিধাটি দেখেই সব প্রাইভেট রিপোজিটরিতে একই বিকল্প থাকবে ধরে নেওয়া ঠিক নয়।

রিপোজিটরিতে সেটিংস চালুর ধাপ

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

  1. রিপোজিটরির নামের নিচে Settings খুলুন। ট্যাব দেখা না গেলে পাশের মেনু থেকে Settings নির্বাচন করুন।
  2. পাশের মেনুর Security and quality অংশে Advanced Security খুলুন। Secret Protection বন্ধ থাকলে তার পাশে Enable নির্বাচন করুন।
  3. Secret Protection অংশে Push protection-এর পাশে Enable নির্বাচন করুন। পৃষ্ঠা আবার দেখে বিকল্পটি সক্রিয় আছে কি না মিলিয়ে নিন।

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

নিরাপদ পরীক্ষায় কী দেখবেন

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

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

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

বাইপাসের অনুমতি ও সতর্কতার দায়িত্ব

GitHub রিপোজিটরিতে আটকে যাওয়া সিক্রেটযুক্ত পুশ নির্ধারিত পর্যালোচকের সিদ্ধান্তের অপেক্ষায় আছে

পুশ প্রোটেকশন চালু করলেই প্রত্যেক বাইপাসে আলাদা পর্যালোচকের অনুমোদন বাধ্যতামূলক হয় না। অনুমোদনের ধাপ চাইলে delegated bypass কনফিগার করুন। GitHub-এর delegated bypass নির্দেশনা অনুযায়ী, রিপোজিটরির Advanced Security-তে Push protection অংশের Who can bypass push protection for secret scanning মেনু থেকে Specific roles or teams বেছে ভূমিকা বা দল যোগ করা যায়। প্রতিষ্ঠান বা এন্টারপ্রাইজ স্তরে এই ব্যবস্থা আগে কনফিগার করা থাকলে রিপোজিটরি স্তরের নিয়ন্ত্রণ নিষ্ক্রিয় থাকে।

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

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

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

পুশ আটকাল না কেন: শনাক্তকরণের সীমা

GitHub রিপোজিটরিতে জোড়া শংসাপত্রের দুই অংশ আলাদা ফাইলে থাকায় শনাক্তকরণ ব্যর্থ হতে পারে

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

  • পাবলিক রিপোজিটরির পুশটি উল্লিখিত আকারসীমার ওপরে ছিল কি না দেখুন। অতিরিক্ত বড় পুশ বা জটিল ইতিহাসে স্ক্যানের সময় শেষ হতে পারে; এমন ক্ষেত্রে পুশের পরে সিক্রেট স্ক্যানিং সতর্কতা তৈরি করতে পারে।
  • শংসাপত্রটি জোড়া প্যাটার্নের কি না মিলিয়ে নিন। যেমন AWS-এর অ্যাক্সেস কী আইডি ও গোপন অংশ একই ফাইলে এবং একই রিপোজিটরিতে পুশ না হলে জোড়াটি শনাক্ত হয় না। আলাদা ফাইলে রাখা দুই অংশকে তাই নিরাপদ ধরে নেওয়া যাবে না।
  • টোকেনের সংস্করণ ও পরিবেশ মিলিয়ে দেখুন। পুরোনো টোকেন পুশ প্রোটেকশনে সমর্থিত নাও হতে পারে; GitHub Enterprise Server-এর পুরোনো ব্যক্তিগত অ্যাক্সেস টোকেন GitHub Enterprise Cloud-এ শনাক্ত না হওয়ার পরিবেশগত সীমাও আছে। বিপরীত পরিবেশেও একই সমস্যা হতে পারে।
  • বাইপাসের অনুমতি বা সম্পূর্ণ অব্যাহতি পাওয়া কোনো স্বয়ংক্রিয় প্রক্রিয়া পুশটি করেছে কি না যাচাই করুন। পুশ আটকে না থাকলে সংশ্লিষ্ট সতর্কতা ও অনুমতির সিদ্ধান্ত একসঙ্গে পর্যালোচনা করুন।

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

আরও পড়ুন:

শেয়ার করুন:

আমাদের নিউজলেটার নিন

সর্বশেষ Web3, AI ও ক্রিপ্টো সংবাদ সরাসরি আপনার ইনবক্সে পান।

0