Few days ago I observed, all of a sudden, one of the application related cron job started failing with following error.
ORA-06598: insufficient INHERIT PRIVILEGES privilege
This job was intended to drop temporary tables in application schema. We had written a shell script in which SYS user executes procedure owned by application schema.
Only thing that was changed at DB end, that DB was upgraded from 11g to 12c.
After investigating further on the error, I found this was due to a new 12c security feature.
Before Oracle Database 12c, a PL/SQL code/pacakge/procedure always ran with the privileges of its invoker. If its invoker had higher privileges than its owner, then the code might perform operations unintended by, or forbidden to, its owner. Here we can see security gap.
For example, User A creates a new package and we execute it from users with higher privileges, like SYS. Now user A knows that SYS uses this package regularly, so user A could replace the contents of this package with some malacious code any time and do anything in the database, knowing the code will be ran by SYS sooner or later.
In 12c this behavior can be controlled using INHERITANCE PRIVILEGES.
See following link for more details.
As of Oracle Database 12c, a PL/SQL code/pacakge/procedure can run with the privileges of its invoker only if its owner has either the INHERIT PRIVILEGES privilege on the invoker or the INHERIT ANY PRIVILEGES privilege.
I was able to resolve the issue after issuing below command:
SQL> grant inherit privileges on user sys to <application schema>; Grant succeeded.
Hope so u will find this post very useful 🙂