oracle - कुछ तालिकाओं तक पहुंच वाले उपयोगकर्ताओं को सूचीबद्ध करें


28

मुझे यकीन है कि यह पहले पूछा गया है, लेकिन मैं निम्नलिखित के लिए प्रासंगिक विवरण नहीं ढूंढ सकता हूं।

क्या किसी प्रकार की पूर्व-निर्मित तालिका है जो निम्नलिखित कार्य कर सकती है (मैंने dba_tab_privs का उपयोग किया है लेकिन यह सीमित है और मेरी सभी आवश्यकताओं को पूरा नहीं करता है), यदि किसी के पास निम्नलिखित उत्तर देने के लिए कुछ प्रश्न नहीं हैं?

  1. उन सभी उपयोगकर्ताओं की सूची बनाएं जिन्हें एक विशेष भूमिका सौंपी गई है?
  2. उपयोगकर्ता को दी गई सभी भूमिकाएं सूचीबद्ध करें?
  3. उपयोगकर्ता को दी गई सभी विशेषाधिकार सूची?
  4. सूची जो एक निश्चित भूमिका तालिकाओं का चयन करने के लिए पहुँच प्रदान करता है?
  5. एक उपयोगकर्ता का चयन कर सकते हैं सभी तालिकाओं की सूची बनाएं?
  6. उन सभी उपयोगकर्ताओं की सूची बनाएं, जो किसी विशेष टेबल पर चयन कर सकते हैं (या तो एक प्रासंगिक भूमिका के माध्यम से या प्रत्यक्ष अनुदान के माध्यम से (यानी अनुदान जो जो सेबल पर चयन करें))? इस क्वेरी के परिणाम को यह भी दिखाना चाहिए कि उपयोगकर्ता की किस भूमिका में यह एक्सेस है या यह प्रत्यक्ष अनुदान था।

जवाबों:


33

उन सभी उपयोगकर्ताओं की सूची बनाएं जिन्हें एक विशेष भूमिका सौंपी गई है

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

उपयोगकर्ता को दी गई सभी भूमिकाओं को सूचीबद्ध करें

-- Change 'PHIL@ 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_privileen.html से लिया गया

सूची जो एक निश्चित भूमिका तालिकाओं का चयन करने के लिए पहुँच प्रदान करता है?

-- 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';

उन सभी उपयोगकर्ताओं की सूची बनाएं, जो किसी विशेष टेबल पर चयन कर सकते हैं (या तो एक प्रासंगिक भूमिका के माध्यम से या प्रत्यक्ष अनुदान के माध्यम से (यानी अनुदान जो जो सेबल पर चयन करें))? इस क्वेरी के परिणाम को यह भी दिखाना चाहिए कि उपयोगकर्ता की किस भूमिका में यह एक्सेस है या यह प्रत्यक्ष अनुदान था।

-- 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' ;

यह एक अच्छी शुरुआत है, लेकिन # 3 में ऑब्जेक्ट विशेषाधिकार शामिल नहीं हैं, # 5 में SELECTएक भूमिका के कारण उपलब्ध विशेषाधिकार शामिल नहीं हैं और # 6 गायब है।
Leigh Riffel


क्या # 5 के लिए आपके जवाब में ऐसी तालिकाएँ शामिल हैं जिन्हें उपयोगकर्ता एक भूमिका के माध्यम से चुन सकते हैं जिन्हें उन्हें सौंपा गया है?
dgf

क्या यह काम करता है यदि उपयोगकर्ता को एक भूमिका से विशेषाधिकार प्राप्त होता है जिसे एक और भूमिका दी गई है?
jpmc26

2

आपके द्वारा उपयोग की जाने वाली जानकारी प्राप्त करने के कई तरीके हैं:

डेटा शब्दकोश दृश्य

ओरेकल में मौजूद है।

आप केवल विचारों को क्वेरी कर सकते हैं और विवरण प्राप्त कर सकते हैं: उदाहरण के लिए:

DBA_COL_PRIVS से * का चयन करें;

ALL_COL_PRIVS से * का चयन करें;

USER_COL_PRIVS से * चुनें;

यह आपको बताता है:

डीबीए दृश्य डेटाबेस में सभी कॉलम ऑब्जेक्ट ग्रांट का वर्णन करता है। सभी दृश्य सभी स्तंभ ऑब्जेक्ट अनुदानों का वर्णन करते हैं, जिसके लिए वर्तमान उपयोगकर्ता या सार्वजनिक ऑब्जेक्ट स्वामी, अनुदानकर्ता या अनुदानकर्ता है। USER दृश्य स्तंभ ऑब्जेक्ट अनुदानों का वर्णन करता है जिसके लिए वर्तमान उपयोगकर्ता ऑब्जेक्ट स्वामी, अनुदानकर्ता या अनुदानकर्ता है।

अधिक जानकारी के लिए, इसे देखें

उम्मीद है की यह मदद करेगा।


1
यह इस सवाल का जवाब नहीं देता है: एक डीबीए यह कैसे पता लगा सकता है कि एक विशिष्ट मध्यस्थ उपयोगकर्ता क्या एक्सेस कर सकता है?
जॉन ऑफ ऑल ट्रेड्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.