6f429244e498457b8400e72e4af683b0 Alberto Blog: ORA-24247: network access denied by access control list (ACL)

giovedì 12 settembre 2013

ORA-24247: network access denied by access control list (ACL)

Dopo una migrazione da Oracle 10G a 11G ho notato che la mia  procedura di notifica attraverso la spedizione di mail non funziona più e mi restituiva l'errore: ORA-24247: network access denied by access control list (ACL)

Dalla versione 11 infatti Oracle ha introdotto nuove sicurezze (ACL) per l'utilizzo dei network packages come utl_tcp, utl_smtp, utl_mail, utl_http e utl_inaddr  perchè in passato quando un utente possedeva il grant per questi package non c'erano sufficienti controlli e quindi si poteva rendere il database non sicuro.

Nel mio caso come primo passo ho creato una ACL

begin
dbms_network_acl_admin.create_acl (
acl => 'send_mail_permissions.xml',
description => 'Send Mail',
principal => 'MY123',
is_grant => TRUE,
privilege => 'connect',
start_date => null,
end_date => null
);
end;
/
commit;


2) Aggiungo il privilegio all'utente per l'utilizzo del network

begin
DBMS_NETWORK_ACL_ADMIN.ADD_PRIVILEGE(acl => 'sendmail_permissions.xml',
principal => 'MY123',
is_grant => true,
privilege => 'connect');
end;
/
commit;

3) Questo è la novità più interessante la quale ci da la possibilità di gestire in modo capillare le risorse del network assegnando un ACL, specificando utente, host di destinazione e un range di porte.

BEGIN
dbms_network_acl_admin.assign_acl (
acl => 'sendmail_permissions.xml',
host => '56.3.6.81',
lower_port => 20,
upper_port => 80
);
END;
/
commit;


Nel parametro host ho inserito l'indirizzo IP ma c'è la possibilità di aggiungere anche il privilegio di resolve all'utente, inserendo invece il nome dell'host.

begin
DBMS_NETWORK_ACL_ADMIN.ADD_PRIVILEGE(acl => 'sendmail_permissions.xml',
principal => 'MY123',
is_grant => true,
privilege => 'resolve');
end;
/
commit;


Con DBMS_NETWORK_ACL_ADMIN è possibile gestire anche la drop della ACL

BEGIN
DBMS_NETWORK_ACL_ADMIN.DROP_ACL(
 acl => 'sendmail_permissions.xml');
END;
commit;

Questo package ha numerose funzionalità ma per questo vi indirizzo alla documentazione ufficiale Oracle.

Nessun commento:

Posta un commento