Catch up on everthing we announced at this year's Firebase Summit. Learn more

ক্লাউড স্টোরেজ ভাষার জন্য ফায়ারবেস সুরক্ষা বিধিগুলির মূল বাক্য গঠন শিখুন

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

এই গাইড সম্পূর্ণ নিয়ম সেট তৈরির জন্য ক্লাউড স্টোরেজ সিকিউরিটি রুলসের মৌলিক সিনট্যাক্স এবং গঠন বর্ণনা করে।

পরিষেবা এবং ডাটাবেস ঘোষণা

ক্লাউড স্টোরেজের জন্য ফায়ারবেস সিকিউরিটি রুলস সর্বদা নিম্নলিখিত ঘোষণা দিয়ে শুরু হয়:

service firebase.storage {
    // ...
}

service firebase.storage ঘোষণা ক্লাউড স্টোরেজ থেকে নিয়ম সুযোগগুলি, এই ধরনের ক্লাউড Firestore হিসাবে অন্যান্য পণ্যের জন্য ক্লাউড স্টোরেজ সিকিউরিটি রুলস এবং নিয়ম দ্বন্দ্বের প্রতিরোধ।

মৌলিক পড়া/লেখার নিয়ম

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

আপনার ডিফল্ট ruleset সালে প্রথম match বক্তব্য ব্যবহার {bucket} ইঙ্গিত নিয়ম আপনার প্রকল্পের সমস্ত বাকেট ক্ষেত্রে প্রযোজ্য ওয়াইল্ডকার্ড অভিব্যক্তি। আমরা পরবর্তী বিভাগে ওয়াইল্ডকার্ড মিলের ধারণা নিয়ে আরও আলোচনা করব।

service firebase.storage {
  // The {bucket} wildcard indicates we match files in all Cloud Storage buckets
  match /b/{bucket}/o {
    // Match filename
    match /filename {
      allow read: if <condition>;
      allow write: if <condition>;
    }
  }
}

সমস্ত মিল বিবৃতি ফাইল নির্দেশ করে। একটি খেলা বিবৃতি একটি নির্দিষ্ট ফাইল নির্দেশ করতে পারেন যেমন match /images/profilePhoto.png

ওয়াইল্ডকার্ড মেলে

একটি একক ফাইলে নির্দেশ করে additiont সালে রুলস ওয়াইল্ডকার্ড বিন্দু যেকোনো ফাইলের তার নাম একটি প্রদত্ত স্ট্রিং উপসর্গ, স্ল্যাশ সহ ব্যবহার করতে পারেন, হিসাবে match /images/{imageId}

উপরের উদাহরণে, ম্যাচ বিবৃতি ব্যবহার {imageId} ওয়াইল্ডকার্ড সিনট্যাক্স। এই উপায়ে নিয়ম সঙ্গে যেকোনো ফাইল প্রযোজ্য /images/ যেমন তার নাম শুরুর এ /images/profilePhoto.png বা /images/croppedProfilePhoto.png । যখন allow ম্যাচ বিবৃতিতে এক্সপ্রেশন মূল্যায়ন করা হয়, imageId পরিবর্তনশীল যেমন ইমেজ ফাইলের নাম, এর সমাধান হবে profilePhoto.png বা croppedProfilePhoto.png

একটি ওয়াইল্ড কার্ড পরিবর্তনশীল মধ্যে থেকে উল্লেখিত যাবে match ফাইলের নাম বা পথ অনুমোদন প্রদান:

// Another way to restrict the name of a file
match /images/{imageId} {
  allow read: if imageId == "profilePhoto.png";
}

শ্রেণিবিন্যাসগত তথ্য

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

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

service firebase.storage {
  match /b/{bucket}/o {
    match /images/{imageId} {
      allow read, write: if <condition>;
    }

    // Explicitly define rules for the 'mp3s' pattern
    match /mp3s/{mp3Id} {
      allow read, write: if <condition>;
    }
  }
}

যখন পাখির match বিবৃতি, ভিতরের পথ match বিবৃতি সবসময় বাইরের পথ সংযোজন করা হয় match বিবৃতি। নিম্নলিখিত দুটি নিয়ম সেট সমতুল্য:

service firebase.storage {
  match /b/{bucket}/o {
    match /images {
      // Exact match for "images/profilePhoto.png"
      match /profilePhoto.png {
        allow write: if <condition>;
      }
    }
  }
}
service firebase.storage {
  match /b/{bucket}/o {
    // Exact match for "images/profilePhoto.png"
    match /images/profilePhoto.png {
      allow write: if <condition>;
      }
  }
}

পুনরাবৃত্তিমূলক ম্যাচ ওয়াইল্ডকার্ড

ওয়াইল্ডকার্ড করে একটি ফাইলের নাম শেষে ম্যাচ এবং বিনিময়ে স্ট্রিং, একটি একাধিক সেগমেন্ট ওয়াইল্ডকার্ড যোগ করে বেশি জটিল মিলের জন্য ঘোষিত হতে পারে ছাড়াও =** , ওয়াইল্ডকার্ড নামের মত {path=**} :

// Partial match for files that start with "images"
match /images {

  // Exact match for "images/**"
  // e.g. images/users/user:12345/profilePhoto.png is matched
  // images/profilePhoto.png is also matched!
  match /{allImages=**} {
    // This rule matches one or more path segments (**)
    // allImages is a path that contains all segments matched
    allow read: if <other_condition>;
  }
}

একাধিক নিয়ম একটি ফাইল মেলে তাহলে, ফল OR সব নিয়ম মূল্যায়ন ফল হয়। অর্থাৎ কোনো নিয়ম যদি ফাইলে evalutes সাথে মেলে true , ফল true

উপরে নিয়মে ফাইল "ইমেজ / profilePhoto.png" যদি পারেন পড়া যায় condition বা other_condition সত্য নির্ণয় করা, যখন ফাইল "ইমেজ / ব্যবহারকারীরা / ব্যবহারকারী: 12345 / profilePhoto.png" ফল একমাত্র সাপেক্ষে other_condition

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

সংস্করণ 1

ফায়ারবেস সিকিউরিটি রুলস ডিফল্টরূপে সংস্করণ 1 ব্যবহার করে। সংস্করণ 1 এ, পুনরাবৃত্তিমূলক ওয়াইল্ডকার্ডগুলি এক বা একাধিক ফাইলের নাম উপাদানগুলির সাথে মেলে, শূন্য বা তার বেশি উপাদানগুলির সাথে নয়। সুতরাং, match /images/{filenamePrefixWildcard}/{imageFilename=**} /images/profilePics/profile.png মত একটি ফাইলের নাম মিলে যায়, কিন্তু /images/badge.png না। ব্যবহারের /images/{imagePrefixorFilename=**} পরিবর্তে।

পুনরাবৃত্তিমূলক ওয়াইল্ডকার্ড অবশ্যই একটি ম্যাচের বিবৃতির শেষে আসতে হবে।

আমরা সুপারিশ করি আপনি এর আরও শক্তিশালী বৈশিষ্ট্যগুলির জন্য সংস্করণ 2 ব্যবহার করুন।

সংস্করণ 2

ফায়ারবেস নিরাপত্তা বিধিমালার সংস্করণ 2 -তে, পুনরাবৃত্তিমূলক ওয়াইল্ডকার্ডগুলি শূন্য বা তার বেশি পথের আইটেমের সাথে মেলে। সুতরাং, /images/{filenamePrefixWildcard}/{imageFilename=**} মিলে যায় /images/profilePics/profile.png এবং /images/badge.png ফাইলগুলির নাম।

আপনি অপ্ট-ইন সংস্করণ 2 আবশ্যক যোগ করে rules_version = '2'; আপনার নিরাপত্তা নিয়মের শীর্ষে:

rules_version = '2';
service cloud.storage {
  match /b/{bucket}/o {
   ...
 }
}

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

rules_version = '2';
service firebase.storage {
 match /b/{bucket}/o {
   // Matches any file in a songs "subdirectory" under the
   // top level of your Cloud Storage bucket.
   match /{prefixSegment=**}/songs/{mp3filenames} {
     allow read, write: if <condition>;
   }
  }
}

দানাদার অপারেশন

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

একজন read অপারেশন মধ্যে ভাঙা যাবে get এবং list

একটি write নিয়ম ভেঙে যেতে পারে create , update , এবং delete :

service firebase.storage {
  match /b/{bucket}/o {
    // A read rule can be divided into read and list rules
    match /images/{imageId} {
      // Applies to single document read requests
      allow get: if <condition>;
      // Applies to list and listAll requests (Rules Version 2)
      allow list: if <condition>;

    // A write rule can be divided into create, update, and delete rules
    match /images/{imageId} {
      // Applies to writes to nonexistent files
      allow create: if <condition>;

      // Applies to updates to file metadata
      allow update: if <condition>;

      // Applies to delete operations
      allow delete: if <condition>;
    }
  }
 }
}

ওভারল্যাপিং ম্যাচ বিবৃতি

এটা একটা ফাইলের নাম একটির বেশি মেলানোর জন্য সম্ভব match বিবৃতি। কেস যেখানে একাধিক ইন allow এক্সপ্রেশন একটি অনুরোধ মেলে, অ্যাক্সেস করা মঞ্জুরিপ্রাপ্ত যদি অবস্থার কোন হয় true :

service firebase.storage {
  match b/{bucket}/o {
    // Matches any filename containing string '/images/'.
    match /images/{imageId} {
      allow read, write: if false;
    }

    // Matches all filenames containing string `/images/`
    match /images/{imageId=**} {
      allow read, write: if true;
    }
  }
}

উপরের উদাহরণে, সব পড়ে এবং স্ট্রিং সঙ্গে ফাইলগুলিতে লিখেছেন /images/ তাদের ফাইলের নাম কোথাও অনুমতি দেওয়া হবে দ্বিতীয় নিয়ম সবসময় কারণ true , যদিও প্রথম নিয়ম সর্বদা false

নিয়ম ফিল্টার নয়

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

উদাহরণস্বরূপ, নিম্নলিখিত নিরাপত্তা নিয়ম নিন:

service firebase.storage {
  match /b/{bucket}/o {
    // Allow the client to read files with contentType 'image/png'
    match /aFileNamePrefix/{aFileName} {
      allow read: if resource.contentType == 'image/png';
    }
  }
}

অস্বীকার করেছেন: এই নিয়ম নিম্নলিখিত অনুরোধ প্রত্যাখ্যান কারণ ফলাফল সেট ফাইল যেখানে অন্তর্ভুক্ত করতে পারে contentType নয় image/png :

ওয়েব
filesRef = storage.ref().child("aFilenamePrefix");

filesRef.listAll()
    .then(function(result) {
      console.log("Success: ", result.items);
    })
});

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

পরবর্তী পদক্ষেপ

আপনি ক্লাউড স্টোরেজের জন্য ফায়ারবেস সিকিউরিটি রুলস সম্পর্কে আপনার উপলব্ধি আরও গভীর করতে পারেন:

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

  • টিপিক্যাল নিরাপত্তা ব্যবহারের ক্ষেত্রে ও পর্যালোচনা Firebase সিকিউরিটি রুলস সংজ্ঞা যে তাদের ঠিকানা

আপনি ক্লাউড স্টোরেজ সম্পর্কিত নির্দিষ্ট ক্ষেত্রে ফায়ারবেস সুরক্ষা নিয়ম ব্যবহার করতে পারেন: