Oracle ACL-Konfiguration auf 11g für die Verwendung von Netzwerkpaketen

In Oracle 11g-Netzwerkpaketen/Systempaketen wie UTL_MAIL,UTL_SMTP,UTL_TCP von einem normalen Benutzer werden mithilfe der Zugriffssteuerungsliste (Access Control List, ACL) eingeschränkt. Oracle hat Fine-grained Access eingeführt, um externe Netzwerkdienste zu nutzen.

 

Wenn Sie diesen Paketen einfach die Berechtigung „Execute“ erschließen, ist die Verwendung dieser Pakete möglicherweise nicht unbedingt erforderlich.

 

Wir müssen die folgende Zugriffssteuerungsliste erstellen, um die Verwendung dieser Pakete für einen normalen Benutzer zu ermöglichen.

 

Im Folgenden finden Sie das Verfahren zum Erstellen einer Zugriffssteuerungsliste (Access Control List, ACL) mit einer anfänglichen Berechtigungseinstellung.

Eine ACL muss über mindestens eine Berechtigungseinstellung verfügen. Die Zugriffssteuerungseffekt hat keinen Zugriffssteuerungseffekt, es sei denn, sie ist dem Netzwerkziel zugewiesen.

 

BEGIN
DBMS_NETWORK_ACL_ADMIN.CREATE_ACL (
acl          =>’SCOTT.xml‘,
description  => ‚ACL for users to send mail.‘,
principal    => ‚SCOTT‘,
is_grant     => TRUE,
privilege    => ‚connect‘,
start_date   => null,
end_date     => null
);
END;
/

 

Verwenden Sie unten, um eine Berechtigung zum Gewähren oder Verweigern des Netzwerkzugriffs für den Benutzer hinzuzufügen. Der Zugriffssteuerungseintrag (Access Control Entry, ACE) wird erstellt, wenn er nicht vorhanden ist.

 

BEGIN
DBMS_NETWORK_ACL_ADMIN.ADD_PRIVILEGE(
acl         => ‚SCOTT.xml‘,
principal   => ‚SCOTT‘,
is_grant    =>  TRUE,
privilege   => ‚connect‘);
END;
/

Verwenden Sie unten, um einem Hostcomputer, einer Domäne oder einem IP-Subnetz und, falls angegeben, dem TCP-Portbereich eine Zugriffssteuerungsliste (Access Control List, ACL) zuzuweisen.

BEGIN
DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL(
acl         => ‚SCOTT.xml‘,
host        => ‚Mail Server name‘,
lower_port => 25);
END;
/

commit;

Vergessen Sie nicht, am Ende der Sitzung commit zu geben, um diese Änderungen dauerhaft zu machen.

Mit der folgenden Prozedur wird eine Berechtigung in einer Zugriffssteuerungsliste gelöscht.

 

BEGIN
DBMS_NETWORK_ACL_ADMIN.delete_privilege (
acl         => ‚SCOTT.xml‘,
principal   => ‚MN‘,
is_grant    => TRUE,
privilege   => ‚connect‘);
COMMIT;
END;
/

 

Die Ausführungsberechtigung muss nach dem Ausführen der oben genannten Prozeduren erforderlich sein.

 

select grantee , table_name , privilege from dba_tab_privs where table_name = ‚UTL_MAIL‘ and   grantee = ‚PUBLIC‘;

 

GRANTEE    TABLE_NAME   PRIVILEGE                  
———- ———– —————–
PUBLIC     UTL_MAIL     EXECUTE              

 

select acl,host,lower_port,upper_port from DBA_NETWORK_ACLS;

 

ACL                     HOST         LOWER_PORT  UPPER_PORT                           ———————————————————
/sys/acls/SCOTT.xml mailservername      25         25
/sys/acls/SCOTT.xml Mailservername
/sys/acls/SCOTT.xml mailserver.in.com

 

select acl,principal,privilege,is_grant from DBA_NETWORK_ACL_PRIVILEGES; 

ACL                  PRINCIPAL    PRIVILE   IS_GR
—————–   ———— ——— —————
/sys/acls/SCOTT.xml SCOTT          connect  true

 

 

SELECT HOST, LOWER_PORT, UPPER_PORT, ACL,
DECODE(
DBMS_NETWORK_ACL_ADMIN.CHECK_PRIVILEGE_ACLID(aclid,  ‚SCOTT‘, ‚connect‘),
1, ‚GRANTED‘, 0, ‚DENIED‘, null) PRIVILEGE
FROM DBA_NETWORK_ACLS
WHERE host IN
(SELECT * FROM      TABLE(DBMS_NETWORK_ACL_UTILITY.DOMAINS(‚msxsmtp.server.bosch.com‘)))
ORDER BY
DBMS_NETWORK_ACL_UTILITY.DOMAIN_LEVEL(host) DESC, LOWER_PORT, UPPER_PORT;

HOST                 LOWER_PORT  UPPER_PORT  ACL           PRIVILE

——————– ———- ——————————
smtp.server.in.com     25         25        /sys/acls/SCOTT.xml GRANTED
smtp.server.in.com                          /sys/acls/SCOTT.xml
GRANTED

Zum Hinzufügen zusätzlicher Benutzer zur ACL-Verwendung unten

BEGIN
DBMS_NETWORK_ACL_ADMIN.ADD_PRIVILEGE(
acl         => ‚SCOTT.xml‘,
principal   => ‚MN‘,
is_grant    =>  TRUE,
privilege   => ‚connect‘);
END;
/

BEGIN
DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL(
acl         => ‚SCOTT.xml‘,
host        => ‚Mail Server name‘,
lower_port => 25);
END;
/
commit;

 

Dieser Beitrag wurde unter ORACLE veröffentlicht. Setze ein Lesezeichen auf den Permalink.