Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
![]() |
![]() |
Home -> Community -> Mailing Lists -> Oracle-L -> RE: Jailing a schema from PUBLIC
Rich,
All of these are good ideas. But let me give you another thought.
Why not fix the original problem. Create a role in the original
database and grant select, insert, update & delete to all the objects in
schema A.
Grant this role to the users that connect to the database who need it.
Revoke the same grants from ALL and be done with it.
Create another role granting access to just the tables you need for the
new user. Grant this role to the new user.
My guess is that you would spend less time doing it the right way rather than trying to patch all the holes that "grant all" opens.
Just my 2 cents.
Tom
-----Original Message-----
From: oracle-l-bounce_at_freelists.org
[mailto:oracle-l-bounce_at_freelists.org] On Behalf Of Nigel Thomas
Sent: Wednesday, February 14, 2007 3:46 AM
To: rjoralist_at_society.servebeer.com; oracle-l
Subject: Re: Jailing a schema from PUBLIC
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
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 -- http://www.freelists.org/webpage/oracle-lReceived on Wed Feb 14 2007 - 07:42:52 CST
![]() |
![]() |