TACF 소개
본 장에서는 OpenFrame TACF의 기능, 시스템 구조, OpenFrame과의 연동방법에 대해 기술한다.
1. 개요
OpenFrame TACF(Tmax Access Control Facility , 이하 TACF)는 OpenFrame 시스템(또는 시스템)에 접근하려는 사용자에 대한 인증 과정을 통하여 허가되지 않은 사용자로부터 시스템을 보호하고, 권한이 없는 사용자로부터 시스템상의 리소스에 대한 부적절한 접근을 차단하기 위해 OpenFrame 시스템에서 실행되는 보안제품이다.
TACF는 사용자의 접근기록과 리소스의 접근기록을 로그형태로 기록하여 리소스 통계정보에 대한 기초자료를 제공한다.
TACF는 다음의 기능을 제공한다.
-
사용자 인증
TACF는 시스템에 접근하는 사용자를 인증하기 위하여 사용자 아이디(USERID)와 사용자 본인임을 확인하기 위한 비밀번호(PASSWORD)를 요구한다. 사용자 인증에 실패한 사용자는 시스템에 접속할 수 없으며, 시스템에서 제공하는 어떠한 리소스에 대한 접근도 허용되지 않는다. 이처럼 OpenFrame 시스템에 접근하는 사용자에 대해 적절한 사용자인지 확인하는 과정을 사용자 인증이라고 한다.
-
리소스 접근제어
사용자가 데이터셋, 터미널 또는 프로그램 등과 같은 시스템상의 특정 리소스를 사용하려고 할 때 TACF에 미리 등록된 접근 리스트를 참조한다. 그때 해당 리소스에 대한 접근 권한이 있는 사용자인지 확인함으로써, 사용자별로 특정 리소스에 대한 접근을 제어한다.
-
리소스 접근에 대한 기록
사용자의 시스템 접속시간, 접근횟수, 그리고 사용자에 의해 접근된 특정 리소스에 대한 통계정보를 기록한다. 시스템 관리자는 이 정보를 가지고 리소스들이 얼마나 사용되었는지에 대한 정보뿐만 아니라 리소스의 보안 노출 정도도 확인할 수 있다.
2. TACF 구조
TACF는 프로파일(profile)을 등록, 변경, 삭제 또는 참조하여, 사용자의 인증과 리소스의 접근을 제어한다. 이 프로파일은 RDBMS(관계형 데이터베이스 관리 시스템)에서 테이블을 의미한다(본 안내서에서는 특별한 경우를 제외하고는 테이블이라는 용어 대신에 프로파일이라고 기술한다).
리소스 프로파일의 변경이 없는 리소스에 대한 빈번한 접근은 동일한 정보를 매번 데이터베이스에 의뢰하게 되므로 데이터베이스에 부담이 된다. 이러한 빈번한 데이터베이스의 요청을 줄이기 위해 자주 변경되지 않는 프로파일은 매번 데이터베이스의 질의를 통해 얻어오는 것이 아니라 TACF가 기동되는 시점에서 메모리상에 로드하고, 해당 리소스의 정보가 필요한 경우에는 데이터베이스가 아닌 메모리에서 정보를 참조하기 때문에 데이터베이스의 부하를 줄여준다.
TACF는 클라이언트/서버 구조를 갖는 Tmax 서비스 형식의 인터페이스와 라이브러리의 API를 직접 호출하는 방식의 인터페이스를 둘 다 제공하므로 다양한 환경에서 보안 인증을 처리할 수 있다.
또한 고객사 고유의 사용자 아이디 규칙이나 비밀번호 규칙이 존재할 경우 고객사에서 제작한 모듈에 대한 엔진 수정 없이 플러그인(plugged-in) 형식의 SAF_EXIT 모듈에서 제공하는 인터페이스에 맞춰 고객사 고유의 API를 작성하면, TACF 내부에서는 해당 API를 호출하게 되므로 TACF 내부 모듈의 수정 없이도 고객사 고유의 업무를 적용할 수 있다. 인증에 성공한 사용자 정보는 데이터베이스가 아닌 로그인할 때에 자동으로 생성되는 별도의 ACEE(ACcessory Environment Element)에 각각 저장되며, 해당 사용자의 비밀번호, 속성, 접속그룹 등의 정보는 ACEE에서 받는다. 이런 ACEE 정보는 해당 사용자가 시스템에 접속해 있는 동안 유지되며, 로그아웃하게 되면 해당 사용자에 대한 정보는 ACEE에서 즉시 삭제된다.
다음은 TACF 시스템의 구조를 나타낸 그림이다(실선은 API의 호출을 의미하고, 점선은 서비스에 의한 호출을 의미하며, 화살표는 자료의 이동 방향을 나타낸다).
-
SAFO
SAFO는 클라이언트의 요청을 받아들이고 클라이언트에게 응답하는 API 방식으로 제공되는 클라이언트 인터페이스이다. 서버와 클라이언트가 동일한 노드에 존재하여 Tmax 서비스를 사용할 필요가 없을 경우에 사용된다.
TACF 사용자 인증에 성공한 클라이언트에게는 토큰 대신에 직렬화된 SACEE를 제공하여, 사용자에 대한 정보가 필요할 때마다 TACF에게 정보를 요청하지 않고, 서버로부터 제공받은 SACEE에서 필요한 사용자의 정보를 찾아 사용할 수 있다.
-
SAFX
SAFX는 앞서 언급한 것과 같이 클라이언트에게 제공되는 Tmax 서비스 형태의 인터페이스 모듈이다. TACF 사용자 인증에 성공한 클라이언트에게는 리소스 접근을 위한 권한으로 ACEE 대신에 토큰을 발행하여 토큰을 가진 클라이언트만이 리소스에 접근할 수 있도록 함으로써, 네트워크 부하를 줄이고 네트워크 상의 사용자 정보가 노출되지 않도록 보호할 수 있다. 클라이언트에게 제공된 토큰은 클라이언트가 시스템을 로그아웃하는 즉시 TACF에 의해 폐기된다.
-
SAF
SAF 모듈은 외부 인터페이스인 SAFO와 SAFX를 TACF와 연결해주며, ACEE 정보의 생성과 관리 그리고 시스템에 접근을 시도한 사용자의 정보, 접속 사용자 아이디, 접속 성공여부, 접속시간 등의 정보와 특정 리소스에 대한 접근 정보를 기록한다.
-
TACF
TACF는 인증에 성공한 사용자의 비밀번호와 속성, 연결 그룹 등의 정보를 ACEE로부터 얻어낸다. TACF는 사용자의 식별과 인증 그리고 리소스들에 대한 접근 권한을 제한하는 메인 모듈이다.
-
SAF_EXIT
SAF_EXIT는 TACF의 기본 기능 이외에 각 고객사에게 커스터마이즈 기능을 제공하는 모듈이다.
고객사 고유의 사용자 아이디 생성 규칙이 존재할 경우 신규 사용자를 등록할 때 이 사용자의 아이디가 해당 규칙에 적합한지 확인하거나 비밀번호 규칙이 존재할 경우 비밀번호 변경에 대한 해당 규칙의 적합성 여부를 체크하는 것을 고객사 커스터마이즈의 한 예로 들 수 있다.
-
tacfmgr
TACF Manager인 tacfmgr은 TACF에서 사용자를 추가하거나 리소스의 프로파일을 등록하는 등의 TACF 관리를 위한 툴이다. 자세한 설명은 TACF 명령어를 참고한다.
3. OpenFrame과의 동작방법
온라인 시스템과 배치 시스템에서는 서로 다른 방법으로 TACF를 이용한다. 온라인 시스템 환경에서의 프로그램은 TACF에서 제공하는 API 인터페이스를 호출하여 TACF의 기능을 이용한다.
반면, 배치 시스템 환경의 경우 JOB을 수행하는 TJES 엔진은 해당 JOB이 JCL에 기술된 사용자를 직접 인증하거나 해당 사용자가 특정 리소스에 접근하려고 할 때 Tmax 서버인 ofrsasvr에서 서비스 형태로 TACF에게 사용자 인증요청이나 특정 리소스의 접근 권한 확인요청을 하게 된다.
그러나 배치 시스템에서 제공하는 툴이나 유틸리티 프로그램들은 온라인용 프로그램과 동일하게 TACF가 제공하는 API 인터페이스를 직접 호출하여 TACF의 기능을 이용한다.
4. TACF 서버 기동과 종료
TACF 서버는 도메인당 1개만 기동되어야 하며, 해당 도메인의 어느 노드에서 TACF 서버를 기동할 것인지를 결정한 후에 기동한다.
만약 해당 도메인의 TACF가 이미 기동 중이라면 해당 노드의 Tmax 설정 파일을 확인 한 후에 기동 중인 서버를 종료한 후 기동하고자 하는 서버로 재기동해야 한다. 또한 TACF를 기동하기 전 DB connection 통합 관리 설정 파일인 dbconn.conf에 [SYS1_ODBC] 섹션에 지정된 데이터베이스에 접속하여 사용 가능 여부를 확인해야 한다.
데이터베이스에 접속이 불가능한 경우에는 자동으로 백업 데이터베이스에 접속을 시도하고 백업 데이터베이스에도 접속이 불가능한 경우에 TACF 서버는 기동하지 못한다.
TACF 서버를 종료할 때 긴급한 사항이 아닌 경우에는 배치 작업이 실행되는 중간에 종료하지 않는다. 만약 해당 작업들이 실행 중에 강제 종료를 했을 경우에는 해당 작업에 에러가 발생하는 원인이 된다.