انتقل إلى محتوى الدرس

Principle of Least Privilege Design مبدأ أقل الصلاحيات الأمني

تعلّم إدارة الصلاحيات والأدوار عبر GRANT و REVOKE وتطبيق مبدأ أقل الصلاحيات في MySQL 8 مع أمثلة SQL وتطبيقات تفاعلية.
1 صفوف تعليمية
MySQL
7 مشاهدة

شرح صفوف ومحتوى الفقرة

الصف 1 صورة توضيحية
مخطط توضيحي لدرس إدارة الصلاحيات والأدوار عبر GRANT و REVOKE ومبدأ أقل الصلاحيات في MySQL
مخطط توضيحي لدرس إدارة الصلاحيات والأدوار عبر GRANT و REVOKE ومبدأ أقل الصلاحيات في MySQL

ينص مبدأ أقل الصلاحيات (Principle of Least Privilege — PoLP) على منح كل مستخدم أو خدمة خلفية أو أداة تقارير الحد الأدنى فقط من الصلاحيات، وعلى أضيق نطاق ممكن من قواعد البيانات والجداول لأداء وظيفته المحددة دون أي صلاحية إضافية:

  • خطورة منح ALL PRIVILEGES ON *.* لتطبيقات الويب: إذا اتصل تطبيق الويب بحساب يملك صلاحيات شاملة أو صلاحية DROP، فإن أي خطأ برمجي أو ثغرة في التطبيق قد تؤدي إلى مسح الجداول بالكامل أو قراءة قواعد بيانات أخرى على نفس الخادم.
  • فصل الصلاحيات حسب طبيعة العمل (Separation of Duties):
    • حساب تطبيق الويب ('shop_app'): يُمنح فقط صلاحيات SELECT, INSERT, UPDATE على قاعدة بيانات المتجر shop_db.* دون صلاحيات تعديل الهيكل (DDL).
    • حساب التحديثات الهندسية ('schema_migrator'): يُستخدم فقط أثناء نشر التحديثات لتنفيذ CREATE, ALTER, INDEX.
    • حساب التقارير والتحليلات ('report_reader'): يُقيد بصلاحية القراءة فقط SELECT على الجداول أو العروض المخصصة.
+-----------------+--------------------+-------------------------------+
| Account         | Target Scope       | Allowed Privileges            |
+-----------------+--------------------+-------------------------------+
| shop_app        | shop_db.*          | SELECT, INSERT, UPDATE        |
| report_reader   | shop_db.orders     | SELECT                        |
+-----------------+--------------------+-------------------------------+
SQL
SHOW GRANTS FOR CURRENT_USER();

SELECT GRANTEE, PRIVILEGE_TYPE, IS_GRANTABLE
FROM information_schema.USER_PRIVILEGES
WHERE GRANTEE LIKE '%shop_app%';