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
2) Aggiungo il privilegio all'utente per l'utilizzo del network
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.
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.
Con DBMS_NETWORK_ACL_ADMIN è possibile gestire anche la drop della ACL
Questo package ha numerose funzionalità ma per questo vi indirizzo alla documentazione ufficiale Oracle.
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