Network Access Control List nedir , nasıl kullanılır ?
11gR1 den itibaren Oracle veritabanlarında dış network hizmetlerine erişim için yetkilendirme , Access Control List (ACL) ile yapılmaktadır. DBMS_NETWORK_ACL_ADMIN isimli paket ile işlemleri yapmak mümkündür. Aşağıdaki PL/SQL paketlerini kullanabilmek için artık network ACL oluşturup bune yetki verilmesi gerekmektedir. Aksi takdirde “ORA-24247: network access denied by access control list (ACL)” şeklinde hata alınacaktır.
• UTL_TCP
• UTL_HTTP
• UTL_SMTP
• UTL_MAIL
Aşağıdaki prosedür ile SCOTT kullanıcısı için yeni bir network_services.xml isimli network acl oluşturup, ilgili kullanıcıya connect ve resolve yetkisi verip , tüm host’lardan hizmet alınabilmesini sağlıyoruz. DBMS_NETWORK_ACL_ADMIN.ADD_PRIVILEGE ile bu network acl için başka kullanıcılar da yetkilendirilebilir. DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL ile de başka host’lar için de yetkilendirme yapılabilir. Tüm host’lar için yetkilendirmek yerine ayrı ayrı yetkilendirme yapmak da mümkün.
BEGIN DBMS_NETWORK_ACL_ADMIN.CREATE_ACL( acl => 'network_services.xml', description => 'NETWORK ACL', principal => 'SCOTT', is_grant => true, privilege => 'connect'); DBMS_NETWORK_ACL_ADMIN.ADD_PRIVILEGE( acl => 'network_services.xml', principal => 'SCOTT', is_grant => true, privilege => 'resolve'); DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL( acl => 'network_services.xml', host => '*'); COMMIT; END;
Sorgulamalar için aşağıdaki sorguları kullanabilirsiniz.
İlgili host için yetkinin oluş olmadığını sorgulamak için :
SELECT * FROM TABLE(DBMS_NETWORK_ACL_UTILITY.DOMAINS('*'));
Tanımlı ACL ve bilgileri için :
select acl , host , lower_port , upper_port from DBA_NETWORK_ACLS; select acl , principal , privilege , is_grant from DBA_NETWORK_ACL_PRIVILEGES;