उन सभी उपयोगकर्ताओं को कैसे सूचीबद्ध किया जाए जिनके पास पैकेज पर अनुदान है


9

मैं उन सभी उपयोगकर्ताओं को सूचीबद्ध करने के लिए कुछ क्वेरी की तलाश कर रहा हूं जिनके पास पैकेज पर अनुदान है।

उदाहरण के लिए, उपयोगकर्ता स्कीमा_ए को पैकेज निष्पादित करने के लिए दिया गया है: B.MyPackage।

मैं दृश्य या तालिकाओं को क्वेरी कर रहा हूं जैसे: role_tab_privs, role_sys_privs, sys.dba_sys_privs, dba_role_privs ... लेकिन मुझे वह नहीं मिल रहा है जो मैं देख रहा हूं।

जवाबों:


15

यदि विशेषाधिकार सीधे या किसी भूमिका को प्रदान किया गया है, तो अनुदान दिखाई देगा DBA_TAB_PRIVS

SELECT grantee, privilege
  FROM dba_tab_privs
 WHERE owner = 'B'
   AND table_name = 'MYPACKAGE'
   AND privilege = 'EXECUTE'

यदि granteeएक भूमिका है, तो आपको यह देखने की आवश्यकता होगी dba_role_privsकि क्या उपयोगकर्ता (या भूमिकाएँ) को वह भूमिका दी गई है और यदि आप अन्य भूमिकाओं को दी गई भूमिकाएँ हैं तो उस श्रृंखला का अनुसरण करें। यदि आपको उन उपयोगकर्ताओं के लिए खाते की आवश्यकता है जिनके पास (बहुत खतरनाक) ANYअनुदान (यानी EXECUTE ANY PROCEDURE) के कारण अनुदान हैं , तो इसके लिए एक अलग क्वेरी की आवश्यकता होगी।

यदि आप सीधे तौर पर सीधे क्वेरी करने की तुलना में अधिक परिष्कृत प्राप्त करना चाहते हैं dba_tab_privs, हालांकि, आप शायद (या ) जैसी पीट फिनिगन की स्क्रिप्ट्स का उपयोग करने से बेहतर हैं । पीट संभवत: ओरेकल सुरक्षा पर अग्रणी विशेषज्ञ है, इसलिए ये संभव है कि मैं हर संभव कोने के मामले में कुछ भी करने की कोशिश करूं।who_has_priv.sqlwho_has_priv_procedure.sql

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.