عند استخدام مكتبات برامج الخادم لـ 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 |
beginTransaction |
datastore.databases.get |
commit تعديل أو تحويل مع ضبط الشرط المسبق exists على false |
datastore.entities.create |
commit تعديل أو تحويل مع ضبط الشرط المسبق exists على 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 على false |
datastore.entities.create |
write (RPC) تعديل أو تحويل مع ضبط الشرط المسبق exists على 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 |
الأدوار المحدّدة مسبقًا
باستخدام "إدارة الهوية وإمكانية الوصول"، تتطلّب كل طريقة من طرق واجهة برمجة التطبيقات في Cloud Firestore أن يكون لدى الحساب الذي يرسل طلب البيانات من واجهة برمجة التطبيقات الأذونات المناسبة لاستخدام المورد. يتم منح الأذونات من خلال ضبط السياسات التي تمنح الأدوار لمستخدم أو مجموعة أو حساب خدمة. بالإضافة إلى الأدوار الأساسية، المالك والمحرِّر والمشاهد، يمكنك منح أدوار Cloud Firestore لمستخدمي مشروعك.
يسرد الجدول التالي أدوار "إدارة الهوية وإمكانية الوصول" في Cloud Firestore. يمكنك منح أدوار متعددة لمستخدم أو مجموعة أو حساب خدمة.
| الدور | الأذونات | الوصف |
|---|---|---|
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 |
إذن بالوصول للقراءة إلى عمليات فحص Insights وStats و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 أذونات "إدارة الهوية وإمكانية الوصول" (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')"
}
}
للتعرّف على كيفية تحديد شروط "إدارة الهوية وإمكانية الوصول" للوصول المؤقت، يُرجى الاطّلاع على ضبط إذن الوصول المؤقت.
للتعرّف على كيفية ضبط شروط "إدارة الهوية وإمكانية الوصول" للوصول إلى قاعدة بيانات واحدة أو أكثر، يُرجى الاطّلاع على ضبط شروط الوصول إلى قاعدة البيانات.
اعتماد قاعدة الأمان على "إدارة الهوية وإمكانية الوصول"
يعتمد 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 يكون مخفيًا في وحدة التحكّم تلقائيًا.
الخطوات التالية
- مزيد من المعلومات حول "إدارة الهوية وإمكانية الوصول"
- منح أدوار "إدارة الهوية وإمكانية الوصول"
- مزيد من المعلومات حول المصادقة