DB (데이터베이스)/Oracle (오라클)

[Oracle] ORA-24247 네트워크 엑세스가 ACL(엑세스 제어 목록)에 의해 거부되었습니다.

뜽배 2024. 5. 3. 16:12
728x90
반응형

라는 애러는 UTL_SMTP의 UTL_SMTP.OPEN_CONNECTION을 사용할 떄 애러메시지가 떨어진다.

이유는 외부 네티워크 서비스에 대한 엑세스가 허용되지 않았을 때 발생한다.

이를 해결하려면 UTL_SMTP를 사용하는 유저가 네트워크 서비스에 엑세스할 수 있도록
데이터베이스 제어 목록(ACL)을 설정해야 한다.


1. ACL설정

새로운 ACL을 설정하고 이를 유저에게 할당한다.

BEGIN
	DBMS_NETWORK_ACL_ADMIN.create_acl(
		acl => 'smtp_permission.xml',
		descriptions => 'ACL for SMTP Access',
		principal => '데이터베이스 유저 명',
		is_grant => TRUE,
		privilege => 'connect'
	);
	COMMIT;
END;


2. SMTP서버에 대한 권한 추가

생성된 ACL에 SMTP서버 주소를 추가하고, 해당 서비스에 대한 엑세스 권한을 설정합니다.

 

BEGIN
	DBMS_NETWORK_ACL_ADMIN.add_privilege(
		acl => 'smtp_permission.xml',
		principal => '데이터베이스 유저 명',
		is_grant => TRUE,
		privilege => 'resolve'
	);
	COMMIT;
END;

 


3. 1번과 2번의 실행 결과 확인

 

select *
from dba_network_acl_privileges;


를 조회하면 principal에 유저명과 privilege에 권한을 조회할 수 있다.
1번과 2번을 정상적으로 진행했다면 추가하고자 하는 유저에 connect, resolve 권한이 추가되었을 것이다.


4. ACL을 SMTP서버에 할당  


ACL을 SMTP서버의 주소에 할당한다.
※ 이미 acl을 smtp서버에 할당했으면 생략가능

BEGIN

	DBMS_NETWORK_ACL_ADMIN.assign_acl(
		acl => 'smtp_permission.xml',
		host => '실제 SMTP서버 주소 입력',
		lower_port => 25,
		upper_port => 25
	);
	COMMIT;
END;


5. dba_network_acl 조회

 

select *
from dba_network_acl;


을 조회하여 특정 호스트명으로 할당된 acl을 확인할 수 있다.

728x90
반응형