리소스

본 장에서는 리소스(General resources)의 설정 방법과 사용법에 대해서 설명한다.

1. 개요

리소스(General Resources)는 데이터셋을 제외한 OpenFrame 시스템에서 사용되는 모든 리소스를 의미한다. 리소스는 해당 리소스가 트랜잭션 종류의 리소스인지 터미널 종류의 리소스인지에 따라 리소스 유형별로 분류할 수 있으며, 이 분류를 CLASS라고 한다.

데이터셋과 동일하게 특정 리소스에 접근하려는 사용자로부터 미리 등록된 리소스의 접근 레벨에 따라 리소스를 보호하기 위해서는 해당 리소스 프로파일을 등록해야 한다. 리소스의 접근 레벨은 데이터셋 권한 설정을 참고한다. 리소스 프로파일의 내용은 데이터셋과 동일하지만 리소스에는 CLASS를 별도로 명시해주어야 한다.

CLASS는 TACF에서 미리 정의된 리소스의 유형별 분류로서 멤버 클래스와 리소스 그룹 클래스가 있으며, 멤버 클래스와 리소스 그룹 클래스는 서로 상호 참조할 수 있다. 리소스의 유형에 따라 다음과 같은 CLASS로 분류된다.

  • 일반 리소스 (Generic Resource)

    동일 유형의 리소스에 대한 접근제어를 개별적인 프로파일로 관리한다. 해당 유형의 리소스가 속하는 CLASS를 멤버 클래스라고 한다.

  • 그룹 리소스 (Group Resource)

    동일 유형의 많은 리소스를 한 개의 리소스로 그룹화하여 리소스의 접근제어를 한 개의 프로파일로 관리한다. 해당 유형의 리소스가 속하는 CLASS를 리소스 그룹 클래스라고 한다.

다음은 TACF에 미리 정의된 멤버 클래스와 리소스 그룹 클래스이다.

멤버 클래스 리소스 그룹 클래스 용도

SURROGAT

없음

위탁 작업 전송

TERMINAL

GTERMINL

TSO/VM 터미널

TCICSTRN

GCICSTRN

CICS 트랜잭션

FCICSFCT

HCICSFCT

CICS 파일

DCICSDCT

ECICSDCT

CICS TDQ

SCICSTST

UCICSTST

CICS TSQ

MCICSPPT

NCICSPPT

CICS 프로그램

ACICSPCT

BCICSPCT

START된 CICS 트랜잭션

TJESMGR

GTJESMGR

tjesmgr 명령어

UTILITY

GUTILITY

JCL Runner 유틸리티(JOB을 통해 실행할 수 있는 모든 프로그램들 포함)

UNIFYDS

GUNIFYDS

등록되지 않은 데이터셋에 대해 볼륨을 리소스로 등록해서 권한을 관리한다.

JESJOBS

없음

JOB 명령어

JESSPOOL

없음

SPOOL 데이터셋

OFMANAGR

없음

OpenFrame Manager 로그인 제어

  1. 맴버 클래스 중에 CICS와 관련된 TCICSTRN, FCICSFCT, DCICSDCT, SCICSTST, MCICSPPT, ACICSPCT는 자세한 내용은 OpenFrame OSC "운영자 안내서"의 "리소스 보안"을 참고한다.

  2. tjesmgr 명령어에 대한 자세한 내용은 OpenFrame Batch "TJES 안내서"의 "TJESMGR 명령어"를 참고한다.

2. 리소스 프로파일

TACF에서 지원하는 리소스 프로파일로는 개별 리소스 프로파일과 일반 리소스 프로파일 그리고 그룹 리소스 프로파일이 있다.

  • 개별 리소스 프로파일(Discrete resource profile)

    한 개의 특정한 리소스를 하나의 유일한 프로파일로 해당 리소스를 관리한다. 개별 프로파일은 해당하는 리소스의 이름과 정확하게 일치한다. 개별 프로파일을 이용해서 리소스를 관리하게 되면 각각의 리소스를 개별적인 프로파일로 세밀하게 관리할 수 있는 장점이 있지만 많은 양의 프로파일을 관리 해야 한다는 단점도 존재한다.

  • 일반 리소스 프로파일(Generic resource profile)

    유사한 이름형식과 접근 권한을 가지고 있는 여러 개의 리소스를 한 개의 프로파일로 관리한다. 예를 들어 첫 번째 qualifier가 모두 TMAX로 시작하는 리소스가 동일한 사용자들에게 접근이 허용되어있다면, 해당 리소스에 대해 각각의 프로파일을 등록하지 않고 ‘TMAX.**’라는 하나의 프로파일로 등록해서 리소스를 관리할 수 있다. 일반 프로파일은 개별 프로파일처럼 각각의 프로파일을 세밀하게 관리할 수는 없지만, 하나의 프로파일로 다수의 리소스를 관리할 수 있다는 장점이 있다.

  • 그룹 리소스 프로파일(Group resource profile)

    일반 프로파일과 마찬가지로 한 개 이상의 리소스를 한 개의 프로파일로 관리한다. 하지만 그룹 리소스 프로파일의 멤버들은 일반 프로파일로 관리되는 리소스처럼 동일한 이름 규약을 가지고 있지 않다.

리소스 프로파일과 데이터셋 프로파일의 특징은 동일하다. 단, 리소스 프로파일에서는 첫 번째 qualifier에 특수문자 사용이 가능하고 '***' 특수문자는 지원하지 않는다.

새로운 리소스를 등록하는 경우 리소스 프로파일이 생성되며, 리소스를 등록할 때 지정한 정보가 프로파일의 각 필드에 저장된다. 리소스를 등록할 때 반드시 입력해야 하는 값은 CLASSNAME과 PROFILENAME이며, 그 외의 필드는 사용자가 정의한 설정값에 따라 자동적으로 설정된다.

다음은 리소스 프로파일에 저장되는 리소스 정보이다.

필드 설명

CLASSNAME

해당 일반 프로파일이 속한 클래스 이름을 설정한다. 반드시 입력해야 하는 필수항목이다.

PROFILENAME

TACF상에 보호할 리소스의 이름이 설정되며 반드시 입력해야 하는 필수항목이다. 프로파일의 이름으로는 영문자, 숫자와 특수문자(‘%’, ‘*’, ‘**’)가 사용되고, 영문자, 숫자와 특수문자를 포함한 프로파일을 일반 프로파일이라 한다.

OWNER

해당 프로파일의 소유자 사용자 아이디나 그룹 이름을 설정한다.

프로파일의 소유자는 해당 프로파일을 변경하거나 삭제할 수 있다. 또한 프로파일의 소유자는 해당 리소스에 접근할 수 있는 권한이 부여된다.

지정하지 않은 경우에는 등록자의 아이디를 설정한다.

MEMBERS

그룹 리소스 프로파일에 속한 개별 프로파일의 이름 또는 개별 프로파일이 속한 그룹 리소스 프로파일 이름을 설정한다.

UACC

해당 리소스에 대한 Universal Access Authority를 설정한다.

지정하지 않은 경우 NONE이 설정된다. 접근 권한에 대한 설명은 데이터셋 권한 설정을 참고한다.

AUDT

리소스를 접근할 때의 Audit Level이 지정된다. 자세한 설명은 데이터셋 프로파일을 참고한다.

현재 TACF에서는 리소스 프로파일 필드 중 CATEGORY, SECLEVEL, SECLABEL, DATA, FLAGS, LTMODDT, NOTIFY 에 대해서는 내부적으로 사용하는 값을 사용하거나 오류를 발생시키지 않도록 형식적으로만 지원하고 있다.

그룹 리소스 프로파일 생성

그룹 리소스 프로파일의 멤버들은 일반 프로파일로 관리되는 일반 리소스처럼 이름 규칙을 가지고 있지 않으므로, 리소스의 이름을 일반 프로파일로 작성할 수 없는 경우에 그룹 리소스 클래스라는 별도의 프로파일을 하나 등록하고 각각의 리소스를 해당 그룹 리소스 프로파일의 멤버로서 추가한다. 결국, 그룹 리소스 프로파일을 통해 해당 리소스의 접근 권한을 하나의 프로파일로 관리할 수 있다.

그룹 리소스 프로파일은 다음의 과정을 통하여 TACF에 등록된다.

  1. 그룹 리소스 프로파일에 등록할 리소스들에 대해 개별 프로파일을 등록한다.

  2. 해당 리소스를 RDEFINE 또는 RALTER의 ADDMEM를 이용하여 그룹 리소스 프로파일에 추가한다.

  3. 해당 리소스를 그룹 리소스 프로파일에서 삭제할 경우에는 RALTER 명령의 DELMEM에 해당 리소스의 프로파일 이름을 지정한다.

그룹 리소스 프로파일을 TACF에 등록하는 과정에서 사용된 명령어는 TACF 명령어를 참고한다.

3. 리소스 권한 설정

데이터셋 권한 설정 방법과 동일하게 리소스의 권한은 다음과 같은 두 가지 방법으로 설정할 수 있다.

  • 개별 리소스 프로파일 생성하는 경우 UACC를 지정하는 방법

    모든 사용자에게 동일한 접근 레벨의 권한을 주도록 설정한다.

  • 접근 리스트를 이용하여 개인별 권한을 설정하는 방법

    리소스를 사용할 사용자 또는 그룹을 지정하고 해당 리소스를 사용할 시간과 요일을 결정한 후에 PERMIT 명령을 이용해서 등록한다.

리소스에서 설정할 수 있는 권한 레벨은 데이터셋 권한 설정을 참고한다.

4. UNIFYDS

데이터셋의 권한을 체크할 때 각각의 데이터셋의 프로파일을 일일이 등록하지 않고 해당 데이터셋이 속한 볼륨을 이용해서 권한 체크를 할 수 있다. 볼륨을 UNIFYDS 클래스의 리소스로 등록할 경우, 데이터셋 프로파일에 의해 보호되지 않는 데이터셋의 경우엔 UNIFYDS에 등록된 볼륨의 정보를 가지고 권한 체크를 실시한다.

OpenFrame 환경설정의 TACF 서브젝트, AUTH_OPTION 섹션의 ENABLE_UNIFYDS 키의 VALUE 항목을 YES로 설정한 다음 해당 기능을 사용할 수 있다.

다음과 같이 볼륨을 UNIFYDS 클래스에 등록한다. 일반적인 리소스 프로파일을 등록하는 방법과 동일하다.

RDEFINE UNIFYDS DEFVOL UACC(EXECUTE)

TACF 서브젝트 설정방법에 대한 자세한 내용은 OpenFrame TACF "환경설정 안내서"를 참고한다.

5. 대리 작업 전송

대리 작업 전송(Surrogated JOB Submit)이란 JOB을 submit하는 사용자와 실제 JOB을 실행하는 사용자가 다른 것을 말한다. JOB을 submit해서 실행할 때 일반적으로 JCL에 사용자 아이디와 비밀번호를 지정하여 submit된 JOB을 실행할 권한을 가진 사용자를 명시한다. 하지만 위탁 작업 전송은 JOB을 실행할 때 필요한 리소스의 접근 권한을 JOB을 전송한 사용자가 아닌 실제 JOB을 실행하는 사용자의 권한으로 체크하게 된다.

JOB을 전송하는 사용자와 실행하는 사용자가 시스템상에 별도로 존재할 수 있고, 또한 별도의 권한을 가질 수 있기 때문에 일반적으로 JOB을 전송하는 사용자와 JOB을 실행하는 사용자를 분리한다. 하지만 JOB을 submit 하는 사용자가 해당 JCL을 참조할 수 있는 권한이 있다면, JCL에 기술된 JOB 실행자의 비밀번호가 노출될 위험이 있기 때문에 이 경우에는 실행자의 비밀번호를 기술하지 않고 사용자 아이디만 기술하고, 대리권한을 등록하여 실행자의 비밀번호를 노출시키지 않고 해당 JOB을 실행할 수 있다.

다음은 대리 작업 전송의 리소스 등록과 권한 등록의 예이다. 리소스 등록 명령(RDEFINE)으로 대리 작업 전송 리소스를 등록한다.

RDEFINE SURROGAT executor.SUBMIT UACC(NONE)

해당 대리 작업 전송 리소스에 대한 권한을 등록한다.

PERMIT executor.SUBMIT CLASS(SURROGAT) ID(submitter) ACCESS(READ)

위의 예제에서는 JOB을 실행할 사용자의 아이디를 executor라 하고 JOB을 전송할 사용자 아이디를 submitter라고 한다.

6. TACF TJES

TACF로 SUBMIT, STOP, REMOVE, HOLD, START, CANCEL, SUSPEND, RESUME, NICE에 대한 권한 체크, Spool 데이터셋에 대한 접근 권한 설정을 수행할 수 있다.

기능이 동작하기 위해서는 OpenFrame 환경설정의 tjes 서브젝트, TACF 섹션의 CHECK_JOBNAMEAUTH,CHECK_SPOOLAUTH 키의 VALUE 항목이 모두 YES로 되어 있어야 한다.

tjes 서브젝트 설정방법에 대한 자세한 내용은 OpenFrame Batch "환경설정 안내서"를 참고한다.

SUBMIT 권한 체크

TACF는 특정 jobname을 갖는 작업의 실행조작 권한을 설정하므로 권한이 없는 사용자로부터의 작업에 대한 부적절한 조작을 방지할 수 있다.

특정 jobname을 갖는 작업의 SUBMIT 행위를 보호하기 위해서는 다음과 같은 작업이 필요하다.

  1. RDEFINE 명령을 이용해서 JESJOBS class에 속하는 프로파일을 정의한다. 프로파일을 등록할 때 UACC를 READ 이상으로 설정할 경우에는 모든 사용자에게 동일한 READ 권한이 부여되므로 UACC는 반드시 NONE으로 설정한다.

    프로파일의 이름은 다음의 규칙에 따라 설정한다.

    SUBMIT.<jobname>
    입력항목 설명

    jobname

    TACF를 통해서 통제할 작업의 이름을 지정한다.

  2. PERMIT 명령을 이용해서 특정 사용자 또는 그룹에 SUBMIT 권한을 부여한다. 권한을 부여할 때 ACCESS(접근 권한)을 READ로 설정한다.

    PERMIT SUBMIT.<jobname> CLASS(JESJOBS) ID([userid | group]) ACCESS(READ)
    입력항목 설명

    jobname

    TACF를 통해서 통제할 작업의 이름을 지정한다.

    userid/group

    해당 jobname의 작업에 대한 SUBMIT 권한을 부여할 사용자 또는 그룹을 지정한다.

REMOVE, STOP 권한 체크

특정 jobname을 갖는 작업의 REMOVE, STOP 행위를 보호하기 위해서는 다음과 같은 작업이 필요하다.

  1. RDEFINE 명령을 이용해서 JESJOBS class에 속하는 프로파일을 정의한다. 리소스 프로파일의 등록은 SUBMIT과 동일하다.

    프로파일의 이름은 다음의 규칙에 따라 설정한다.

    REMOVE.<jobname> 또는 STOP.<jobname>
    입력항목 설명

    jobname

    TACF를 통해서 통제할 작업의 이름을 지정한다.

  2. PERMIT 명령을 이용해서 특정 사용자 또는 그룹에 REMOVE, STOP 권한을 부여한다. 권한을 부여할 때 ACCESS(접근 권한)을 ALTER로 설정한다.

    PERMIT REMOVE|STOP.<jobname> CLASS(JESJOBS) ID([userid | group]) ACCESS(ALTER)
    입력항목 설명

    jobname

    TACF를 통해서 통제할 작업의 이름을 지정한다.

    userid/group

    해당 jobname의 작업에 대한 SUBMIT 권한을 부여할 사용자 또는 그룹을 지정한다.

HOLD, START, CANCEL, SUSPEND, RESUME, NICE 권한 체크

이 외에도 HOLD, START, CANCEL, SUSPEND, RESUME, NICE에 대해서도 jobname 단위로 실행 권한을 체크할 수 있다.

해당 명령 실행에 대한 권한을 설정하기 위해서는 다음과 같은 작업이 필요하다.

  1. RDEFINE 명령을 이용해서 JESJOBS class에 속하는 프로파일을 정의한다.

    프로파일의 이름은 다음의 규칙에 따라 설정한다.

    HOLD|START|CANCEL|SUSPEND|RESUME|NICE.<jobname>
    입력항목 설명

    jobname

    TACF를 통해서 통제할 작업의 이름을 지정한다.

  2. PERMIT 명령을 이용해서 특정 사용자 또는 그룹에 해당 명령에 대한 권한을 부여한다. 권한을 부여할 때 ACCESS(접근 권한)을 READ로 설정한다.

    PERMIT HOLD|START|CANCEL|SUSPEND|RESUME|NICE.<jobname> CLASS(JESJOBS) ID([userid | group]) ACCESS(READ)
    입력항목 설명

    jobname

    TACF를 통해서 통제할 작업의 이름을 지정한다.

    userid/group

    해당 jobname의 작업에 대한 HOLD, START, CANCEL, SUSPEND, RESUME, NICE 권한을 부여할 사용자 또는 그룹을 지정한다.

Spool 데이터셋에 대한 접근 권한 설정

TACF는 다음과 같은 Spool 데이터셋에 대해서 사용자 별로 접근 권한을 설정하여 권한이 없는 사용자에 대한 접근을 제어할 수 있다. 이는 Spool 데이터셋의 생성을 제어하는 것이 아니라 단지 Spool 데이터셋의 읽기권한(조회)에 대한 제어만을 체크한다.

접근제어의 대상이 되는 Spool 데이터셋의 종류는 다음과 같다.

  • INPJCL

  • JESMSG

  • JESJCL

  • SYSMSG

  • CATPROC

  • output dataset

Spool 데이터셋의 접근 권한을 설정하는 방법은 다음과 같다.

  1. RDEFINE 명령을 이용해서 JESSPOOL class에 속하는 Spool 데이터셋에 대한 프로파일을 등록한다. UACC를 READ 이상으로 설정할 경우에는 모든 사용자에게 동일한 READ 권한이 부여되므로 반드시 UACC를 NONE으로 설정한다.

    프로파일의 이름은 다음의 규칙에 따라 설정한다.

    <jobname>.<spool dataset>
    입력항목 설명

    jobname

    jobname을 지정한다.

    spool dataset

    Spool 데이터셋 이름 또는 모든 Spool 데이터셋에 대한 generic profile을 설정하는 경우는 애스터리스크(*)로 지정한다.

  2. PERMIT 명령을 이용해서 특정 사용자 또는 그룹에 대해서 해당 Spool 데이터셋에 대한 읽기 권한을 설정한다.

    PERMIT <profile-name> CLASS(JESSPOOL) ID(<userid | group>) ACCESS(READ)
    입력항목 설명

    profile-name

    RDEFINE 명령으로 설정한 프로파일 이름을 지정한다.

    userid/group

    해당 Spool 데이터셋에 읽기 권한을 부여할 사용자 또는 그룹을 지정한다.