it-swarm.asia

أوراكل - سرد المستخدمين الذين يمكنهم الوصول إلى جداول معينة

أنا متأكد من أن هذا قد تم طرحه من قبل ولكن لا يمكنني العثور على التفاصيل ذات الصلة لما يلي.

هل هناك نوع من الجداول المعدة مسبقًا التي يمكنها القيام بما يلي (لقد استخدمت dba_tab_privs لكنها محدودة ولا تلبي جميع احتياجاتي) ، إذا لم يكن لدى أي شخص بعض الاستفسارات للإجابة على ما يلي؟

  1. هل تريد إدراج جميع المستخدمين الذين تم تكليفهم بدور معين؟
  2. سرد جميع الأدوار الممنوحة للمستخدم؟
  3. قائمة بجميع الامتيازات الممنوحة للمستخدم؟
  4. ما هي الجداول التي يمنحها دور معين SELECT للوصول إليها؟
  5. هل تريد سرد جميع الجداول التي يمكن للمستخدم الاختيار منها؟
  6. أدرج جميع المستخدمين الذين يمكنهم التحديد على جدول معين (إما من خلال منحهم دور ذي صلة أو من خلال منحة مباشرة (أي منح اختيار على atable to joe))؟ يجب أن تظهر نتيجة هذا الاستعلام أيضًا من خلال الدور الذي يمتلكه المستخدم هذا الوصول أو ما إذا كان منحة مباشرة.
29
dgf

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

-- Change 'DBA' to the required role
select * from dba_role_privs where granted_role = 'DBA'

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

-- Change '[email protected] to the required user
select * from dba_role_privs where grantee = 'PHIL';

سرد كافة الامتيازات الممنوحة للمستخدم

select
  lpad(' ', 2*level) || granted_role "User, his roles and privileges"
from
  (
  /* THE USERS */
    select 
      null     grantee, 
      username granted_role
    from 
      dba_users
    where
      username like upper('%&enter_username%')
  /* THE ROLES TO ROLES RELATIONS */ 
  union
    select 
      grantee,
      granted_role
    from
      dba_role_privs
  /* THE ROLES TO PRIVILEGE RELATIONS */ 
  union
    select
      grantee,
      privilege
    from
      dba_sys_privs
  )
start with grantee is null
connect by grantee = prior granted_role;

ملاحظة: مأخوذ من http://www.adp-gmbh.ch/ora/misc/recursively_list_privilege.html

اذكر الجداول التي يعطيها دور معين SELECT للوصول إليه؟

-- Change 'DBA' to the required role.
select * from role_tab_privs where role='DBA' and privilege = 'SELECT';

عرض جميع الجداول التي يمكن للمستخدم الاختيار منها؟

--Change 'PHIL' to the required user
select * from dba_tab_privs where GRANTEE ='PHIL' and privilege = 'SELECT';

أدرج جميع المستخدمين الذين يمكنهم التحديد على جدول معين (إما من خلال منحهم دورًا ذا صلة أو من خلال منحة مباشرة (أي اختيار منح على atable to joe))؟ يجب أن تظهر نتيجة هذا الاستعلام أيضًا من خلال الدور الذي يمتلكه المستخدم هذا الوصول أو ما إذا كان منحة مباشرة.

-- Change 'TABLENAME' below
select Grantee,'Granted Through Role' as Grant_Type, role, table_name
from role_tab_privs rtp, dba_role_privs drp
where rtp.role = drp.granted_role
and table_name = 'TABLENAME' 
union
select Grantee,'Direct Grant' as Grant_type, null as role, table_name
from dba_tab_privs
where table_name = 'TABLENAME' ;
35
Philᵀᴹ

هناك العديد من الطرق للحصول على المعلومات التي تريد استخدامها:

طرق عرض قاموس البيانات

موجود في أوراكل.

يمكنك فقط الاستعلام عن طرق العرض واسترجاع التفاصيل: على سبيل المثال:

حدد * من DBA_COL_PRIVS ؛

حدد * من ALL_COL_PRIVS ؛

حدد * من USER_COL_PRIVS ؛

هذا يخبرك:

يصف عرض DBA كافة منح كائن العمود في قاعدة البيانات. يصف عرض ALL كافة منح كائن العمود التي يكون المستخدم الحالي أو PUBLIC هو مالك الكائن أو المانح أو المستفيد. يصف عرض USER منح كائن العمود التي يكون المستخدم الحالي هو مالك الكائن أو المانح أو المستفيد.

لمزيد من المعلومات راجع هذا

أتمنى أن يساعدك هذا.

2
Vimalnath