Hat ein Benutzer EXECUTE-Rechte auf eines der folgenden Packages, kann er (bis Oracle 10g) Informationen an beliebige Hosts schicken:
- UTL_TCP
- UTL_SMTP
- UTL_MAIL
- UTL_HTTP
- UTL_INADDR
Mit Oracle 11g ist dies nicht mehr der Fall. Per Default hat kein Benutzer (ausser SYS) die Möglichkeit, mit diesen Packages externe Rechner zu erreichen.
Mit dem neuen Package DBMS_NETWORK_ACL_ADMIN können nun Access Control Listen erzeugt werden, mit denen definiert wird, wer an welchen Host Callouts durchführen kann.
Dies hat aber einige Auswirkungen…
In der Datenbank muss XDB installiert sein ![]()
Ansonsten kommt bei jedem Aufruf eines der Packages (ausser von SYS) folgende Fehlermeldung:
EXEC dbms_output.put_line(utl_inaddr.get_host_name); BEGIN dbms_output.put_line(utl_inaddr.get_host_name); END; * ERROR AT line 1: ORA-24248: XML DB extensible security NOT installed ORA-06512: AT "SYS.UTL_INADDR", line 4 ORA-06512: AT "SYS.UTL_INADDR", line 35 ORA-06512: AT line 1
Ist XDB installiert, können die ACL dann wie folgt erzeugt werden:
BEGIN DBMS_NETWORK_ACL_ADMIN.CREATE_ACL ( acl => 'scott_trivadis.xml', description => 'Allow scott to connect to trivadis', principal => 'SCOTT', is_grant => TRUE, privilege => 'connect' ); END; / BEGIN DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL ( acl => 'scott_trivadis.xml', host => 'www.trivadis.com' ); END; /
Eigentlich ein gutes Feature – aber die Abhängigkeit zu XDB finde ich extrem problematisch. Ist der in XDB integrierte Web- und FTP-Server wirklich sicher? Dieser ist in 11g aber wenigstens per Default ausgeschaltet. Aber trotzdem ist jedes zusätzliche Package ein potentielles Security Risiko
Und ohne XDB-Installation ist es nicht mehr möglich, z.B. eine Mail aus einer DB zu verschicken ![]()
Es sein denn, ich benutze Java in der Datenbank, aber dies möchte ich eigentlich auch vermeiden…
[...] gehört u.a. auch “Fine-Grained Access für Netzwerk-Callouts”, worüber ich hier schon [...]