Milvus
Zilliz
  • Home
  • Blog
  • شرح ميلفوس RBAC: تأمين قاعدة بيانات المتجهات الخاصة بك باستخدام التحكم في الوصول المستند إلى الأدوار

شرح ميلفوس RBAC: تأمين قاعدة بيانات المتجهات الخاصة بك باستخدام التحكم في الوصول المستند إلى الأدوار

  • Tutorials
December 31, 2025
Juan Xu

عند إنشاء نظام قاعدة بيانات، يقضي المهندسون معظم وقتهم في التركيز على الأداء: أنواع الفهارس، والاستدعاء، والكمون والإنتاجية، والتوسع. ولكن بمجرد أن ينتقل النظام إلى ما هو أبعد من جهاز كمبيوتر محمول لمطور واحد، يصبح سؤال آخر بنفس الأهمية: من يمكنه فعل ماذا داخل مجموعة ميلفوس الخاصة بك؟ بمعنى آخر - التحكم في الوصول.

في جميع أنحاء الصناعة، تنبع العديد من الحوادث التشغيلية من أخطاء بسيطة في الأذونات. يتم تشغيل برنامج نصي في بيئة خاطئة. حساب خدمة لديه وصول أوسع من المقصود. ينتهي الأمر ببيانات اعتماد مسؤول مشترك في CI. عادةً ما تظهر هذه المشكلات على شكل أسئلة عملية للغاية:

  • هل يُسمح للمطورين بحذف مجموعات الإنتاج؟

  • لماذا يمكن لحساب اختبار قراءة بيانات ناقلات الإنتاج؟

  • لماذا يتم تسجيل دخول خدمات متعددة بنفس دور المسؤول؟

  • هل يمكن أن يكون لوظائف التحليلات وصول للقراءة فقط مع عدم وجود امتيازات للكتابة؟

يعالجMilvus هذه التحديات من خلال التحكم في الوصول المستند إلى الدور (RBAC). فبدلاً من منح كل مستخدم حقوق المسؤول الفائق أو محاولة فرض قيود في التعليمات البرمجية للتطبيق، يتيح لك التحكم في الوصول المستند إلى الأدوار (RBAC) تحديد أذونات دقيقة في طبقة قاعدة البيانات. يحصل كل مستخدم أو خدمة على القدرات التي يحتاجها بالضبط - لا أكثر.

يشرح هذا المنشور كيفية عمل RBAC في Milvus، وكيفية تكوينه، وكيفية تطبيقه بأمان في بيئات الإنتاج.

لماذا يعتبر التحكم في الوصول مهمًا عند استخدام ميلفوس

عندما تكون الفرق صغيرة، وتخدم تطبيقات الذكاء الاصطناعي الخاصة بها عددًا محدودًا من المستخدمين، عادةً ما تكون البنية التحتية بسيطة. حيث يقوم عدد قليل من المهندسين بإدارة النظام؛ ويتم استخدام ميلفوس للتطوير أو الاختبار فقط؛ وتكون تدفقات العمل التشغيلية مباشرة. في هذه المرحلة المبكرة، نادرًا ما يبدو التحكم في الوصول أمرًا ملحًا - لأن سطح المخاطر صغير ويمكن عكس أي أخطاء بسهولة.

مع انتقال ميلفوس إلى مرحلة الإنتاج وتزايد عدد المستخدمين والخدمات والمشغلين، يتغير نموذج الاستخدام بسرعة. تشمل السيناريوهات الشائعة ما يلي:

  • أنظمة أعمال متعددة تتشارك نفس مثيل ميلفوس

  • فرق متعددة تصل إلى نفس مجموعات المتجهات

  • بيانات الاختبار والتدريج وبيانات الإنتاج التي تتعايش في مجموعة واحدة

  • أدوار مختلفة تحتاج إلى مستويات مختلفة من الوصول، من الاستعلامات للقراءة فقط إلى الكتابة والتحكم التشغيلي

بدون حدود وصول واضحة المعالم، تخلق هذه الإعدادات مخاطر يمكن التنبؤ بها:

  • قد تؤدي عمليات سير عمل الاختبار إلى حذف مجموعات الإنتاج عن طريق الخطأ

  • قد يقوم المطورون بتعديل الفهارس التي تستخدمها الخدمات المباشرة عن غير قصد

  • الاستخدام الواسع النطاق للحساب root يجعل من المستحيل تتبع الإجراءات أو التدقيق فيها

  • قد يحصل التطبيق المخترق على وصول غير مقيد إلى جميع بيانات المتجهات.

مع تزايد الاستخدام، لم يعد الاعتماد على الاصطلاحات غير الرسمية أو حسابات المسؤول المشتركة مستداماً. يصبح نموذج الوصول المتسق والقابل للتنفيذ أمرًا ضروريًا - وهذا بالضبط ما يوفره نظام Milvus RBAC.

ما هو RBAC في ميلفوس

RBAC (التحكم في الوصول المستند إلى الدور) هو نموذج إذن يتحكم في الوصول بناءً على الأدوار بدلاً من المستخدمين الفرديين. في ميلفوس، يتيح لك التحكم في الوصول القائم على الأدوار في ميلفوس تحديد العمليات التي يُسمح للمستخدم أو الخدمة بتنفيذها بالضبط - وعلى أي موارد محددة. يوفر طريقة منظمة وقابلة للتطوير لإدارة الأمان مع نمو نظامك من مطور واحد إلى بيئة إنتاج كاملة.

يتمحور نظام Milvus RBAC حول المكونات الأساسية التالية:

Users Roles Privileges امتيازات أدوار المستخدمين

  • المورد: الكيان الذي يتم الوصول إليه. في ميلفوس، تتضمن الموارد المثيل وقاعدة البيانات والمجموعة.

  • الامتيازات: عملية محددة مسموح بها على مورد - على سبيل المثال، إنشاء مجموعة أو إدراج بيانات أو حذف كيانات.

  • مجموعة الامتيازات: مجموعة محددة مسبقاً من الامتيازات ذات الصلة، مثل "للقراءة فقط" أو "الكتابة".

  • الدور: مجموعة من الامتيازات والموارد التي تنطبق عليها. يحدد الدور العمليات التي يمكن تنفيذها وأين يمكن تنفيذها.

  • المستخدم: هوية في ميلفوس. لكل مستخدم معرف فريد ويتم تعيين دور واحد أو أكثر له.

تشكل هذه المكونات تسلسلاً هرمياً واضحاً:

  1. يتم تعيين أدوار للمستخدمين

  2. تحدد الأدوار الامتيازات

  3. تنطبق الامتيازات على موارد محددة

أحد مبادئ التصميم الرئيسية في ميلفوس هو أن الأذونات لا يتم تعيينها مباشرة للمستخدمين. تمر جميع الصلاحيات عبر الأدوار. هذا التوجيه يبسط الإدارة، ويقلل من أخطاء التكوين، ويجعل تغييرات الأذونات متوقعة.

يتم توسيع نطاق هذا النموذج بشكل نظيف في عمليات النشر الحقيقية. عندما يشترك عدة مستخدمين في دور ما، فإن تحديث امتيازات الدور يقوم على الفور بتحديث الأذونات لهم جميعًا - دون تعديل كل مستخدم على حدة. إنها نقطة تحكم واحدة تتماشى مع كيفية إدارة البنية التحتية الحديثة للوصول.

كيفية عمل RBAC في ميلفوس

عندما يرسل العميل طلباً إلى Milvus، يقوم النظام بتقييمه من خلال سلسلة من خطوات التفويض. يجب أن تجتاز كل خطوة قبل السماح بمتابعة العملية:

How RBAC Works in Milvus كيفية عمل RBAC في ملفوس

  1. مصادقة الطلب: يتحقق ميلفوس أولاً من هوية المستخدم. إذا فشلت المصادقة، يتم رفض الطلب مع ظهور خطأ مصادقة.

  2. التحقق من تعيين الدور: بعد المصادقة، يتحقق ميلفوس مما إذا كان المستخدم لديه دور واحد على الأقل معين. إذا لم يتم العثور على أي دور، يتم رفض الطلب مع ظهور خطأ رفض الإذن.

  3. التحقق من الامتيازات المطلوبة: يقوم Milvus بعد ذلك بتقييم ما إذا كان دور المستخدم يمنح الامتياز المطلوب على المورد الهدف. في حالة فشل التحقق من الامتيازات، يتم رفض الطلب مع ظهور خطأ رفض الإذن.

  4. تنفيذ العملية: إذا نجحت جميع عمليات التحقق، يقوم ميلفوس بتنفيذ العملية المطلوبة وإرجاع النتيجة.

كيفية تكوين التحكم في الوصول عبر RBAC في ميلفوس

1. المتطلبات الأساسية

قبل أن يتم تقييم قواعد RBAC وتطبيقها، يجب تمكين مصادقة المستخدم بحيث يمكن ربط كل طلب إلى Milvus بهوية مستخدم معين.

فيما يلي طريقتان قياسيتان للنشر.

  • النشر باستخدام Docker Compose

إذا تم نشر ملف Milvus باستخدام Docker Compose، فقم بتحرير ملف التكوين milvus.yaml وقم بتمكين التخويل عن طريق تعيين common.security.authorizationEnabled إلى true:

common:
  security:
    authorizationEnabled: true
  • النشر باستخدام مخططات هيلم

إذا تم نشر ملف Milvus باستخدام مخططات Helm، فقم بتحرير الملف values.yaml وأضف التكوين التالي ضمن extraConfigFiles.user.yaml:

extraConfigFiles:
  user.yaml: |+
    common:
      security:
        authorizationEnabled: true

2. التهيئة

بشكل افتراضي، يقوم ميلفوس بإنشاء مستخدم مدمج root عند بدء تشغيل النظام. كلمة المرور الافتراضية لهذا المستخدم هي Milvus.

كخطوة أمان أولية، استخدم المستخدم root للاتصال بـ Milvus وقم بتغيير كلمة المرور الافتراضية على الفور. يوصى بشدة باستخدام كلمة مرور معقدة لمنع الوصول غير المصرح به.

from pymilvus import MilvusClient
# Connect to Milvus using the default root user
client = MilvusClient(
    uri='http://localhost:19530', 
    token="root:Milvus"
)
# Update the root password
client.update_password(
    user_name="root",
    old_password="Milvus", 
    new_password="xgOoLudt3Kc#Pq68"
)

3. العمليات الأساسية

إنشاء المستخدمين

للاستخدام اليومي، يوصى بإنشاء مستخدمين مخصصين بدلاً من استخدام حساب root.

client.create_user(user_name="user_1", password="P@ssw0rd")

إنشاء الأدوار

يوفر ميلفوس دورًا مدمجًا admin مع امتيازات إدارية كاملة. ومع ذلك، بالنسبة لمعظم سيناريوهات الإنتاج، يوصى بإنشاء أدوار مخصصة لتحقيق تحكم وصول أكثر دقة.

client.create_role(role_name="role_a")

إنشاء مجموعات امتيازات

مجموعة الامتيازات هي مجموعة من الامتيازات المتعددة. لتبسيط إدارة الأذونات، يمكن تجميع الامتيازات ذات الصلة ومنحها معاً.

يتضمن ميلفوس مجموعات الامتيازات المضمنة التالية:

  • COLL_RO COLL_RW, COLL_ADMIN

  • DB_RO، DB_RW, DB_ADMIN

  • Cluster_RO Cluster_RW, Cluster_ADMIN

يمكن أن يؤدي استخدام مجموعات الامتيازات المضمنة هذه إلى تقليل تعقيد تصميم الأذونات بشكل كبير وتحسين الاتساق بين الأدوار.

يمكنك إما استخدام مجموعات الامتيازات المضمنة مباشرةً أو إنشاء مجموعات امتيازات مخصصة حسب الحاجة.

# Create a privilege group
client.create_privilege_group(group_name='privilege_group_1'# Add privileges to the privilege group
client.add_privileges_to_group(group_name='privilege_group_1', privileges=['Query', 'Search'])

منح الامتيازات أو مجموعات الامتيازات للأدوار

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

client.grant_privilege_v2(
    role_name="role_a",
    privilege="Search",
    collection_name='collection_01',
    db_name='default',
)
client.grant_privilege_v2(
    role_name="role_a",
    privilege="privilege_group_1",
    collection_name='collection_01',
    db_name='default',
)
client.grant_privilege_v2(
    role_name="role_a",
    privilege="ClusterReadOnly",
    collection_name='*',
    db_name='*',
)

منح الأدوار للمستخدمين

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

client.grant_role(user_name="user_1", role_name="role_a")

4. فحص وإلغاء الوصول

فحص الأدوار المعينة لمستخدم

client.describe_user(user_name="user_1")

فحص الامتيازات المعينة لدور ما

client.describe_role(role_name="role_a")

إلغاء الامتيازات من أحد الأدوار

client.revoke_privilege_v2(
    role_name="role_a",
    privilege="Search",
    collection_name='collection_01',
    db_name='default',
)
client.revoke_privilege_v2(
    role_name="role_a",
    privilege="privilege_group_1",
    collection_name='collection_01',
    db_name='default',
)

إبطال الأدوار من مستخدم

client.revoke_role(
    user_name='user_1',
    role_name='role_a'
)

حذف المستخدمين والأدوار

client.drop_user(user_name="user_1")
client.drop_role(role_name="role_a")

مثال: تصميم التحكم بالوصول لنظام RAG المدعوم من ميلفوس

ضع في اعتبارك نظام الاسترجاع المعزز (RAG) المبني على نظام Milvus.

في هذا النظام، يكون للمكونات والمستخدمين المختلفين مسؤوليات منفصلة بوضوح، ويتطلب كل منها مستوى مختلف من الوصول.

الجهة الفاعلةالمسؤوليةالوصول المطلوب
مسؤول المنصةعمليات النظام وتكوينهالإدارة على مستوى المثيل
خدمة استيعاب المتجهاتإدخال بيانات المتجهات وتحديثاتهاالوصول للقراءة والكتابة
خدمة البحثالبحث عن المتجهات واسترجاعهاالوصول للقراءة فقط
from pymilvus import MilvusClient
client = MilvusClient(
    uri='http://localhost:19530',
    token="root:xxx"  # Replace with the updated root password
)
# 1. Create a user (use a strong password)
client.create_user(user_name="rag_admin", password="xxx")
client.create_user(user_name="rag_reader", password="xxx")
client.create_user(user_name="rag_writer", password="xxx")
# 2. Create roles
client.create_role(role_name="role_admin")
client.create_role(role_name="role_read_only")
client.create_role(role_name="role_read_write")
# 3. Grant privileges to the role
## Using built-in Milvus privilege groups
client.grant_privilege_v2(
    role_name="role_admin",
    privilege="Cluster_Admin",
    collection_name='*',
    db_name='*',
)
client.grant_privilege_v2(
    role_name="role_read_only",
    privilege="COLL_RO",
    collection_name='*',
    db_name='default',
)
client.grant_privilege_v2(
    role_name="role_read_write",
    privilege="COLL_RW",
    collection_name='*',
    db_name='default',
)
# 4. Assign the role to the user
client.grant_role(user_name="rag_admin", role_name="role_admin")
client.grant_role(user_name="rag_reader", role_name="role_read_only")
client.grant_role(user_name="rag_writer", role_name="role_read_write")

نصائح سريعة: كيفية تشغيل التحكم في الوصول بأمان في الإنتاج

لضمان بقاء التحكم في الوصول فعالاً وقابلاً للإدارة في أنظمة الإنتاج طويلة الأمد، اتبع هذه الإرشادات العملية.

1. تغيير كلمة المرور الافتراضية root والحد من استخدام الحساب root

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

2. اعزل مثيلات ميلفوس فعلياً عبر البيئات

نشر مثيلات Milvus منفصلة للتطوير والتدريج والإنتاج. يوفر العزل المادي حدود أمان أقوى من التحكم المنطقي في الوصول وحده ويقلل بشكل كبير من مخاطر الأخطاء عبر البيئات.

3. اتبع مبدأ الامتيازات الأقل

منح الأذونات المطلوبة لكل دور فقط:

  • بيئات التطوير: يمكن أن تكون الأذونات أكثر تساهلاً لدعم التكرار والاختبار

  • بيئات الإنتاج: يجب أن تقتصر الأذونات على ما هو ضروري فقط.

  • عمليات التدقيق المنتظمة: مراجعة الأذونات الحالية بشكل دوري للتأكد من أنها لا تزال مطلوبة.

4. إلغاء الأذونات بشكل فعال عندما لا تكون هناك حاجة إليها.

التحكم في الوصول ليس إعداداً لمرة واحدة، بل يتطلب صيانة مستمرة. قم بإلغاء الأدوار والامتيازات على الفور عندما يتغير المستخدمون أو الخدمات أو المسؤوليات. هذا يمنع الأذونات غير المستخدمة من التراكم بمرور الوقت وتصبح مخاطر أمنية خفية.

الخاتمة

تكوين التحكم في الوصول في ميلفوس ليس معقدًا بطبيعته، ولكنه ضروري لتشغيل النظام بأمان وموثوقية في الإنتاج. باستخدام نموذج RBAC جيد التصميم، يمكنك:

  • الحد من المخاطر عن طريق منع العمليات العرضية أو المدمرة

  • تحسين الأمان من خلال فرض الوصول الأقل امتيازاً إلى بيانات المتجهات

  • توحيد العمليات من خلال فصل واضح للمسؤوليات

  • توسيع النطاق بثقة، ووضع الأساس لعمليات النشر متعددة المستأجرين وعلى نطاق واسع

التحكم في الوصول ليس ميزة اختيارية أو مهمة لمرة واحدة. إنه جزء أساسي من تشغيل Milvus بأمان على المدى الطويل.

👉 ابدأ ببناء خط أساس أمني متين باستخدام RBAC لنشر Milvus الخاص بك.

هل لديك أسئلة أو تريد التعمق في أي ميزة من أحدث إصدار من Milvus؟ انضم إلى قناة Discord الخاصة بنا أو قم بتسجيل المشكلات على GitHub. يمكنك أيضًا حجز جلسة فردية مدتها 20 دقيقة للحصول على رؤى وإرشادات وإجابات على أسئلتك من خلال ساعات عمل Milvus المكتبية.

    Try Managed Milvus for Free

    Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

    Get Started

    Like the article? Spread the word

    استمر في القراءة