ফায়ারবেস সুরক্ষা চেকলিস্ট

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

আপত্তিজনক ট্রাফিক এড়িয়ে চলুন

ব্যাকএন্ড পরিষেবাগুলির জন্য পর্যবেক্ষণ এবং সতর্কতা সেট আপ করুন৷

যেমন অস্বীকার অফ সার্ভিস (ডস) আক্রমণ, পর্যবেক্ষণ এবং জন্য সতর্ক সেট আপ হিসাবে অবমাননাকর ট্রাফিক সনাক্ত করতে, ক্লাউড Firestore , রিয়েলটাইম ডাটাবেস , ক্লাউড স্টোরেজ এবং হোস্টিং

আপনি আপনার আবেদন ওপর হামলা সন্দেহ করেন, সাপোর্ট কাছে পৌঁছাতে তাড়াতাড়ি সম্ভব হিসাবে তাদের জানতে কী ঘটছে তা দিন।

অ্যাপ চেক সক্ষম করুন

সহায়তা করতে শুধুমাত্র আপনার অ্যাপ্লিকেশান, ব্যাকএন্ড পরিষেবা অ্যাক্সেস করতে পারবেন সক্ষম নিশ্চিত অ্যাপ চেক সমর্থন এটা যে প্রতি সেবার জন্য।

স্বাভাবিক ট্রাফিকের জন্য স্কেল করার জন্য আপনার ক্লাউড ফাংশন কনফিগার করুন

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

সীমা প্রায় পৌঁছে গেলে অবহিত করার জন্য সতর্কতা সেট আপ করুন

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

স্ব-ডস প্রতিরোধ করুন: এমুলেটরগুলির সাথে স্থানীয়ভাবে ফাংশন পরীক্ষা করুন

ক্লাউড ফাংশনগুলি বিকাশ করার সময় দুর্ঘটনাক্রমে নিজেই DOS করা সহজ হতে পারে: উদাহরণস্বরূপ, একটি অসীম ট্রিগার-রাইট লুপ তৈরি করে৷ আপনি আপনার গঠন করে লাইভ সেবা প্রভাবিত থেকে এই ভুল প্রতিরোধ করতে পারি Firebase এমুলেটর স্যুট

(এবং আপনি থেকে এটি সরানোর দ্বারা ঘটনাক্রমে ডস নিজেকে, কি আপনার ফাংশন undeploy যদি index.js তারপর চলমান firebase deploy --only functions ।)

যেখানে রিয়েল-টাইম প্রতিক্রিয়াশীলতা কম গুরুত্বপূর্ণ, কাঠামোটি রক্ষণাত্মকভাবে কাজ করে

আপনি বাস্তব সময়ে একটি ফাংশন ফলাফল উপস্থাপন করতে প্রয়োজন হবে না থাকে, তাহলে আপনি ব্যাচে প্রসেস করে অবমাননাকর ট্রাফিক বিরুদ্ধে প্রশমিত করতে পারেন: একটি ফলাফল প্রকাশ প্রকা / সদ বিষয়, এবং একটি সঙ্গে নিয়মিত সময় অন্তর ফলাফল প্রক্রিয়া নির্ধারিত ফাংশন .

API কী বুঝুন

ফায়ারবেস পরিষেবাগুলির জন্য API কীগুলি গোপন নয়৷

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

API কী স্কোপিং সেট আপ করুন

কোনো আক্রমণকারী বিরুদ্ধে একটি অতিরিক্ত প্রতিবন্ধক স্পুফ অনুরোধ আপনার API কী ব্যবহার করার চেষ্টা হিসাবে, আপনি API কীগুলির তৈরি করতে পারেন আপনার অ্যাপ গ্রাহকদের scoped

FCM সার্ভার কী গোপন রাখুন

Firebase পরিষেবার জন্য ভিন্ন এপিআই কি, FCM সার্ভার কি-সংকলন (দ্বারা ব্যবহৃত লিগ্যাসি FCM HTTP- র এপিআই ) স্পর্শকাতর এবং গোপন রাখতে হবে।

পরিষেবা অ্যাকাউন্ট কীগুলি গোপন রাখুন

এছাড়াও Firebase পরিষেবার জন্য অসদৃশ API কীগুলির, সেবা অ্যাকাউন্ট ব্যক্তিগত কি-সংকলন (দ্বারা ব্যবহৃত এডমিন SDK এর ) স্পর্শকাতর এবং গোপন রাখতে হবে।

নিরাপত্তা নিয়ম

উৎপাদন বা লক মোডে নিয়ম শুরু করুন

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

ক্লাউড ফায়ারস্টোর (উৎপাদন মোড) এবং রিয়েলটাইম ডেটাবেস (লক করা মোড) এর নতুন উদাহরণগুলির জন্য এটি একটি ডিফল্ট সেটিংস৷ একটি নতুন ডাটাবেস দৃষ্টান্ত স্থাপন করার সময় এই বিকল্পটি নির্বাচন করুন।

ক্লাউড স্টোরেজের জন্য, নিম্নলিখিতগুলির মতো একটি সুরক্ষা নিয়ম কনফিগারেশন দিয়ে শুরু করুন:

rules_version = '2';
service firebase.storage {
  match /b/{bucket}/o {
    match /{allPaths=**} {
      allow read, write: if false;
    }
  }
}

নিরাপত্তা নিয়ম একটি স্কিমা; আপনি নথি যোগ করার সময় নিয়ম যোগ করুন

আপনার অ্যাপটি লেখার পরে নিরাপত্তা নিয়ম লিখবেন না, এক ধরনের প্রি-লঞ্চ টাস্ক হিসেবে। পরিবর্তে, আপনার অ্যাপ লেখার সময় নিরাপত্তা বিধি লিখুন, সেগুলিকে একটি ডাটাবেস স্কিমার মতো ব্যবহার করুন: যখনই আপনাকে একটি নতুন নথির প্রকার বা পাথ কাঠামো ব্যবহার করতে হবে, প্রথমে এটির নিরাপত্তা নিয়ম লিখুন৷

এমুলেটর স্যুটের সাথে ইউনিট পরীক্ষার নিরাপত্তা নিয়ম; এটি CI এ যোগ করুন

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

প্রমাণীকরণ

কাস্টম প্রমাণীকরণ: একটি বিশ্বস্ত (সার্ভার-সাইড) পরিবেশ থেকে মিন্ট JWTs

আপনার যদি ইতিমধ্যেই একটি সুরক্ষিত সাইন-ইন সিস্টেম থাকে, একটি কাস্টম সিস্টেম হোক বা তৃতীয় পক্ষের পরিষেবা, আপনি Firebase পরিষেবাগুলির সাথে প্রমাণীকরণের জন্য আপনার বিদ্যমান সিস্টেম ব্যবহার করতে পারেন৷ কাস্টম JWTs তৈরি করুন একটি বিশ্বস্ত পরিবেশ থেকে, তারপর আপনার ক্লায়েন্ট, যা এ প্রমাণীকৃত করতে টোকেন ব্যবহার (থেকে টোকেন পাস আইওএস + + , অ্যান্ড্রয়েড , ওয়েব , ইউনিটি , সি ++ )।

একটি তৃতীয় পক্ষের প্রদানকারীর সাথে কাস্টম প্রমাণীকরণ ব্যবহার একটি উদাহরণ জন্য, ব্লগ পোস্ট, দেখুন Firebase Okta ব্যবহার সহ প্রমাণীকরণ

পরিচালিত প্রমাণীকরণ: OAuth 2.0 প্রদানকারীরা সবচেয়ে নিরাপদ

আপনি যদি Firebase-এর পরিচালিত প্রমাণীকরণ বৈশিষ্ট্যগুলি ব্যবহার করেন, OAuth 2.0 / OpenID Connect প্রদানকারী বিকল্পগুলি (Google, Facebook, ইত্যাদি) সবচেয়ে সুরক্ষিত৷ আপনি যদি পারেন (আপনার ব্যবহারকারীর ভিত্তির উপর নির্ভর করে) তাহলে আপনাকে এই সরবরাহকারীদের এক বা একাধিক সমর্থন করা উচিত।

ইমেল-পাসওয়ার্ড প্রমাণীকরণ: নৃশংস বল আক্রমণ প্রতিরোধ করতে সাইন-ইন এন্ডপয়েন্টের জন্য শক্ত কোটা সেট করুন

আপনি Firebase এর পরিচালিত ইমেল-পাসওয়ার্ড প্রমাণীকরণ সেবা ব্যবহার করেন, তাহলে ডিফল্ট কোটা আঁট করা identitytoolkit.googleapis.com পাশব বল আক্রমণ প্রতিরোধ করার জন্য এন্ড পয়েন্ট। আপনি এর থেকে তা করতে পারেন Google মেঘ কনসোলে এপিআই এর পাতা

মাল্টি-ফ্যাক্টর প্রমাণীকরণের জন্য ক্লাউড আইডেন্টিটি প্ল্যাটফর্মে আপগ্রেড করুন

সাইন-ইন অতিরিক্ত নিরাপত্তার জন্য, আপনি আপগ্রেড করার দ্বারা বহু-ফ্যাক্টর প্রমাণীকরণ সমর্থন যোগ করতে পারেন ক্লাউড পরিচয় প্ল্যাটফর্ম । আপনি আপগ্রেড করার পরে আপনার বিদ্যমান ফায়ারবেস প্রমাণীকরণ কোড কাজ করতে থাকবে।

বেনামী প্রমাণীকরণ

উষ্ণ অনবোর্ডিংয়ের জন্য শুধুমাত্র বেনামী প্রমাণীকরণ ব্যবহার করুন

ব্যবহারকারীরা প্রকৃতপক্ষে সাইন ইন করার আগে তাদের জন্য মৌলিক অবস্থা সংরক্ষণ করতে শুধুমাত্র বেনামী প্রমাণীকরণ ব্যবহার করুন৷ বেনামী প্রমাণীকরণ ব্যবহারকারীর সাইন-ইন এর প্রতিস্থাপন নয়৷

ব্যবহারকারীরা তাদের ফোন হারালে ডেটা চাইলে অন্য সাইন-ইন পদ্ধতিতে রূপান্তর করুন

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

সুরক্ষা নিয়মগুলি ব্যবহার করুন যাতে ব্যবহারকারীদের সাইন ইন প্রদানকারীতে রূপান্তরিত করা বা তাদের ইমেল যাচাই করা প্রয়োজন৷

যে কেউ আপনার প্রকল্পে একটি বেনামী অ্যাকাউন্ট তৈরি করতে পারে। যে মাথায় রেখে, সঙ্গে সমস্ত অ-সর্বজনীন ডেটা সুরক্ষিত নিরাপত্তা বিধি জারি করে যে নির্দিষ্ট সাইন-ইন পদ্ধতি বা ই-মেইল ঠিকানায় প্রয়োজন

উদাহরণ স্বরূপ:

allow write: if request.auth.token.firebase.sign_in_provider != "anonymous";
allow write: if request.auth.token.email_verified = true;

পরিবেশ ব্যবস্থাপনা

উন্নয়ন এবং মঞ্চায়ন প্রকল্প সেট আপ করুন

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

প্রোডাকশন ডেটাতে টিমের অ্যাক্সেস সীমিত করুন

আপনি কোন বৃহত্তর দলের সাথে কাজ করেন, তাহলে আপনি যেকোন একটি ব্যবহার করে উৎপাদন ডেটাতে অ্যাক্সেস সীমিত দ্বারা ভুল এবং ভঙ্গের পরিণতি প্রশমিত করতে পূর্বনির্ধারিত ভূমিকা বা কাস্টম IAM ভূমিকা।

যদি আপনার দল উন্নয়নের জন্য এমুলেটর স্যুট ব্যবহার করে, তাহলে আপনাকে উৎপাদন প্রকল্পে বিস্তৃত অ্যাক্সেস দেওয়ার প্রয়োজন নাও হতে পারে।

গ্রন্থাগার ব্যবস্থাপনা

লাইব্রেরির ভুল বানান বা নতুন রক্ষণাবেক্ষণকারীদের জন্য সতর্ক থাকুন

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

পরিবর্তনগুলি না বুঝে লাইব্রেরি আপডেট করবেন না

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

ওয়াচডগ লাইব্রেরিগুলিকে ডেভ বা টেস্ট নির্ভরতা হিসাবে ইনস্টল করুন৷

যেমন একটি লাইব্রেরি জাতীয় ব্যবহার Snyk অনিরাপদ নির্ভরতা জন্য আপনার প্রকল্পের স্ক্যান করতে বলুন।

ফাংশনের জন্য মনিটরিং সেট আপ করুন; লাইব্রেরি আপডেটের পরে এটি পরীক্ষা করুন

আপনি ব্যবহার করেন তাহলে ক্লাউড কার্যাবলী এটির SDK এর , আপনি পারেন নিরীক্ষণ ও সতর্ক করা , অস্বাভাবিক আচরণ গ্রন্থাগার আপডেট দ্বারা সৃষ্ট আচরণ সহ।

ক্লাউড ফাংশন নিরাপত্তা

ক্লাউড ফাংশনের পরিবেশ ভেরিয়েবলে কখনই সংবেদনশীল তথ্য রাখবেন না

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

  • Firebase API কীগুলির, যা হয় স্টোরে গোপন না শুধু তাদের কোডে এম্বেড করুন।
  • আপনি যদি একটি ক্লাউড ফাংশনে Firebase অ্যাডমিন SDK ব্যবহার করেন, তাহলে আপনাকে স্পষ্টভাবে পরিষেবা অ্যাকাউন্টের শংসাপত্রগুলি প্রদান করতে হবে না, কারণ SDK স্বয়ংক্রিয়ভাবে শুরু করার সময় সেগুলি অর্জন করতে পারে৷
  • আপনি Google এবং Google মেঘ API গুলি পরিষেবা অ্যাকাউন্ট পরিচয়পত্র প্রয়োজন, কলিং থাকেন, Node.js এর জন্য Google প্রমাণীকরণ লাইব্রেরি থেকে এই পরিচয়পত্র পেতে পারেন আবেদন ডিফল্ট পরিচয়পত্র , যা স্বয়ংক্রিয়ভাবে ক্লাউড কার্যাবলী মধ্যে জনবহুল।
  • আপনার ক্লাউড কার্যাবলী উপলব্ধ অ- Google পরিষেবাগুলির জন্য ব্যক্তিগত কী ও পরিচয়পত্র তৈরি করতে হলে, ব্যবহার ক্লাউড সিক্রেট ম্যানেজার

সংবেদনশীল তথ্য এনক্রিপ্ট করুন

আপনি যদি আপনার ক্লাউড ফাংশনে সংবেদনশীল তথ্য পাস করা এড়াতে না পারেন, তাহলে আপনাকে অবশ্যই তথ্য এনক্রিপ্ট করতে আপনার নিজস্ব কাস্টম সমাধান নিয়ে আসতে হবে।

সহজ ফাংশন নিরাপদ; আপনার যদি জটিলতার প্রয়োজন হয়, ক্লাউড রান বিবেচনা করুন

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

আপনার যা দরকার তা জটিল লজিক বা পরিবেশ কনফিগারেশন থাকে, ব্যবহারের বিষয়ে বিবেচনা ক্লাউড চালান পরিবর্তে ক্লাউড কার্যাবলী করুন।