lunes, 2 de octubre de 2017

Listas de Control de Acceso (ACL) PUBLIC SMTP - Base de Datos Oracle 12C

1. Creacion de la ACL en una base de datos Oracle 12C

Con la siguiente Sentencia se crea la ACL y se le da el nombre de smtp_acl_file.xml, el permiso se le da al usuario PUBLIC con el objetivo de que la ACL la pueda usar cualquier schema y con el privilegio de connect. 


BEGIN
 DBMS_NETWORK_ACL_ADMIN.CREATE_ACL (
  acl => 'smtp_acl_file.xml',
  description => 'ACL that lets everyone send mail',
  principal => 'PUBLIC',
  is_grant => TRUE,
  privilege => 'connect');
END;

2. Asignación de permisos: 'resolve'  a la ACL 'smtp_acl_file.xml'

Se le asigna permisos a la ACL smtp_acl_file.xml de RESOLVE  a todos osea a PUBLIC, este permiso permite buscar todos los nombres de host y direcciones IP.

BEGIN
DBMS_NETWORK_ACL_ADMIN.add_privilege(
            acl         => 'smtp_acl_file.xml',
            principal   => 'PUBLIC',
            is_grant    => TRUE,
            privilege   => 'resolve'
        );
END;
/
COMMIT;

3. Se le asigna el nombre de host o URL y el puerto del servicio en este caso seria el 25 el del SMTP.

BEGIN
DBMS_NETWORK_ACL_ADMIN.assign_acl(
        acl          => 'smtp_acl_file.xml',
        HOST         => 'smtp.example.oracle.com',
        lower_port   => 25,
        upper_port   => 25
    );
END;
/
COMMIT;

4. Se realiza la prueba con la siguiente consulta y se valida que tenga los GRANT.

Con el siguiente query se revisa si la pagina con el puerto tiene el grant asignado.

SELECT host, lower_port, upper_port, acl, DECODE( DBMS_NETWORK_ACL_ADMIN.CHECK_PRIVILEGE_ACLID(aclid, 'PUBLIC', 'connect'),
            1, 'GRANTED', 0, 'DENIED', null) privilege FROM dba_network_acls
    WHERE host IN (SELECT * FROM TABLE(DBMS_NETWORK_ACL_UTILITY.DOMAINS('smtp.example.oracle.com')))
   --ORDER BY DBMS_NETWORK_ACL_UTLITITY.DOMAIN_LEVEL(host) desc, lower_port, upper_port;



No hay comentarios.:

Publicar un comentario