Oracle FAQ Your Portal to the Oracle Knowledge Grid
HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US
 

Home -> Community -> Mailing Lists -> Oracle-L -> Re: Jailing a schema from PUBLIC

Re: Jailing a schema from PUBLIC

From: Nigel Thomas <nigel_cl_thomas_at_yahoo.com>
Date: Wed, 14 Feb 2007 00:46:11 -0800 (PST)
Message-ID: <382806.25257.qm@web58702.mail.re1.yahoo.com>


Rich. Rjamya

>> wild idea,
>>
>> since public access is visible through ALL_* views, you can create local
>> ALL_* views in schema B. These would be essentially same as regular views
>> but you'd filter out owner A.

The dictionary views are just that: views for your convenience. You can tell they aren't used by the SQL engine to do name and privilege resolution - just look at the recursive SQL in a trace file which always refers directly to the underlying dictionary tables (eg OBJ$, TAB$, SEG$, PRV$ etc etc). You can't spoof it into giving you more (or fewer) privileges. So if you've granted S/I/U/D to public on your first database, the only ways to close the door are

  1. You can use your two remote schemas - ie use a database that isn't 'infected' by the public grants

Remote schema RA owns the views
Remote schema RB is Vendor B's schema to use

   create synonym X for RA.X;

Now you have full control over what RB can see, and what DML (if any) he can do. (This doesn't include any PL/SQL API access... yet)

2) Or (as you already indicated)

Writing a script for (2) is a fairly trivial exercise; weeding out users who don't need App A (eg SYS, SYSTEM etc) is tedious (but not strictly necessary). You don't need to destroy the public synonyms; they'll be no use to B without the grants.

Option 2 is likely to be easier to set up and maintain...

HTH Regards Nigel

--
http://www.freelists.org/webpage/oracle-l
Received on Wed Feb 14 2007 - 02:46:11 CST

Original text of this message

HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US