Google अश्वेत समुदायों के लिए नस्लीय इक्विटी को आगे बढ़ाने के लिए प्रतिबद्ध है। देखो कैसे।
इस पेज का अनुवाद Cloud Translation API से किया गया है.
Switch to English

सुरक्षित उपयोगकर्ता डेटा

क्लाउड स्टोरेज के लिए फायरबेस सुरक्षा नियम क्लाउड स्टोरेज के लिए शक्तिशाली उपयोगकर्ता आधारित प्रमाणीकरण प्रदान करने के लिए फायरबेस प्रमाणीकरण के साथ एकीकृत करता है। यह फायरबेस प्रमाणीकरण प्रमाणीकरण के दावों के आधार पर बारीक अभिगम नियंत्रण की अनुमति देता है।

प्रयोक्ता प्रमाणीकरण

जब एक प्रमाणित उपयोगकर्ता क्लाउड स्टोरेज के खिलाफ एक अनुरोध करता है, तो request.auth चर उपयोगकर्ता के uid ( request.auth.uid ) के साथ-साथ Firebase प्रमाणीकरण JWT ( request.auth.token ) के दावों के साथ आबादी है।

इसके अतिरिक्त, कस्टम प्रमाणीकरण का उपयोग करते समय, request.auth.token फ़ील्ड में अतिरिक्त दावे सामने आते हैं।

जब कोई unauthenticated उपयोगकर्ता अनुरोध करता है, तो request.auth चर null

इस डेटा का उपयोग करके, फ़ाइलों को सुरक्षित करने के लिए प्रमाणीकरण का उपयोग करने के कई सामान्य तरीके हैं:

  • जनता: request.auth अनदेखा करें
  • प्रमाणित निजी: यह जाँच करें कि request.auth null नहीं है
  • उपयोगकर्ता निजी: यह जांच करें कि request.auth.uid एक पथ uid बराबर है
  • समूह निजी: चुने गए दावे से मिलान करने के लिए कस्टम टोकन के दावों की जांच करें, या मेटाडेटा फ़ील्ड मौजूद होने पर देखने के लिए फ़ाइल मेटाडेटा पढ़ें

जनता

कोई भी नियम जो request.auth संदर्भ पर विचार नहीं करता है, उसे एक public नियम माना जा सकता है, क्योंकि यह उपयोगकर्ता के प्रमाणीकरण संदर्भ पर विचार नहीं करता है। ये नियम सार्वजनिक डेटा जैसे गेम एसेट्स, साउंड फाइल्स या अन्य स्टैटिक कंटेंट को सर्फ करने के लिए उपयोगी हो सकते हैं।

// Anyone to read a public image if the file is less than 100kB
// Anyone can upload a public file ending in '.txt'
match /public/{imageId} {
  allow read: if resource.size < 100 * 1024;
  allow write: if imageId.matches(".*\\.txt");
}

प्रमाणित निजी

कुछ मामलों में, आप चाहते हैं कि डेटा आपके एप्लिकेशन के सभी प्रमाणित उपयोगकर्ताओं द्वारा देखा जा सके, लेकिन अनधिकृत उपयोगकर्ताओं द्वारा नहीं। चूँकि request.auth वैरिएबल सभी unauthenticated उपयोगकर्ताओं के लिए null , आपको बस इतना करना है कि request.auth वैरिएबल की जाँच करें ताकि प्रमाणीकरण की आवश्यकता हो:

// Require authentication on all internal image reads
match /internal/{imageId} {
  allow read: if request.auth != null;
}

उपयोगकर्ता निजी

अब तक request.auth लिए सबसे आम उपयोग मामला अलग-अलग उपयोगकर्ताओं को अपनी फ़ाइलों पर दानेदार अनुमति प्रदान करने के लिए होगा: प्रोफ़ाइल चित्र अपलोड करने से लेकर निजी दस्तावेज़ पढ़ने तक।

चूंकि क्लाउड स्टोरेज की फाइलों में फाइल का पूरा रास्ता होता है, इसलिए उपयोगकर्ता द्वारा नियंत्रित फाइल बनाने के लिए सभी को एक अनोखा काम करना पड़ता है, उपयोगकर्ता फाइल पथ में जानकारी की पहचान करता है (जैसे कि उपयोगकर्ता का uid ) जिसे चेक किया जा सकता है नियम का मूल्यांकन किया जाता है:

// Only a user can upload their profile picture, but anyone can view it
match /users/{userId}/profilePicture.png {
  allow read;
  allow write: if request.auth != null && request.auth.uid == userId;
}

समूह निजी

एक अन्य समान रूप से सामान्य उपयोग का मामला एक वस्तु पर समूह की अनुमति देने के लिए होगा, जैसे कि टीम के कई सदस्यों को एक साझा दस्तावेज़ पर सहयोग करने की अनुमति देना। ऐसा करने के लिए कई दृष्टिकोण हैं:

  • टकसाल एक फायरबेस प्रमाणीकरण कस्टम टोकन जिसमें समूह सदस्य के बारे में अतिरिक्त जानकारी होती है (जैसे समूह आईडी)
  • फ़ाइल मेटाडेटा में समूह की जानकारी (जैसे समूह आईडी या अधिकृत uid एस की सूची) शामिल करें

एक बार जब यह डेटा टोकन या फ़ाइल मेटाडेटा में संग्रहीत किया जाता है, तो इसे एक नियम के भीतर से संदर्भित किया जा सकता है:

// Allow reads if the group ID in your token matches the file metadata's `owner` property
// Allow writes if the group ID is in the user's custom token
match /files/{groupId}/{fileName} {
  allow read: if resource.metadata.owner == request.auth.token.groupId;
  allow write: if request.auth.token.groupId == groupId;
}

पूर्ण उदाहरण

चार सामान्य प्रकार के प्रमाणीकरण प्रतिबंधों के सरल मामले नीचे दिए गए उदाहरण में दिखाए गए हैं:

service firebase.storage {
  match /b/{bucket}/o {
    match /images {
      // Anyone can view any image (no auth, publicly readable)
      match /{allImages=**} {
        allow read;
      }

      // Only authenticated users can write to "public" images
      match /public/{imageId} {
        allow write: if request.auth != null;
      }

      // Only an individual user can write to "their" images
      match /{userId}/{imageId} {
        allow write: if request.auth.uid == userId;
      }

      // Allow a "group" of users to read/write to shared images
      // An owner metadata property on the object contains the groupId for reads
      // A custom token has been minted with a groupId property for writes
      match /{groupId}/{imageId} {
        allow read: if resource.metadata.owner == request.auth.token.groupId;
        allow write: if request.auth.token.groupId == groupId;
      }
    }
  }
}