วิธีแสดงรายการผู้ใช้ทั้งหมดที่มีสิทธิ์เหนือแพ็คเกจ


9

ฉันกำลังค้นหาข้อความค้นหาเพื่อแสดงรายการผู้ใช้ทั้งหมดที่มีสิทธิ์เหนือแพ็คเกจ

ตัวอย่างเช่นผู้ใช้ Schema_A ได้รับอนุญาตให้ดำเนินการแพ็คเกจ: 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คุณอาจจะดีกว่าถ้าใช้สคริปต์ของPete Finniganเช่นwho_has_priv.sql(หรือwho_has_priv_procedure.sql) Pete อาจเป็นผู้เชี่ยวชาญชั้นนำเกี่ยวกับความปลอดภัยของ Oracle ดังนั้นสิ่งเหล่านี้มีแนวโน้มที่จะอธิบายในทุกกรณีที่เป็นไปได้มากกว่าทุกสิ่งที่ฉันจะพยายามทำร่วมกัน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.