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

عند استخدام مكتبات برامج الخادم لـ Cloud Firestore، يمكنك إدارة إمكانية الوصول إلى مواردك باستخدام خدمة "إدارة الهوية وإمكانية الوصول" (IAM). تتيح لك خدمة "إدارة الهوية وإمكانية الوصول" منح إذن وصول أكثر دقة إلى مراجع Google Cloud معيّنة، كما تمنع الوصول غير المرغوب فيه إلى مراجع أخرى. توضّح هذه الصفحة أذونات وأدوار "إدارة الهوية وإمكانية الوصول" في 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
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، تتطلّب كل طريقة 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
إذن الوصول إلى عمليات فحص "الإحصاءات" و"المخطط المرئي الرئيسي" و"الإحصاءات" للقراءة

الأدوار المخصّصة

إذا لم تلِ الأدوار المحدّدة مسبقًا متطلبات نشاطك التجاري، يمكنك تحديد أدوار مخصّصة تتضمّن الأذونات التي تحدّدها:

الأدوار المطلوبة لإنشاء العلامات وإدارتها

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

يجب منح الأذونات المدرَجة أدناه.

عرض العلامات
  • 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 أذونات "إدارة الهوية وإمكانية الوصول" (IAM) مؤقتًا لمدة 5 دقائق، لذا يستغرق تطبيق تغيير الدور مدة تصل إلى 5 دقائق.

إدارة "إدارة الهوية وإمكانية الوصول" في Cloud Firestore

يمكنك الحصول على سياسات IAM وضبطها باستخدام "وحدة تحكّم Google Cloud" أو واجهة برمجة تطبيقات 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; للوصول إلى قاعدة بيانات واحدة أو أكثر، يُرجى الاطّلاع على ضبط شروط الوصول إلى قاعدة البيانات.

اعتماد قاعدة الأمان على "إدارة الهوية وإمكانية الوصول"

تعتمد 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، لأنّ دورfirebaserules.system مخفي في وحدة التحكّم تلقائيًا.

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