شرح صفوف ومحتوى الفقرة
ينص مبدأ أقل الصلاحيات (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%';