पहचान और ऐक्सेस मैनेजमेंट (आईएएम)

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
datastore.entities.update
beginTransaction datastore.databases.get
commit को exists precondition के साथ अपडेट या ट्रांसफ़ॉर्म करें, जिसे false पर सेट किया गया है datastore.entities.create
commit को exists precondition के साथ अपडेट या ट्रांसफ़ॉर्म करें, जिसे true पर सेट किया गया है datastore.entities.update
commit को अपडेट या ट्रांसफ़ॉर्म करने के लिए, कोई शर्त नहीं है datastore.entities.create
datastore.entities.update
commit मिटाएं datastore.entities.delete
createDocument datastore.entities.create
delete datastore.entities.delete
get datastore.entities.get
list datastore.entities.get
datastore.entities.list
listCollectionIds datastore.entities.list
partitionQuery datastore.entities.get
datastore.entities.list
patch datastore.entities.update
rollback datastore.databases.get
runAggregationQuery datastore.entities.get
datastore.entities.list
runQuery datastore.entities.get
datastore.entities.list
executePipeline (RPC)

इनमें से किसी भी स्टेज के साथ:
- collection(...)
- collection_group(...)
- database()
datastore.entities.get
datastore.entities.list
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
datastore.entities.update
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

अगर आपके create अनुरोध में tags वैल्यू शामिल है, तो ये अतिरिक्त अनुमतियां ज़रूरी हैं:

  • datastore.databases.createTagBinding

अगर आपको यह पुष्टि करनी है कि टैग बाइंडिंग को सही तरीके से सेट किया गया है या नहीं, तो बाइंडिंग की सूची बनाएं. इसके लिए, आपके पास ये अतिरिक्त अनुमतियां होनी चाहिए:

  • datastore.databases.listTagBindings
  • datastore.databases.listEffectiveTags
delete datastore.databases.delete
get datastore.databases.getMetadata
list datastore.databases.list
patch datastore.databases.update
बहाल करना datastore.backups.restoreDatabase
clone datastore.databases.clone

अगर आपके clone अनुरोध में tags वैल्यू शामिल है, तो ये अतिरिक्त अनुमतियां ज़रूरी हैं:

  • datastore.databases.createTagBinding

अगर आपको यह पुष्टि करनी है कि टैग बाइंडिंग को सही तरीके से सेट किया गया है या नहीं, तो बाइंडिंग की सूची बनाएं. इसके लिए, आपके पास ये अतिरिक्त अनुमतियां होनी चाहिए:

  • datastore.databases.listTagBindings
  • datastore.databases.listEffectiveTags
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.get

datastore.*

resourcemanager.projects.get
resourcemanager.projects.list
Cloud Firestore का पूरा ऐक्सेस.
roles/datastore.user appengine.applications.get

datastore.databases.get
datastore.databases.getMetadata
datastore.databases.list
datastore.entities.*
datastore.schemas.list
datastore.namespaces.get
datastore.namespaces.list
datastore.statistics.get
datastore.statistics.list

resourcemanager.projects.get
resourcemanager.projects.list
Cloud Firestore डेटाबेस में मौजूद डेटा को पढ़ने/लिखने का ऐक्सेस. यह ऐप्लिकेशन डेवलपर और सेवा खातों के लिए है.
roles/datastore.viewer appengine.applications.get

datastore.databases.get
datastore.databases.getMetadata
datastore.databases.list
datastore.entities.get
datastore.entities.list
datastore.schemas.get
datastore.schemas.list
datastore.namespaces.get
datastore.namespaces.list
datastore.statistics.get
datastore.statistics.list

resourcemanager.projects.get
resourcemanager.projects.list

datastore.insights.get
Cloud Firestore के सभी संसाधनों को पढ़ने का ऐक्सेस.
roles/datastore.importExportAdmin appengine.applications.get
datastore.databases.export
datastore.databases.getMetadata
datastore.databases.import
datastore.operations.cancel
datastore.operations.get
datastore.operations.list
resourcemanager.projects.get
resourcemanager.projects.list
इंपोर्ट और एक्सपोर्ट को मैनेज करने का पूरा ऐक्सेस.
roles/datastore.bulkAdmin resourcemanager.projects.get
resourcemanager.projects.list
datastore.databases.getMetadata
datastore.databases.bulkDelete
datastore.operations.cancel
datastore.operations.get
datastore.operations.list
एक साथ कई कार्रवाइयां मैनेज करने का पूरा ऐक्सेस.
roles/datastore.indexAdmin appengine.applications.get

datastore.databases.getMetadata

datastore.schemas.*

datastore.operations.list

datastore.operations.get

resourcemanager.projects.get
resourcemanager.projects.list
इंडेक्स की परिभाषाओं को मैनेज करने का पूरा ऐक्सेस.
roles/datastore.keyVisualizerViewer datastore.databases.getMetadata
datastore.keyVisualizerScans.get
datastore.keyVisualizerScans.list
resourcemanager.projects.get
resourcemanager.projects.list
Key Visualizer के स्कैन का पूरा ऐक्सेस.
roles/datastore.backupSchedulesViewer datastore.backupSchedules.get
datastore.backupSchedules.list
Cloud Firestore डेटाबेस में, बैकअप शेड्यूल को पढ़ने का ऐक्सेस.
roles/datastore.backupSchedulesAdmin datastore.backupSchedules.get
datastore.backupSchedules.list
datastore.backupSchedules.create
datastore.backupSchedules.update
datastore.backupSchedules.delete
datastore.databases.list
datastore.databases.getMetadata
Cloud Firestore डेटाबेस में बैकअप शेड्यूल का पूरा ऐक्सेस.
roles/datastore.backupsViewer datastore.backups.get
datastore.backups.list
Cloud Firestore जगह पर बैकअप की जानकारी को ऐक्सेस करने की अनुमति.
roles/datastore.backupsAdmin datastore.backups.get
datastore.backups.list
datastore.backups.delete
Cloud Firestore जगह पर बैकअप का पूरा ऐक्सेस.
roles/datastore.restoreAdmin datastore.backups.get
datastore.backups.list
datastore.backups.restoreDatabase
datastore.databases.list
datastore.databases.create
datastore.databases.getMetadata
datastore.operations.list
datastore.operations.get
Cloud Firestore बैकअप को नए डेटाबेस में वापस लाने की सुविधा. इस भूमिका से, नए डेटाबेस भी बनाए जा सकते हैं. इसके लिए, बैकअप से डेटा वापस लाना ज़रूरी नहीं है.
roles/datastore.cloneAdmin datastore.databases.clone
datastore.databases.list
datastore.databases.create
datastore.databases.getMetadata
datastore.operations.list
datastore.operations.get
Cloud Firestore डेटाबेस को नए डेटाबेस में क्लोन करने की सुविधा. इस भूमिका में, नए डेटाबेस भी बनाए जा सकते हैं. इसके लिए, क्लोन करना ज़रूरी नहीं है.
roles/datastore.statisticsViewer resourcemanager.projects.get
resourcemanager.projects.list
datastore.databases.getMetadata
datastore.insights.get
datastore.keyVisualizerScans.get
datastore.keyVisualizerScans.list
datastore.statistics.list
datastore.statistics.get
अहम जानकारी, आंकड़ों, और Key Visualizer स्कैन को पढ़ने का ऐक्सेस.

कस्टम रोल

अगर पहले से तय की गई भूमिकाएं आपके कारोबार की ज़रूरतों के मुताबिक नहीं हैं, तो अपनी पसंद के मुताबिक कस्टम भूमिकाएं तय की जा सकती हैं. इसके लिए, आपको अपनी पसंद की अनुमतियां देनी होंगी:

टैग बनाने और मैनेज करने के लिए ज़रूरी भूमिकाएं

अगर किसी टैग को बनाने या वापस लाने की कार्रवाइयों में दिखाया जाता है, तो कुछ भूमिकाएं ज़रूरी होती हैं. डेटाबेस के संसाधनों से जोड़ने से पहले, टैग के लिए की-वैल्यू पेयर बनाने के बारे में ज़्यादा जानने के लिए, टैग बनाना और मैनेज करना लेख पढ़ें.

यहां दी गई अनुमतियां ज़रूरी हैं.

टैग देखें
  • datastore.databases.listTagBindings
  • datastore.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 भूमिका, कंसोल में डिफ़ॉल्ट रूप से छिपी होती है.

आगे क्या करना है