Cloud Storage के लिए Firebase के सुरक्षा नियमों को समझना

आम तौर पर, सुरक्षा को ऐप्लिकेशन डेवलपमेंट के सबसे मुश्किल हिस्सों में से एक माना जाता है. ज़्यादातर ऐप्लिकेशन में, डेवलपर को एक ऐसा सर्वर बनाना और चलाना होता है जो पुष्टि (उपयोगकर्ता कौन है) और अनुमति (उपयोगकर्ता क्या कर सकता है) को मैनेज करता है. पुष्टि करने और अनुमति देने की प्रोसेस को सेट अप करना मुश्किल होता है. साथ ही, इसे सही तरीके से लागू करना और भी मुश्किल होता है. हालांकि, आपके प्रॉडक्ट की सफलता के लिए यह प्रोसेस बहुत ज़रूरी है.

जिस तरह Firebase Authentication की मदद से, उपयोगकर्ताओं की पुष्टि करना आसान हो जाता है उसी तरह Cloud Storage के लिए Firebase Security Rules की मदद से, उपयोगकर्ताओं को अनुमति देना और अनुरोधों की पुष्टि करना आसान हो जाता है. Cloud Storage Security Rules आपके लिए जटिलता को मैनेज करता है. इसके लिए, यह आपको पाथ के आधार पर अनुमतियां तय करने की सुविधा देता है. कोड की कुछ ही लाइनों में, अनुमति देने के नियम लिखे जा सकते हैं. इन नियमों से, किसी उपयोगकर्ता के Cloud Storage अनुरोधों को सीमित किया जा सकता है या अपलोड किए जाने वाले डेटा का साइज़ सीमित किया जा सकता है.

Firebase Realtime Database में भी ऐसी ही सुविधा है. इसे Firebase Realtime Database Security Rules कहा जाता है

पुष्टि करना

ऐप्लिकेशन बनाने के लिए, यह जानना ज़रूरी है कि आपके उपयोगकर्ता कौन हैं. साथ ही, Firebase Authentication पुष्टि करने के लिए, इस्तेमाल में आसान, सुरक्षित, और सिर्फ़ क्लाइंट-साइड वाला समाधान उपलब्ध कराता है. Cloud Storage के लिए Firebase Security Rules, उपयोगकर्ता की सुरक्षा के लिए Firebase Authentication से जुड़ा है. जब किसी उपयोगकर्ता की पुष्टि Firebase Authentication से की जाती है, तो Cloud Storage Security Rules में मौजूद request.auth वैरिएबल एक ऑब्जेक्ट बन जाता है. इसमें उपयोगकर्ता का यूनीक आईडी (request.auth.uid) और टोकन में मौजूद उपयोगकर्ता की अन्य सभी जानकारी (request.auth.token) शामिल होती है. जब उपयोगकर्ता की पुष्टि नहीं की जाती है, तो request.auth, null होता है. इससे आपको हर उपयोगकर्ता के हिसाब से, डेटा ऐक्सेस को सुरक्षित तरीके से कंट्रोल करने की सुविधा मिलती है. ज़्यादा जानने के लिए, प्रमाणीकरण सेक्शन पर जाएं.

अनुमति देना

उपयोगकर्ता की पहचान करना, सुरक्षा का सिर्फ़ एक हिस्सा है. आपको यह पता चल गया है कि वे कौन हैं. अब आपको यह तय करना है कि Cloud Storage में मौजूद फ़ाइलों का ऐक्सेस उनके पास होना चाहिए या नहीं.

Cloud Storage की मदद से, हर फ़ाइल और हर पाथ के लिए अनुमति देने के नियम तय किए जा सकते हैं. ये नियम हमारे सर्वर पर मौजूद होते हैं और इनसे यह तय होता है कि आपके ऐप्लिकेशन में मौजूद फ़ाइलों को कौन ऐक्सेस कर सकता है. उदाहरण के लिए, डिफ़ॉल्ट Cloud Storage Security Rules को सभी फ़ाइलों पर कोई भी read या write कार्रवाई करने के लिए, Firebase Authentication की ज़रूरत होती है:

service firebase.storage {
  match /b/{bucket}/o {
    match /someFolder/{fileName} {
      allow read, write: if request.auth != null;
    }
  }
}

इन नियमों में बदलाव करने के लिए, Firebase कंसोल में जाकर कोई Firebase ऐप्लिकेशन चुनें. इसके बाद, स्टोरेज सेक्शन का Rules टैब देखें.

डेटा सत्यापन

Firebase Security Rules का इस्तेमाल, डेटा की पुष्टि करने के लिए भी किया जा सकता है. जैसे, फ़ाइल के नाम और पाथ की पुष्टि करना. इसके अलावा, फ़ाइल के मेटाडेटा की प्रॉपर्टी की पुष्टि करना. जैसे, contentType और size.Cloud Storage

service firebase.storage {
  match /b/{bucket}/o {
    match /images/{imageId} {
      // Only allow uploads of any image file that's less than 5MB
      allow write: if request.resource.size < 5 * 1024 * 1024
                   && request.resource.contentType.matches('image/.*');
    }
  }
}

अगले चरण