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;

 

Loading

Leave Your Comment