JES セキュリティの概要

JES のユーザーとリソースのセキュリティ

システムの管理者を定義する必要があります。1 つ以上の管理者アカウントを作成し、SYSADM グループと ALLUSER グループに追加します。セキュリティ構成によっては、それらを他のグループに追加したり、追加の権限を付与したりする必要がある場合があります。

既知のユーザー アカウントがアクセスに使用されないように、デフォルトのセキュリティ構成で定義されたユーザー アカウントを無効にするか削除する必要があります。デフォルトの JES ユーザー JESUSER のすべての権限を削除して、いずれのユーザーも匿名で作業をサブミットできないようにします。すべてのユーザーに対してサインオンを必須にする必要があります。

JCL ジョブを実行する際の主なアクセス チェックは、有効なユーザー ID とパスワードによるユーザー認証です。これは、ユーザーがコマンド ラインまたは ESCWA を使用して JES コマンドを発行するときにチェックされます。コマンドの承認もチェックされます。たとえば、ジョブをサブミットするには、ユーザーが認証されていて、OPERCMDS クラスの cassub リソースにアクセスできる必要があります。ESCWA 管理ページへのアクセスは、Common Web Administration クラスを使用して制限できます。

ジョブをサブミットするときは、ジョブをサブミットするユーザーによって指定された場所に JES エンジンで解析ファイルを作成できるかどうかが PHYSFILE クラスでチェックされます。ジョブがライブラリへの読み取りアクセスを必要とする場合、DATASET クラスでチェックされます。

ジョブを実行するときは、アクセスする各データセットについて DATASET のチェックが行われます。新しいデータセットを作成する場合は、その場所について PHYSFILE のチェックが行われます。

明確に定義された命名規則があれば、誰がどのデータセットにアクセスできるかに関する DATASET ルールを定義し、データセットのファイルシステムの場所へのアクセスを管理する PHYSFILE ルールを定義することで、データセットの作成とアクセスが許可ユーザーだけに制限されます。さらに、データセットを作成するジョブと既存のデータセットのみを使用するジョブを分離すると、ユーザーに付与する必要がある権限を制限するのに役立ちます。

プログラムのロード元の制限

本セクションは、JCL ジョブの EXEC カードの PGM 属性で指定されたプログラムに適用されます。

現在、プログラムは Enterprise Server 構成で [JES Program Path] として設定された検索パスで見つかると実行されます。したがって、いずれのプログラムも内容に制限なく実行できます。ジョブで STEPLIB および JOBLIB ライブラリを設定してプライベート (ユーザー) プログラム ライブラリを指定すると、それらの場所が検索パスの先頭に追加されます。

JES エンジンでのプログラムの検索方法について、SYS1.LNKLIB および ES_JES_HIGHER_SECURITY_LEVEL 環境変数を使用して追加の制限を設定できます。「強化された JCL セキュリティ チェック」を参照してください。

SYS1.LINKLIB の構成

SYS1.LINKLIB は、製品の \bin または \bin64 フォルダー (Windows) か /lib ディレクトリ (UNIX) で始まります。これは、システム提供のユーティリティをロードできる場所です。SYS1.LINKLIB はカタログ内にデータセットとして存在しないため、ユーザーが PC-DSN を変更することはできません。

Windows の場合:

SYS1.LNKLIB= $TXDIR\bin
または
SYS1.LNKLIB= $TXDIR\bin64

UNIX の場合:

SYS1.LNKLIB= $TXDIR/lib

この場所に SYS1.PARMLIB で構築されるライブラリの連結が追加されます。

システム シンボルを保持するために、SYS1.PARMLIB(IEASYM00) がすでに使用されています。これに SYSPARM エントリを含めることもできます。あるいは、それらを新しいデータセット SYS1.PARMLIB(IEASYM01) に配置し、ロードする IEASYSnn メンバーの SYSPARM エントリを SYS1.PARMLIB(IEASYM01) を使用して保持することもできます。

LPARNAME がリージョン名に相当し、SYSPARM で IEASYSnnxx メンバーのインデックスを提供するため、リージョンごとに異なるライブラリ インデックスを使用できることに注意してください。次に例を示します。

  SYSDEF  HWNAME(MVS3090) LPARNAME(JCLTEST)
          SYSPARM(01,L)

  SYSDEF  HWNAME(MVS3090) VMUSERID(VMSYSCB) LPARNAME(ESDEMO)
          SYSPARM(03,L)

  SYSDEF  HWNAME(SYSCC)
          SYSPARM(01,02,L)

ロードする IEASYSnn ライブラリのインデックスが、システムごとに異なるライブラリ インデックス (01、02、03 など) で示されています。たとえば、すべてのリージョンの場合は IEASYS01 と IEASYS02、JCLTEST の場合は IEASYS01 と IEASYS02、ESDEMO の場合は IEASYS01、IEASYS02、および IEASYS03 になります。SYSPARM パラメーターの「L」は、最初のアクセス時にリストを表示することを示します。

それぞれの IEASYSnn メンバーに、ロードする LNKLST インデックスのリストがあります。

LNK=(00,01,02,03)
In the format:
LNK={aa             }
    {(aa,bb,...[,L])}
    {(,L)           }

SYS1.PARMLIB(LNKLSTnn) メンバーは、実行可能なプログラムを保持するデータセットのリストを保持します。

LNKLST00:   SYS1.CMDLIB,SYS1.TSORTNS,SYS1.BTAMLIB,
LNKLST01:   SYS1.LINKLIB,DBLUE.U30LIB(U30PAK),SYS2.U30LIB
LNKLST02:   SYS1.AUXLIB,SYS1.JES3
LNKLST03:   SYS1.TEST

IEASYS00 は常に読み取られるため、システムに対する唯一の LNK 文を含めることができます。複数の LNKLST メンバーを読み取る場合は、IEASYM00 および IEASYM01 のエントリを読み取り、それらを使用して LNKLSTnn の読み取りに使用する IEASYSnn を読み取る必要があります。

したがって、公開プログラム ライブラリの最終的なリストは次のようになります。

SYS1.LINKLIB, SYS1.CMDLIB,SYS1.TSORTNS,SYS1.BTAMLIB, SYS1.LINKLIB,DBLUE.U30LIB(U30PAK),SYS2.U30LIB, SYS1.AUXLIB,SYS1.JES3, SYS1.TEST

プログラムが実行されると、JES エンジンは、ユーザーが必要なアクセス権を持つその名前のプログラムが見つかるまで、リンク リスト内のすべてのライブラリを検索します。デフォルトのセキュリティ レベル (「強化されたセキュリティ チェックへの移行」および「強化された JCL セキュリティ チェック」を参照) では、プログラムに権限が付与されていないかプログラムが見つからないと、コンソールにメッセージが記録されます。プログラムが正常にロードされると、どのライブラリからロードされたかに関するメッセージが記録されます。

動的 PDS

動的 PDS は、動的 PDS として定義されたフォルダー内のファイルがすぐに PDS のメンバーになり、検出されて使用されるため非常に便利です。プログラムをコンパイルしてそのフォルダーに配置するだけで済むからです。同じ理由で、悪意のあるユーザーが悪意のあるプログラムで同じことを行う危険もあります。これを防ぐために、BASIC セキュリティ レベルでは、動的 PDS はプログラムのロード場所から除外されます。デフォルトのセキュリティ レベル (NONE) では、動的 PDS でプログラムが見つかると警告が記録されます。

ESF PROGRAM リソース クラス

PROGRAM リソース クラスが存在しない場合は作成し、そのクラスでリソース アクセス ルールを追加することにより、ESF で追加のセキュリティ チェックを実装できます。データセット内のプログラムに対する READ または EXECUTE の権限がユーザーにあるかどうかがチェックされます。PROGRAM リソース アクセス ルールの名前は program-name.library-name になります。ワイルドカードも使用でき、ライブラリ名で ** をワイルドカードとして使用すると複数の DSN 修飾子と一致します。

LDAP ベースのセキュリティで使用する LDIF の例を次に示します。

dn:CN=PROGRAM,CN=Enterprise Server Resources,CN=Micro Focus,DC=mftesting,DC=com
objectClass: top
objectClass: container
description: JES Class for controlling access to programs

dn:CN=*.**,CN=PROGRAM,CN=Enterprise Server Resources,CN=Micro Focus,DC=mftesting,DC=com
objectClass: microfocus-MFDS-Resource
microfocus-MFDS-Resource-Class: PROGRAM
microfocus-MFDS-Resource-ACE: allow:*:read
microfocus-MFDS-UID: no
description: Allow everyone permission to run any program in any library

ライブラリ内のプログラムを指定するには、program_name.library_name の CN を使用してエントリを構築します。

dn:CN= MYPROG.MFI01.JOBLIB1,CN=PROGRAM,CN=Enterprise Server Resources,CN=Micro Focus,DC=mftesting,DC=com
objectClass: microfocus-MFDS-Resource
microfocus-MFDS-Resource-Class: PROGRAM
microfocus-MFDS-Resource-ACE: allow:AUTOUSER:read
microfocus-MFDS-Resource-ACE: allow:SYSAD:read
microfocus-MFDS-Resource-ACE: deny:*:read
microfocus-MFDS-UID: no
description: Allow AUTOUSER and SYSAD permission to run the MYPROG program in the MFI01.JOBLIB1 library

ワイルドカードを使用する場合は次のようになります。

dn:CN= ABC*.MFI01**,CN=PROGRAM,CN=Enterprise Server Resources,CN=Micro Focus,DC=mftesting,DC=com
objectClass: microfocus-MFDS-Resource
microfocus-MFDS-Resource-Class: PROGRAM
microfocus-MFDS-Resource-ACE: allow:AUTOUSER:read
microfocus-MFDS-Resource-ACE: allow:SYSAD:read
microfocus-MFDS-Resource-ACE: deny:*:read
microfocus-MFDS-UID: no
description: Allow AUTOUSER and SYSAD permission to run any program starting with ABC (including ABC) program in any library that starts with MFI01

JCL で識別されるプログラム名に加えてエイリアス (IDCAMS や MFJAMS など) がある場合は、その両方のエントリが必要です。

プログラム ライブラリは、プログラムがメンバーとして識別される PO である必要があります。PDS にメンバー エントリを追加するには、データセットに対する ALTER 権限が必要です。前述のとおり、動的 PDS は LNKLIB リストでは許可されません。ライブラリ内のプログラムには、JES イニシエーター プロセスを実行しているユーザーの OS 実行権限が必要です。

強化されたセキュリティ チェックへの移行

リリース 9.0 以降では、JES エンジンで追加のセキュリティ対策がサポートされています。これらは、以前のバージョンで機能していたプログラムのロードが失敗する可能性があるため、デフォルトでは有効になっていません。本セクションでは、これらの追加のセキュリティ機能について簡単に説明しています。詳細については、「強化された JCL セキュリティ チェック」を参照してください。Micro Focus では、製品のセキュリティを向上させるために、少なくとも BASIC セキュリティ レベルを有効にすることをお勧めします。

新しいセキュリティ機能は、ES_JES_HIGHER_SECURITY_LEVEL 環境変数を設定することで有効になります。