Cloud Storage for Firebase Cloud Storage জন্য Firebase Security Rules নামে একটি ঘোষণামূলক পথ-ভিত্তিক নিরাপত্তা মডেল প্রদান করে যা আপনাকে আপনার ফাইলগুলিকে দ্রুত এবং সহজে সুরক্ষিত করতে দেয়।
নিয়ম বুঝুন
Cloud Storage জন্য Firebase Security Rules Cloud Storage সঞ্চিত ফাইলগুলিতে কে পড়ার এবং লেখার অ্যাক্সেস পেয়েছে, সেইসাথে ফাইলগুলি কীভাবে গঠন করা হয় এবং সেগুলিতে কী মেটাডেটা রয়েছে তা নির্ধারণ করতে ব্যবহৃত হয়৷ মৌলিক ধরনের নিয়ম হল allow
বিধি, যা একটি ঐচ্ছিকভাবে নির্দিষ্ট শর্ত নির্দিষ্ট করা হলে অনুরোধগুলি read
এবং write
অনুমতি দেয়, উদাহরণস্বরূপ:
// If no condition is specified, the rule evaluates to true allow read; // Rules can optionally specify a condition allow write: if <condition>; // Rules can also specify multiple request methods allow read, write: if <condition>;
ম্যাচিং পাথ
Cloud Storage Security Rules Cloud Storage ফাইল অ্যাক্সেস করতে ব্যবহৃত ফাইল পাথের match
। নিয়মগুলি সঠিক পথ বা ওয়াইল্ডকার্ড পাথের match
এবং নিয়মগুলিও নেস্ট করা যেতে পারে। যদি কোনো মিল নিয়ম একটি অনুরোধ পদ্ধতির অনুমতি না দেয়, বা শর্তটি false
মূল্যায়ন করে, অনুরোধটি অস্বীকার করা হয়।
সঠিক মিল
// Exact match for "images/profilePhoto.png" match /images/profilePhoto.png { allow write: if <condition>; } // Exact match for "images/croppedProfilePhoto.png" match /images/croppedProfilePhoto.png { allow write: if <other_condition>; }
নেস্টেড ম্যাচ
// Partial match for files that start with "images" match /images { // Exact match for "images/profilePhoto.png" match /profilePhoto.png { allow write: if <condition>; } // Exact match for "images/croppedProfilePhoto.png" match /croppedProfilePhoto.png { allow write: if <other_condition>; } }
ওয়াইল্ডকার্ড ম্যাচ
নিয়মগুলিও ওয়াইল্ডকার্ড ব্যবহার করে একটি প্যাটার্ন match
জন্য ব্যবহার করা যেতে পারে। একটি ওয়াইল্ডকার্ড হল একটি নামযুক্ত ভেরিয়েবল যা একটি একক স্ট্রিং যেমন profilePhoto.png
, অথবা একাধিক পাথ সেগমেন্ট, যেমন images/profilePhoto.png
প্রতিনিধিত্ব করে।
ওয়াইল্ডকার্ড নামের চারপাশে কোঁকড়ানো বন্ধনী যোগ করে একটি ওয়াইল্ডকার্ড তৈরি করা হয়, যেমন {string}
। ওয়াইল্ডকার্ড নামের সাথে =**
যোগ করে একাধিক সেগমেন্ট ওয়াইল্ডকার্ড ঘোষণা করা যেতে পারে, যেমন {path=**}
:
// Partial match for files that start with "images" match /images { // Exact match for "images/*" // e.g. images/profilePhoto.png is matched match /{imageId} { // This rule only matches a single path segment (*) // imageId is a string that contains the specific segment matched allow read: if <condition>; } // 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
। অর্থাৎ, যদি কোনো নিয়মে ফাইলটি true
সাথে মূল্যায়ন করে, ফলাফলটি true
হয়।
উপরের নিয়মে, "images/profilePhoto.png" ফাইলটি পড়া যাবে যদি হয় condition
বা other_condition
সত্যে মূল্যায়ন করা হয়, যখন ফাইল "images/users/user:12345/profilePhoto.png" শুধুমাত্র other_condition
ফলাফল সাপেক্ষে .
একটি ওয়াইল্ডকার্ড ভেরিয়েবল match
মধ্যে থেকে উল্লেখ করা যেতে পারে ফাইলের নাম বা পাথ অনুমোদন প্রদান করে:
// Another way to restrict the name of a file match /images/{imageId} { allow read: if imageId == "profilePhoto.png"; }
Cloud Storage Security Rules ক্যাসকেড করে না, এবং নিয়মগুলি শুধুমাত্র তখনই মূল্যায়ন করা হয় যখন অনুরোধের পথটি নির্দিষ্ট নিয়মগুলির সাথে একটি পাথের সাথে মেলে৷
মূল্যায়নের জন্য অনুরোধ করুন
Cloud Storage পাঠানো request
ব্যবহার করে আপলোড, ডাউনলোড, মেটাডেটা পরিবর্তন এবং মুছে ফেলার মূল্যায়ন করা হয়। request
ভেরিয়েবলে ফাইলের পাথ থাকে যেখানে রিকোয়েস্টটি করা হচ্ছে, রিকোয়েস্ট পাওয়ার সময় এবং রিকোয়েস্টটি লেখা হলে নতুন resource
ভ্যালু। HTTP শিরোনাম এবং প্রমাণীকরণ অবস্থাও অন্তর্ভুক্ত করা হয়েছে।
request
অবজেক্টটিতে ব্যবহারকারীর অনন্য আইডি এবং Firebase Authentication পেলোডও রয়েছে request.auth
অবজেক্টে, যা ডক্সের ব্যবহারকারী-ভিত্তিক নিরাপত্তা বিভাগে আরও ব্যাখ্যা করা হবে।
request
বস্তুর বৈশিষ্ট্যগুলির একটি সম্পূর্ণ তালিকা নীচে উপলব্ধ:
সম্পত্তি | টাইপ | বর্ণনা |
---|---|---|
auth | মানচিত্র<string, string> | যখন একজন ব্যবহারকারী লগ ইন করেন, তখন uid , ব্যবহারকারীর অনন্য আইডি এবং token প্রদান করে, Firebase Authentication JWT দাবির একটি মানচিত্র। অন্যথায়, এটি null হবে। |
params | মানচিত্র<string, string> | অনুরোধের ক্যোয়ারী প্যারামিটার ধারণকারী ম্যাপ। |
path | পথ | অনুরোধটি সম্পাদিত হচ্ছে এমন একটি path প্রতিনিধিত্ব করে। |
resource | মানচিত্র<string, string> | নতুন সম্পদ মান, শুধুমাত্র write অনুরোধে উপস্থিত। |
time | টাইমস্ট্যাম্প | একটি টাইমস্ট্যাম্প সার্ভারের প্রতিনিধিত্ব করে যে সময়ে অনুরোধটি মূল্যায়ন করা হয়। |
সম্পদ মূল্যায়ন
নিয়মগুলি মূল্যায়ন করার সময়, আপনি আপলোড, ডাউনলোড, পরিবর্তিত বা মুছে ফেলা ফাইলের মেটাডেটা মূল্যায়ন করতে চাইতে পারেন। এটি আপনাকে জটিল এবং শক্তিশালী নিয়মগুলি তৈরি করতে দেয় যা কিছু নির্দিষ্ট বিষয়বস্তুর প্রকারের ফাইলগুলিকে আপলোড করার অনুমতি দেয় বা শুধুমাত্র একটি নির্দিষ্ট আকারের চেয়ে বড় ফাইলগুলিকে মুছে ফেলার মতো জিনিসগুলি করে৷
Cloud Storage জন্য Firebase Security Rules resource
অবজেক্টে ফাইল মেটাডেটা প্রদান করে, যার মধ্যে মেটাডেটার কী/মান পেয়ার থাকে যা একটি Cloud Storage অবজেক্টে দেখা যায়। ডেটা অখণ্ডতা নিশ্চিত করতে এই বৈশিষ্ট্যগুলি read
বা write
অনুরোধে পরিদর্শন করা যেতে পারে।
write
অনুরোধে (যেমন আপলোড, মেটাডেটা আপডেট এবং মুছে ফেলা) resource
অবজেক্ট ছাড়াও, যে ফাইলের জন্য ফাইল মেটাডেটা রয়েছে যা বর্তমানে রিকোয়েস্ট পাথে আছে, আপনার কাছে request.resource
অবজেক্ট ব্যবহার করার ক্ষমতাও আছে, যেটিতে ফাইল মেটাডেটার একটি উপসেট রয়েছে যা লেখার অনুমতি দেওয়া হলে লিখতে হবে। আপনি ডেটা অখণ্ডতা নিশ্চিত করতে বা ফাইলের ধরন বা আকারের মতো অ্যাপ্লিকেশন সীমাবদ্ধতা প্রয়োগ করতে এই দুটি মান ব্যবহার করতে পারেন।
resource
অবজেক্টের বৈশিষ্ট্যগুলির একটি সম্পূর্ণ তালিকা নীচে উপলব্ধ:
সম্পত্তি | টাইপ | বর্ণনা |
---|---|---|
name | স্ট্রিং | বস্তুর পুরো নাম |
bucket | স্ট্রিং | এই বস্তুটি যে বালতিতে থাকে তার নাম। |
generation | int | এই বস্তুর GCS অবজেক্ট জেনারেশন । |
metageneration | int | এই বস্তুর GCS অবজেক্ট মেটাজেনারেশন । |
size | int | বাইটে বস্তুর আকার। |
timeCreated | টাইমস্ট্যাম্প | একটি টাইমস্ট্যাম্প যা একটি বস্তু তৈরি করার সময়কে প্রতিনিধিত্ব করে। |
updated | টাইমস্ট্যাম্প | একটি টাইমস্ট্যাম্প একটি বস্তুর সর্বশেষ আপডেট হওয়ার সময়কে প্রতিনিধিত্ব করে। |
md5Hash | স্ট্রিং | বস্তুর একটি MD5 হ্যাশ। |
crc32c | স্ট্রিং | বস্তুর একটি crc32c হ্যাশ। |
etag | স্ট্রিং | এই বস্তুর সাথে যুক্ত etag। |
contentDisposition | স্ট্রিং | এই বস্তুর সাথে সম্পর্কিত বিষয়বস্তুর স্বভাব। |
contentEncoding | স্ট্রিং | এই বস্তুর সাথে সম্পর্কিত বিষয়বস্তু এনকোডিং। |
contentLanguage | স্ট্রিং | এই বস্তুর সাথে সম্পর্কিত বিষয়বস্তুর ভাষা। |
contentType | স্ট্রিং | এই বস্তুর সাথে সম্পর্কিত বিষয়বস্তুর প্রকার। |
metadata | মানচিত্র<string, string> | অতিরিক্ত, বিকাশকারী নির্দিষ্ট কাস্টম মেটাডেটার মূল/মান জোড়া। |
request.resource
এ generation
, metageneration
, etag
, timeCreated
, এবং updated
ব্যতীত এই সবই রয়েছে।
সম্পূর্ণ উদাহরণ
এটি সব একসাথে রেখে, আপনি একটি চিত্র স্টোরেজ সমাধানের জন্য নিয়মগুলির একটি সম্পূর্ণ উদাহরণ তৈরি করতে পারেন:
service firebase.storage { match /b/{bucket}/o { match /images { // Cascade read to any image type at any path match /{allImages=**} { allow read; } // Allow write files to the path "images/*", subject to the constraints: // 1) File is less than 5MB // 2) Content type is an image // 3) Uploaded content type matches existing content type (if it exists) // 4) File name (stored in imageId wildcard variable) is less than 32 characters match /{imageId} { allow write: if request.resource.size < 5 * 1024 * 1024 && request.resource.contentType.matches('image/.*') && (resource == null || request.resource.contentType == resource.contentType) && imageId.size() < 32 } } } }
এখন, ব্যবহারকারী সুরক্ষা বিভাগে দানাদার প্রতি ব্যবহারকারী ফাইল অ্যাক্সেসের জন্য Firebase Authentication একীভূত করি।