it-swarm.asia

منح إذن إنشاء على مخطط معين في Oracle 11g

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

7
Michael-O

أنت محق في أنه لا توجد طريقة لمنح المستخدم أذونات إنشاء/إسقاط/إلخ على مخطط بأكمله. أقترح عليك أن تنظر في مصادقة الوكيل . يتضمن هذا بشكل أساسي تغيير المستخدم أ للسماح للمستخدم ب بالوكيل كـ أ:

ALTER USER A GRANT CONNECT THROUGH B;

ثم يستخدم الاتصال مصادقة المستخدم ب ، ولكنه يحصل على أذونات المستخدم أ.

connect B[A]/[email protected]

تم تغطية هذا السؤال إلى حد ما بواسطة سؤالي الأكثر تحديدًا هنا .


ملاحظة حول الأدوار: تعمل الأدوار بشكل جيد لإعطاء امتيازات الكائن لمستخدم آخر نظرًا لأن الامتيازات مرتبطة بكائن معين. بينما يمكن أن تمنح الأدوار امتيازات النظام ، فإنها تنطبق إما على مخطط المستخدمين الخاص بهم أو على قاعدة البيانات بأكملها وبالتالي لا يمكن تطبيقها على مخطط آخر. على سبيل المثال ، يمكن منح المستخدم ب CREATE TABLE مما يسمح لها بإنشاء جداول في مخططها الخاص أو CREATE ANY TABLE مما يسمح لها بإنشاء جداول في أي مخطط. يمكن منح هذه الأذونات مباشرة أو من خلال دور ، ولكن السابق لن يسمح بإنشاء امتيازات في مخطط A. هذا الأخير ، ولكنه سيسمح أيضًا بإنشاء امتيازات في أي مخطط بما في ذلك sys ، والتي ستكون مصدر قلق أمني.

11
Leigh Riffel

ما عليك سوى إنشاء إجراء على المخطط الهدف الذي يتضمن EXECUTE_IMMEDIATE لإنشاء جداول (تحقق من DDLs أخرى !!). ثم امنح امتياز مخطط المصدر للتنفيذ على الإجراء. هذا يجب أن يؤدي خدعة دون مخاوف أمنية.

0
blantomat