Cloud Firestore के लिए सर्वर क्लाइंट लाइब्रेरी का इस्तेमाल करने पर, पहचान और ऐक्सेस मैनेजमेंट (आईएएम) की मदद से अपने संसाधनों का ऐक्सेस मैनेज किया जा सकता है. IAM की मदद से, Google Cloud के कुछ संसाधनों को बेहतर तरीके से ऐक्सेस किया जा सकता है. साथ ही, अन्य संसाधनों को अनचाहे ऐक्सेस से बचाया जा सकता है. इस पेज पर, Cloud Firestore के लिए IAM अनुमतियों और भूमिकाओं के बारे में बताया गया है. IAM के बारे में ज़्यादा जानकारी के लिए, IAM का दस्तावेज़ पढ़ें.
IAM की मदद से, कम से कम अधिकारों के सुरक्षा सिद्धांत को अपनाया जा सकता है. इससे आपको अपने संसाधनों का ऐक्सेस सिर्फ़ ज़रूरी लोगों को देने में मदद मिलती है.
IAM की मदद से, IAM नीतियां सेट करके यह कंट्रोल किया जा सकता है कि किस उपयोगकर्ता के पास कौनसी भूमिका के लिए कौनसे संसाधनों की अनुमति है.
IAM नीतियां, किसी उपयोगकर्ता को एक या उससे ज़्यादा भूमिकाएं असाइन करती हैं. इससे उपयोगकर्ता को कुछ अनुमतियां मिलती हैं. उदाहरण के लिए, किसी उपयोगकर्ता को datastore.indexAdminकी भूमिका दी जा सकती है. इससे उपयोगकर्ता इंडेक्स बना सकता है, उनमें बदलाव कर सकता है, उन्हें मिटा सकता है, उनकी सूची बना सकता है या उन्हें देख सकता है.
अनुमतियां और भूमिकाएं
इस सेक्शन में, उन अनुमतियों और भूमिकाओं के बारे में खास जानकारी दी गई है जो Cloud Firestore के साथ काम करती हैं.
एपीआई के तरीकों के लिए ज़रूरी अनुमतियां
यहां दी गई टेबल में, उन अनुमतियों के बारे में बताया गया है जो कॉलर के पास हर कार्रवाई को पूरा करने के लिए होनी चाहिए:
| तरीका | ज़रूरी अनुमतियां |
|---|---|
projects.databases.documents |
|
batchGet |
datastore.entities.get |
batchWrite exists precondition को false पर सेट करके अपडेट या ट्रांसफ़ॉर्म करें |
datastore.entities.create |
batchWrite अपडेट करें या exists precondition को true पर सेट करके बदलें |
datastore.entities.create |
batchWrite अपडेट करना या बदलना, जिसके लिए कोई पूर्व शर्त नहीं है |
datastore.entities.create |
beginTransaction |
datastore.databases.get |
commit exists precondition को false पर सेट करके अपडेट या ट्रांसफ़ॉर्म करें |
datastore.entities.create |
commit एट्रिब्यूट की वैल्यू को अपडेट या ट्रांसफ़ॉर्म करें. इसके लिए, exists precondition एट्रिब्यूट की वैल्यू true पर सेट करें |
datastore.entities.update |
commit अपडेट करना या बदलना, जिसके लिए कोई पूर्व शर्त नहीं है |
datastore.entities.create |
commit मिटाएं |
datastore.entities.delete |
createDocument |
datastore.entities.create |
delete |
datastore.entities.delete |
get |
datastore.entities.get |
list |
datastore.entities.getdatastore.entities.list |
listCollectionIds |
datastore.entities.list |
partitionQuery |
datastore.entities.get |
patch |
datastore.entities.update |
rollback |
datastore.databases.get |
runAggregationQuery |
datastore.entities.get |
runQuery |
datastore.entities.get |
executePipeline (RPC)इनमें से किसी भी स्टेज पर हो: - collection(...)- collection_group(...)- database()
|
datastore.entities.get
|
executePipeline (RPC)इनमें से किसी भी स्टेज पर: - documents(...) |
datastore.entities.get
|
executePipeline (RPC)इनमें से किसी भी स्टेज पर: - update(...) |
datastore.entities.update
|
executePipeline (RPC)इनमें से किसी भी स्टेज पर: - delete(...) |
datastore.entities.delete
|
write (RPC) अपडेट करें या exists precondition को false पर सेट करके बदलें |
datastore.entities.create |
write (RPC) exists precondition को true पर सेट करके अपडेट या ट्रांसफ़ॉर्म करें |
datastore.entities.update |
write (RPC) अपडेट करना या बदलना, जिसके लिए कोई पूर्व शर्त नहीं है |
datastore.entities.create |
write (RPC) मिटाएं |
datastore.entities.delete |
projects.databases.indexes |
|
create |
datastore.schemas.create |
delete |
datastore.schemas.delete |
get |
datastore.schemas.get |
list |
datastore.schemas.list |
projects.databases |
|
create |
datastore.databases.createअगर आपके
अगर आपको यह पुष्टि करनी है कि टैग बाइंडिंग सही तरीके से सेट की गई हैं, तो बाइंडिंग की सूची बनाकर देखें. इसके लिए, इन अतिरिक्त अनुमतियों की ज़रूरत होगी:
|
delete |
datastore.databases.delete |
get |
datastore.databases.getMetadata |
list |
datastore.databases.list |
patch |
datastore.databases.update |
| बहाल करना | datastore.backups.restoreDatabase |
clone |
datastore.databases.cloneअगर आपके
अगर आपको यह पुष्टि करनी है कि टैग बाइंडिंग सही तरीके से सेट की गई हैं या नहीं, तो आपको ये अतिरिक्त अनुमतियां देनी होंगी:
|
projects.locations |
|
get |
datastore.locations.get |
list |
datastore.locations.list |
projects.databases.backupschedules |
|
| पाएँ | datastore.backupSchedules.get |
| सूची | datastore.backupSchedules.list |
| बनाएं | datastore.backupSchedules.create |
| अपडेट करें | datastore.backupSchedules.update |
| मिटाएं | datastore.backupSchedules.delete |
projects.locations.backups |
|
| पाएँ | datastore.backups.get |
| सूची | datastore.backups.list |
| मिटाएं | datastore.backups.delete |
पहले से तय की गई भूमिकाएं
IAM की मदद से, Cloud Firestore में मौजूद हर एपीआई तरीके के लिए यह ज़रूरी है कि एपीआई अनुरोध करने वाले खाते के पास संसाधन का इस्तेमाल करने की ज़रूरी अनुमतियां हों. अनुमतियां देने के लिए, ऐसी नीतियां सेट की जाती हैं जो किसी उपयोगकर्ता, ग्रुप या सेवा खाते को भूमिकाएं असाइन करती हैं. प्राइमरी भूमिकाओं, मालिक, एडिटर, और दर्शक के अलावा, अपने प्रोजेक्ट के उपयोगकर्ताओं को Cloud Firestore भूमिकाएं असाइन की जा सकती हैं.
यहां दी गई टेबल में, Cloud Firestore IAM भूमिकाओं की सूची दी गई है. किसी उपयोगकर्ता, ग्रुप या सेवा खाते को एक से ज़्यादा भूमिकाएं असाइन की जा सकती हैं.
| भूमिका | अनुमतियां | ब्यौरा |
|---|---|---|
roles/datastore.owner |
appengine.applications.getdatastore.*resourcemanager.projects.getresourcemanager.projects.list |
Cloud Firestore का पूरा ऐक्सेस. |
roles/datastore.user |
appengine.applications.getdatastore.databases.getdatastore.databases.getMetadatadatastore.databases.listdatastore.entities.*datastore.schemas.listdatastore.namespaces.getdatastore.namespaces.listdatastore.statistics.getdatastore.statistics.listresourcemanager.projects.getresourcemanager.projects.list |
Cloud Firestore डेटाबेस में मौजूद डेटा को पढ़ने/लिखने का ऐक्सेस. यह ऐप्लिकेशन डेवलपर और सेवा खातों के लिए है. |
roles/datastore.viewer |
appengine.applications.getdatastore.databases.getdatastore.databases.getMetadatadatastore.databases.listdatastore.entities.getdatastore.entities.listdatastore.schemas.getdatastore.schemas.listdatastore.namespaces.getdatastore.namespaces.listdatastore.statistics.getdatastore.statistics.listresourcemanager.projects.getresourcemanager.projects.listdatastore.insights.get |
Cloud Firestore के सभी संसाधनों को पढ़ने का ऐक्सेस. |
roles/datastore.importExportAdmin |
appengine.applications.getdatastore.databases.exportdatastore.databases.getMetadatadatastore.databases.importdatastore.operations.canceldatastore.operations.getdatastore.operations.listresourcemanager.projects.getresourcemanager.projects.list |
इंपोर्ट और एक्सपोर्ट मैनेज करने का पूरा ऐक्सेस. |
roles/datastore.bulkAdmin |
resourcemanager.projects.getresourcemanager.projects.listdatastore.databases.getMetadatadatastore.databases.bulkDeletedatastore.operations.canceldatastore.operations.getdatastore.operations.list |
एक साथ कई कार्रवाइयां मैनेज करने का पूरा ऐक्सेस. |
roles/datastore.indexAdmin |
appengine.applications.getdatastore.databases.getMetadatadatastore.schemas.*datastore.operations.listdatastore.operations.getresourcemanager.projects.getresourcemanager.projects.list |
इंडेक्स की परिभाषाओं को मैनेज करने का पूरा ऐक्सेस. |
roles/datastore.keyVisualizerViewer |
datastore.databases.getMetadatadatastore.keyVisualizerScans.getdatastore.keyVisualizerScans.listresourcemanager.projects.getresourcemanager.projects.list |
Key Visualizer के स्कैन का पूरा ऐक्सेस. |
roles/datastore.backupSchedulesViewer |
datastore.backupSchedules.getdatastore.backupSchedules.list |
Cloud Firestore डेटाबेस में बैकअप शेड्यूल को पढ़ने का ऐक्सेस. |
roles/datastore.backupSchedulesAdmin |
datastore.backupSchedules.getdatastore.backupSchedules.listdatastore.backupSchedules.createdatastore.backupSchedules.updatedatastore.backupSchedules.deletedatastore.databases.listdatastore.databases.getMetadata |
Cloud Firestore डेटाबेस में बैकअप शेड्यूल का पूरा ऐक्सेस. |
roles/datastore.backupsViewer |
datastore.backups.getdatastore.backups.list |
Cloud Firestore लोकेशन में बैकअप की जानकारी को पढ़ने की अनुमति. |
roles/datastore.backupsAdmin |
datastore.backups.getdatastore.backups.listdatastore.backups.delete |
Cloud Firestore लोकेशन में बैकअप का पूरा ऐक्सेस. |
roles/datastore.restoreAdmin |
datastore.backups.getdatastore.backups.listdatastore.backups.restoreDatabasedatastore.databases.listdatastore.databases.createdatastore.databases.getMetadatadatastore.operations.listdatastore.operations.get |
Cloud Firestore बैकअप को नए डेटाबेस में वापस लाने की सुविधा. इस भूमिका के तहत, नए डेटाबेस भी बनाए जा सकते हैं. इसके लिए, बैकअप से डेटाबेस को वापस लाने की ज़रूरत नहीं होती. |
roles/datastore.cloneAdmin |
datastore.databases.clonedatastore.databases.listdatastore.databases.createdatastore.databases.getMetadatadatastore.operations.listdatastore.operations.get |
Cloud Firestore डेटाबेस को नए डेटाबेस में क्लोन करने की सुविधा. इस भूमिका के तहत, नए डेटाबेस भी बनाए जा सकते हैं. इसके लिए, क्लोनिंग करना ज़रूरी नहीं है. |
roles/datastore.statisticsViewer |
resourcemanager.projects.getresourcemanager.projects.listdatastore.databases.getMetadatadatastore.insights.getdatastore.keyVisualizerScans.getdatastore.keyVisualizerScans.listdatastore.statistics.listdatastore.statistics.get |
आंकड़ों, इनसाइट, और Key Visualizer के स्कैन को पढ़ने का ऐक्सेस. |
कस्टम रोल
अगर पहले से तय की गई भूमिकाएं, आपके कारोबार की ज़रूरतों को पूरा नहीं करती हैं, तो अपनी ज़रूरत के हिसाब से कस्टम भूमिकाएं तय की जा सकती हैं. इसके लिए, आपको अपनी पसंद की अनुमतियां तय करनी होंगी:
टैग बनाने और मैनेज करने के लिए ज़रूरी भूमिकाएं
अगर किसी टैग को बनाने या वापस लाने के लिए कार्रवाइयां की जाती हैं, तो कुछ भूमिकाएं ज़रूरी होती हैं. डेटाबेस रिसॉर्स से टैग को जोड़ने से पहले, टैग के मुख्य-वैल्यू पेयर बनाने के बारे में ज़्यादा जानने के लिए, टैग बनाना और उन्हें मैनेज करना लेख पढ़ें.
यहां दी गई अनुमतियां ज़रूरी हैं.
टैग देखें
datastore.databases.listTagBindingsdatastore.databases.listEffectiveTags
संसाधनों पर टैग मैनेज करना
टैग वैल्यू अटैच करने के लिए, डेटाबेस रिसॉर्स के लिए यह अनुमति ज़रूरी है.
datastore.databases.createTagBinding
अनुमतियां
यहां दी गई टेबल में, Cloud Firestore के साथ काम करने वाली अनुमतियों की सूची दी गई है.
| डेटाबेस की अनुमति का नाम | ब्यौरा | |
|---|---|---|
datastore.databases.get |
किसी ट्रांजै़क्शन को शुरू करना या उसे पहले जैसा करना. | |
datastore.databases.import |
डेटाबेस में इकाइयां इंपोर्ट करें. | |
datastore.databases.export |
किसी डेटाबेस से इकाइयां एक्सपोर्ट करें. | |
datastore.databases.bulkDelete |
डेटाबेस से एक साथ कई इकाइयां मिटाएं. | |
datastore.databases.getMetadata |
किसी डेटाबेस से मेटाडेटा पढ़ता है. | |
datastore.databases.list |
किसी प्रोजेक्ट में मौजूद डेटाबेस की सूची बनाएं. | |
datastore.databases.create |
डेटाबेस बनाएं. | |
datastore.databases.update |
किसी डेटाबेस को अपडेट करें. | |
datastore.databases.delete |
किसी डेटाबेस को मिटाना. | |
datastore.databases.clone |
डेटाबेस को क्लोन करना. | |
datastore.databases.createTagBinding |
किसी डेटाबेस के लिए टैग बाइंडिंग बनाएं. | |
datastore.databases.deleteTagBinding |
किसी डेटाबेस के लिए टैग बाइंडिंग मिटाता है. | |
datastore.databases.listTagBindings |
किसी डेटाबेस के लिए सभी टैग बाइंडिंग की सूची बनाएं. | |
datastore.databases.listEffectiveTagBindings |
किसी डेटाबेस के लिए, टैग बाइंडिंग की असरदार सूची बनाएं. | |
| इकाई की अनुमति का नाम | ब्यौरा | |
datastore.entities.create |
कोई दस्तावेज़ बनाना. | |
datastore.entities.delete |
किसी दस्तावेज़ को मिटाना. | |
datastore.entities.get |
किसी दस्तावेज़ को पढ़ना. | |
datastore.entities.list |
किसी प्रोजेक्ट में मौजूद दस्तावेज़ों के नाम की सूची बनाएं. (दस्तावेज़ का डेटा ऐक्सेस करने के लिए datastore.entities.get ज़रूरी है.) |
|
datastore.entities.update |
किसी दस्तावेज़ को अपडेट करें. | |
| इंडेक्स करने की अनुमति का नाम | ब्यौरा | |
datastore.schemas.create |
कोई इंडेक्स बनाएं. | |
datastore.schemas.delete |
किसी इंडेक्स को मिटाना. | |
datastore.schemas.get |
किसी इंडेक्स से मेटाडेटा पढ़ना. | |
datastore.schemas.list |
किसी प्रोजेक्ट में मौजूद इंडेक्स की सूची बनाना. | |
datastore.schemas.update |
किसी इंडेक्स को अपडेट करना. | |
| कार्रवाई की अनुमति का नाम | ब्यौरा | |
datastore.operations.cancel |
ज़्यादा समय तक चलने वाली कार्रवाई रद्द करें. | |
datastore.operations.delete |
ज़्यादा समय तक चलने वाली कार्रवाई मिटाता है. | |
datastore.operations.get |
इस तरीके से, ज़्यादा समय तक चलने वाली कार्रवाई की मौजूदा स्थिति मिलती है. | |
datastore.operations.list |
ज़्यादा समय तक चलने वाली कार्रवाइयों की सूची बनाएं. | |
| प्रोजेक्ट की अनुमति का नाम | ब्यौरा | |
resourcemanager.projects.get |
प्रोजेक्ट में मौजूद संसाधन ब्राउज़ करें. | |
resourcemanager.projects.list |
उन प्रोजेक्ट की सूची बनाएं जिनका मालिकाना हक आपके पास है. | |
| जगह की जानकारी की अनुमति का नाम | ब्यौरा | |
datastore.locations.get |
डेटाबेस की जगह की जानकारी पाएं. नया डेटाबेस बनाने के लिए ज़रूरी है. | |
datastore.locations.list |
डेटाबेस के लिए उपलब्ध जगहों की सूची बनाएं. नया डेटाबेस बनाने के लिए ज़रूरी है. | |
| Key Visualizer टूल की अनुमति का नाम | ब्यौरा | |
datastore.keyVisualizerScans.get |
Key Visualizer स्कैन के बारे में जानकारी पाएं. | |
datastore.keyVisualizerScans.list |
Key Visualizer के उपलब्ध स्कैन की सूची बनाएं. | |
| बैकअप शेड्यूल करने की अनुमति का नाम | ब्यौरा | |
datastore.backupSchedules.get |
बैकअप के शेड्यूल के बारे में जानकारी पाएं. | |
datastore.backupSchedules.list |
बैकअप के उपलब्ध शेड्यूल की सूची. | |
datastore.backupSchedules.create |
बैकअप लेने का शेड्यूल बनाएं. | |
datastore.backupSchedules.update |
बैकअप शेड्यूल को अपडेट करना. | |
datastore.backupSchedules.delete |
बैकअप का शेड्यूल मिटाएं. | |
| बैकअप लेने की अनुमति का नाम | ब्यौरा | |
datastore.backups.get |
बैकअप के बारे में जानकारी पाएं. | |
datastore.backups.list |
उपलब्ध बैकअप की सूची दिखाएं. | |
datastore.backups.delete |
बैकअप मिटाना. | |
datastore.backups.restoreDatabase |
बैकअप से डेटाबेस वापस लाएं. | |
| अहम जानकारी से जुड़ी अनुमति का नाम | ब्यौरा | |
datastore.insights.get |
किसी संसाधन की अहम जानकारी पाना |
भूमिका में बदलाव होने में लगने वाला समय
Cloud Firestore आईएएम की अनुमतियों को पांच मिनट के लिए कैश मेमोरी में सेव करता है. इसलिए, भूमिका में किए गए बदलाव को लागू होने में पांच मिनट लग सकते हैं.
Cloud Firestore IAM को मैनेज करना
Google Cloud console, IAM API या gcloud कमांड-लाइन टूल का इस्तेमाल करके, IAM नीतियां पाई और सेट की जा सकती हैं. ज़्यादा जानकारी के लिए, प्रोजेक्ट के सदस्यों को ऐक्सेस देना, ऐक्सेस में बदलाव करना, और ऐक्सेस रद्द करना लेख पढ़ें.
शर्त के हिसाब से ऐक्सेस करने की अनुमतियां कॉन्फ़िगर करना
IAM की शर्तों का इस्तेमाल करके, शर्तों के साथ ऐक्सेस कंट्रोल को लागू किया जा सकता है.
उदाहरण के लिए, यहां दी गई शर्त के मुताबिक, किसी प्रिंसिपल को तय की गई तारीख तक datastore.user भूमिका असाइन की जाती है:
{
"role": "roles/datastore.user",
"members": [
"user:travis@example.com"
],
"condition": {
"title": "Expires_December_1_2023",
"description": "Expires on December 1, 2023",
"expression":
"request.time < timestamp('2023-12-01T00:00:00.000Z')"
}
}
कुछ समय के लिए ऐक्सेस देने के लिए, IAM की शर्तें तय करने का तरीका जानने के लिए, कुछ समय के लिए ऐक्सेस कॉन्फ़िगर करना लेख पढ़ें.
एक या उससे ज़्यादा डेटाबेस के ऐक्सेस के लिए, IAM की शर्तें कॉन्फ़िगर करने का तरीका जानने के लिए, डेटाबेस के ऐक्सेस की शर्तें कॉन्फ़िगर करना लेख पढ़ें.
सुरक्षा के नियम का आईएएम पर निर्भर होना
मोबाइल/वेब क्लाइंट के लिए Cloud Firestore Security Rules, सेवा खाते और आईएएम बाइंडिंग पर निर्भर करता है:
| सेवा खाता | IAM भूमिका |
|---|---|
service-project_number@firebase-rules.iam.gserviceaccount.com |
roles/firebaserules.system |
Firebase आपके लिए यह सेवा खाता अपने-आप सेट अप कर देता है. इस सेवा खाते से firebaserules.system की भूमिका हटाने पर, सुरक्षा से जुड़े आपके नियम सभी अनुरोधों को अस्वीकार कर देंगे. इस आईएएम बाइंडिंग को वापस लाने के लिए, gcloud CLI कमांड का इस्तेमाल करें:
gcloud projects add-iam-policy-binding project_id \ --member=serviceAccount:service-project_number@firebase-rules.iam.gserviceaccount.com \ --role=roles/firebaserules.system
अपने project_id और project_number का पता लगाने के लिए, प्रोजेक्ट की पहचान करना लेख पढ़ें.
Google Cloud Console के बजाय Google Cloud CLI का इस्तेमाल करें, क्योंकि कंसोल में firebaserules.system की भूमिका डिफ़ॉल्ट रूप से छिपी होती है.
आगे क्या करना है
- IAM के बारे में ज़्यादा जानें.
- आईएएम की भूमिकाएं असाइन करें.
- प्रमाणीकरण के बारे में जानें.