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

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

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

تتيح لك "إدارة الهوية وإمكانية الوصول" (IAM) التحكّم في المستخدمين الذين لديهم أدوار معيّنة تمنحهم أذونات الوصول إلى موارد محدّدة، وذلك من خلال ضبط سياسات IAM. تمنح سياسات "إدارة الهوية وإمكانية الوصول" دورًا واحدًا أو أكثر للمستخدم، ما يمنحه أذونات معيّنة. على سبيل المثال، يمكنك منح الدور datastore.indexAdmin لمستخدم، ما يتيح له إنشاء الفهارس أو تعديلها أو حذفها أو إدراجها أو عرضها.

الأذونات والأدوار

يلخّص هذا القسم الأذونات والأدوار التي يتيحها Cloud Firestore.

الأذونات المطلوبة لطُرق واجهة برمجة التطبيقات

يعرض الجدول التالي الأذونات التي يجب أن يمتلكها المتصل لتنفيذ كل إجراء:

الطريقة الأذونات المطلوبة
projects.databases.documents
batchGet datastore.entities.get
batchWrite تعديل أو تحويل مع ضبط الشرط المسبق exists على false datastore.entities.create
batchWrite تعديل أو تحويل مع ضبط الشرط المسبق exists على true datastore.entities.create
batchWrite تعديل أو تحويل بدون شرط مسبق datastore.entities.create
datastore.entities.update
beginTransaction datastore.databases.get
commit تعديل أو تحويل مع ضبط الشرط المسبق exists على false datastore.entities.create
commit تعديل أو تحويل مع ضبط الشرط المسبق exists على 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 على false datastore.entities.create
write (RPC) تعديل أو تحويل مع ضبط الشرط المسبق exists على 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

الأدوار المحدّدة مسبقًا

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

يسرد الجدول التالي أدوار "إدارة الهوية وإمكانية الوصول" في Cloud Firestore. يمكنك منح أدوار متعددة لمستخدم أو مجموعة أو حساب خدمة.

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

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

يمكنك الحصول على سياسات "إدارة الهوية وإمكانية الوصول" وضبطها باستخدام وحدة تحكّم Google Cloud أو واجهة برمجة تطبيقات "إدارة الهوية وإمكانية الوصول" أو أداة سطر الأوامر 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')"
  }
}

للتعرّف على كيفية تحديد شروط "إدارة الهوية وإمكانية الوصول" للوصول المؤقت، يُرجى الاطّلاع على ضبط إذن الوصول المؤقت.

للتعرّف على كيفية ضبط شروط &quot;إدارة الهوية وإمكانية الوصول&quot; للوصول إلى قاعدة بيانات واحدة أو أكثر، يُرجى الاطّلاع على ضبط شروط الوصول إلى قاعدة البيانات.

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

يعتمد Cloud Firestore Security Rules لعملاء الأجهزة الجوّالة/الويب على حساب الخدمة التالي وربط "إدارة الهوية وإمكانية الوصول":

حساب الخدمة دور "إدارة الهوية وإمكانية الوصول"
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 يكون مخفيًا في وحدة التحكّم تلقائيًا.

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