در برنامههای معمولی، توسعهدهندگان باید سرورهای زیادی بسازند و نگهداری کنند که احراز هویت، مجوز، و اعتبارسنجی دادهها و همچنین منطق تجاری توسعهدهنده را انجام میدهند. برنامههایی که از Cloud Storage for Firebase استفاده میکنند از Firebase Authentication و Firebase Security Rules برای Cloud Storage برای رسیدگی به احراز هویت، مجوز و اعتبار دادههای بدون سرور استفاده میکنند.
استفاده از Cloud Storage Security Rules Cloud Storage و Cloud Storage به این معنی است که شما می توانید بدون نیاز به مدیریت زیرساخت یا نوشتن کد احراز هویت و مجوز پیچیده سمت سرور، روی ایجاد یک تجربه کاربری عالی تمرکز کنید!
نمای کلی
Cloud Storage Security Rules برای تعیین اینکه چه کسی به فایلهای ذخیرهشده در Cloud Storage دسترسی خواندن و نوشتن دارد، و همچنین نحوه ساختار فایلها و حاوی چه فرادادههایی استفاده میشود. نوع اصلی قانون، قانون allow است، که در صورت رعایت یک شرط اختیاری، عملیات read و write را امکان پذیر می کند. چند نمونه از قوانین عبارتند از:
// Rules can optionally specify a condition allow write: if <condition>;
قوانین با مسیرهای فایلی که نشان دهنده مراجع Cloud Storage هستند match . قوانین ممکن است با یک یا چند مسیر فایل match و بیش از یک قانون می تواند با مسیر فایل در یک request مشخص match :
// Rules match specific paths match /images/profilePhoto.png { allow write: if <condition>; } match /images/croppedProfilePhoto.png { allow write: if <other_condition>; }
زمینه ارزیابی قاعده نیز از طریق اشیاء request و resource آشکار می شود، که اطلاعاتی مانند زمینه اعتبار ( request.auth ) و اندازه شی موجود ( resource.size ) را ارائه می دهند.
// Rules can specify conditions that consider the request context match /images/profilePhoto.png { allow write: if request.auth != null && request.resource.size < 5 * 1024 * 1024; }
در بخش Secure Files درباره Cloud Storage Security Rules بیشتر بیاموزید.
قوانین نمونه
Cloud Storage Security Rules ابتدا باید service (در مورد ما firebase.storage ) و سطل Cloud Storage (از طریق match /b/{bucket}/o ) را مشخص کند که قوانین با آنها ارزیابی می شوند. قوانین پیشفرض به Firebase Authentication نیاز دارند، اما در اینجا چند نمونه از قوانین رایج دیگر با کنترل دسترسی متفاوت آورده شده است.
پیش فرض
// Only authenticated users can read or write to the folder
service firebase.storage {
match /b/{bucket}/o {
match /someFolder/{fileName} {
allow read, write: if request.auth != null;
}
}
}
عمومی
// Anyone can read or write to the folder, even non-users of your app.
// Because it is shared with App Engine, this will also make
// files uploaded via App Engine public.
service firebase.storage {
match /b/{bucket}/o {
match /someFolder/{fileName} {
allow read, write;
}
}
}
کاربر
// Grants a user access to a node matching their user ID
service firebase.storage {
match /b/{bucket}/o {
// Files look like: "user/<UID>/file.txt"
match /user/{userId}/{fileName} {
allow read, write: if request.auth != null && request.auth.uid == userId;
}
}
}
خصوصی
// Access to files through Cloud Storage for Firebase is completely disallowed.
// Files may still be accessible through App Engine or Google Cloud Storage APIs.
service firebase.storage {
match /b/{bucket}/o {
match /{allPaths=**} {
allow read, write: if false;
}
}
}
در طول توسعه، میتوانید از قوانین عمومی به جای قوانین پیشفرض استفاده کنید تا فایلهای خود را برای عموم قابل خواندن و نوشتن تنظیم کنید. این برای نمونه سازی بسیار مفید است، زیرا می توانید بدون تنظیم Firebase Authentication شروع به کار کنید. با این حال، از آنجایی که Cloud Storage یک سطل را با برنامه پیشفرض App Engine شما به اشتراک میگذارد، این قانون همچنین دادههای مورد استفاده توسط آن برنامه را نیز عمومی میکند.
قوانین کاربر به شما این امکان را می دهد که به هر یک از کاربران احراز هویت شده خود فضای ذخیره فایل شخصی خود را بدهید. همچنین میتوانید با استفاده از قوانین خصوصی، فایلهای خود را کاملاً قفل کنید، اما توجه داشته باشید که کاربران شما با این قوانین نمیتوانند از طریق Cloud Storage چیزی بخوانند یا بنویسند. کاربرانی که از برنامه App Engine یا APIهای Google Cloud Storage به فایلها دسترسی دارند، ممکن است همچنان دسترسی داشته باشند.
ویرایش قوانین
Cloud Storage یک راه آسان برای ویرایش Cloud Storage Security Rules شما از طریق زبانه Rules در بخش Firebase console Storage فراهم می کند. در برگه قوانین ، می توانید به سرعت و به راحتی قوانین فعلی خود را مشاهده و ویرایش کنید. این قوانین با کلیک بر روی انتشار ، یا با ذخیره فایل ( ctrl/cmd + s ) به کار گرفته میشوند. قوانین فوراً در سرورهای Cloud Storage آپلود می شوند، اما ممکن است تا پنج دقیقه طول بکشد تا زنده شوند.
Firebase CLI می تواند برای استقرار قوانین نیز استفاده شود. اگر هنگام اجرای firebase init Storage انتخاب کنید، یک فایل storage.rules با یک کپی از قوانین پیش فرض در فهرست پروژه شما ایجاد می شود. می توانید این قوانین را با استفاده از دستور firebase deploy اجرا کنید. اگر چندین سطل در پروژه خود دارید، میتوانید از Deploy targets برای استقرار قوانین در تمام سطلهای خود به طور همزمان از یک پوشه پروژه استفاده کنید.
در مورد نحوه عملکرد امنیت مبتنی بر فایل در بخش Secure Files یا درک امنیت مبتنی بر کاربر در بخش امنیت کاربر بیشتر بدانید.