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
|
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 की शर्तों का इस्तेमाल करके, शर्त के साथ ऐक्सेस कंट्रोल को तय और लागू किया जा सकता है.
उदाहरण के लिए, यहां दी गई शर्त के तहत, किसी प्रिंसिपल को तय की गई तारीख तक 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 के बारे में ज़्यादा जानें.
- आईएएम की भूमिकाएं असाइन करना.
- पुष्टि करने की प्रोसेस के बारे में जानें.