إدارة الهوية وإمكانية الوصول (IAM)

عند استخدام مكتبات برامج الخادم لـ Cloud Firestore، يمكنك إدارة إمكانية الوصول إلى مواردك باستخدام خدمة "إدارة الهوية وإمكانية الوصول" (IAM). تتيح لك خدمة "إدارة الهوية وإمكانية الوصول" منح إذن وصول أكثر دقة إلى مراجع Google Cloud معيّنة، كما تمنع الوصول غير المرغوب فيه إلى مراجع أخرى. توضّح هذه الصفحة أذونات وأدوار إدارة الهوية وإمكانية الوصول (IAM) الخاصة بـ Cloud Firestore. للحصول على وصف تفصيلي عن إدارة الهوية وإمكانية الوصول، يُرجى الاطّلاع على مستندات إدارة الهوية وإمكانية الوصول.

تتيح لك خدمة "إدارة الهوية وإمكانية الوصول" اتّباع مبدأ الأمان المستنِد إلى الحدّ الأدنى من الأذونات المميّزة، وبالتالي يمكنك منح الإذن بالوصول إلى مواردك فقط عند الحاجة.

تتيح لك خدمة "إدارة الهوية وإمكانية الوصول" التحكّم في المستخدمين الذين لديهم أدوار تمنحهم أذونات الوصول إلى الموارد من خلال ضبط سياسات "إدارة الهوية وإمكانية الوصول". تمنح سياسات إدارة الهوية وإمكانية الوصول دورًا واحدًا أو أكثر للمستخدم، ما يمنحه أذونات معيّنة. على سبيل المثال، يمكنك منح دور 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
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، تتطلّب كل طريقة API في 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 أذونات "إدارة الهوية وإمكانية الوصول" مؤقتًا لمدة 5 دقائق، لذا يستغرق تطبيق تغيير الدور مدة تصل إلى 5 دقائق.

إدارة Cloud Firestore IAM

يمكنك الحصول على سياسات إدارة الهوية وإمكانية الوصول وتحديدها باستخدام Google Cloud Console أو واجهة برمجة التطبيقات IAM أو أداة سطر الأوامر gcloud. راجِع مقالة منح إذن الوصول إلى أعضاء المشروع وتغييره وإبطاله للحصول على التفاصيل.

ضبط أذونات الوصول الشرطي

يمكنك استخدام شروط إدارة الهوية وإمكانية الوصول لتحديد عناصر التحكّم في الوصول المشروط وفرضها.

على سبيل المثال، يمنح الشرط التالي الجهة الرئيسية 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) لإذن الوصول المؤقت، يُرجى الاطّلاع على ضبط إذن الوصول المؤقت.

لمعرفة كيفية ضبط &quot;شروط إدارة الهوية وإمكانية الوصول&quot; (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 CLI بدلاً من Google Cloud Console، لأنّ دورfirebaserules.system مخفي في وحدة التحكّم تلقائيًا.

الخطوات التالية