Cloud Firestore के लिए सर्वर क्लाइंट लाइब्रेरी का इस्तेमाल करने पर, पहचान और ऐक्सेस मैनेजमेंट (आईएएम) की मदद से अपने संसाधनों का ऐक्सेस मैनेज किया जा सकता है. IAM की मदद से, Google Cloud के चुनिंदा संसाधनों को बेहतर तरीके से ऐक्सेस किया जा सकता है. साथ ही, अन्य संसाधनों को अनचाहे ऐक्सेस से बचाया जा सकता है. इस पेज पर, Cloud Firestore के लिए 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
|
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 के बारे में ज़्यादा जानें.
- आईएएम की भूमिकाएं असाइन करना.
- प्रमाणीकरण के बारे में जानें.