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

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

sesuai judul, dengan kerjaan migrasi oracle database dari 10g ke 12c, ketemu dah beberapa hal yang tidak lazim. walaupun penggunaan ACL sudah diperkenalkan sejak oracle database versi 11g, cuman baru saat ini ketemu beginian.
setelah migrasi schema-schema yang diperluakan melalui metode export import, dan setelah object-object di recompile, maka ada beberapa script yang tidak bisa run di versi 12c. sebelumnya di versi 10g tidak ada issue dengan script tersebut. mulailah ngobok-ngobok lewat google dan kawan-kawan.
issuenya, setelah running script yang menggunakan UTL_HTTP, untuk akses website melalui sql command, ketemu error seperti ini
SQL>select UTL_HTTP_GET(‘http://example:27272’) from dual;
“ORA-29273: HTTP request failed
ORA-24247: network access denied by access control list (ACL)

waduh… hantu apaan lagi nih, terbersit pertama kali, dan setelah bertanya sama google dan kawan-kawan, barulah ketemu pencerahan. ternyata error tersebut dikarenakan fitur yang ada di 12c dan belum ada di 10g, yaitu Access Control Lists (ACL).
nah, untuk step yang aku lakuin buat solvingnya adalah sebagai berikut.
1. harus kita ketahui script itu running by user mana
2. kita harus check bahwa rules acl untuk ip tersebut sudah ada apa blom di database
3. pastikan bahwa port yang dibutuhkan sudah di open dari sudut pandang operating system
4. create ACS, add priveledge dan granting ke user yang mau menggunakannya.

begini nih caranya yang aku pake.
1. dalam tulisan ini, saya pake user UCOK contohnya.
2. kita check rules ACS di database lewat user SYS
SQL>SELECT * FROM dba_network_acl_privileges where principal=’UCOK’;
klo no row result, brarti blom ada ya. klo ada resultnya, berarti tinggal di liat apakah rules acl tersebut memang untuk web yang dibutuhkan? double check lagi rules acsnya.
3. untuk memastikan bahwa port nya sudah open dari sudut pandang OS, tinggal coba telnet port nya.
dalam tulisan ini, saya ambil sample http://example:27272, merupakan internal webserver, bukan yang internet ya…
pastikan ip server tersebut melalui nslookup or pake cara lain juga ga masalah, untuk hal ini, saya pakai http://example itu di IP 192.168.1.27
jadi, kita tinggal telnet ip dan port tersebut.
server$telnet 192.168.1.27 27272
klo hasilnya OK. brarti dari sisi OS, komunikasi ke webserver dengan specific port tersebut sudah OK.
klo blom, tinggal minta team firewall/network untuk allow IP dan port tersebut untuk saling komunikasi.
4. sekarang tinggal ngerjain ACL dari sisi oracle.
klo hasil pengecekan di step no 2 itu belum ada ACL untuk IP example ini, brarti kita tinggal create dulu. as below

BEGIN
DBMS_NETWORK_ACL_ADMIN.CREATE_ACL (
acl => ‘acl_example_27272_01.xml’,
description => ‘Permissions for 192.168.1.27 port 27272 network’,
principal => ‘UCOK’,
is_grant => TRUE,
privilege => ‘connect’);
END;
/

seltelah kita create ACL nya, baru kita add/assign

BEGIN
DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL (
acl => ‘acl_example_27272_01.xml’,
host => ‘192.168.1.27’,
lower_port => 27272,
upper_port => null);
END;
/

klo ketemu error yang menyatakan bahwa UCOK itu ga ada access ke DBMS_NETWORK_ACL_ADMIN, tinggal kita grant aja, as below

grant execute on DBMS_NETWORK_ACL_ADMIN to ucok;

baru re-run lagi create ACL dan assignment nya.

setelah itu, baru jalankan lagi query UTL_HTTP. as below
SQL>select UTL_HTTP_GET(‘http://example:27272’) from dual;
dalam, case ini, hasilnya sudah OK.

mudah mudahan tulisan ini dapat membantu.
klo masih kurang infonya, silahkan di tanya google dan kawan kawan ya…

regards
Bhieveth

Advertisements

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: