アプリケーション用のストレージ・キーの定義

アプリケーションが使用できる多くの CICS データ・エリアとアプリケーション・プログラム・データ・エリアについて、ユーザー・キー・ストレージと CICS® -キー・ストレージのいずれかを選択できます。

ストレージ保護およびトランザクション分離の詳細については CICSの保護方法」 を参照してください。

以下のいずれかを使用して、データ域に応じてストレージ・キーを選択します。
  • システム初期設定パラメーター
  • リソース定義オプション
  • GETMAIN コマンドのオプション

システム全体のストレージ域

各 CICS 領域ごとに、インストールでは共通作業域 (CWA) と端末制御テーブル ユーザー域 (TCTUA) のユーザー キー ストレージと CICS キー ストレージのどちらかを選択できます。

これらの領域がユーザーキーストレージにある場合、すべてのプログラムがそれらに対して読み取り/書き込みアクセス権を持つことになります。 これらの領域が CICS キー・ストレージ内にある場合、ユーザー・キー・アプリケーション・プログラムは読み取り専用アクセスのみが可能です。 CWAとTCTUAsのストレージキーは、それぞれシステム初期化パラメータ CWAKEYTCTUAKEY によって設定されます。 いずれの場合も、デフォルトでは、 CICSがユーザー・キー・ストレージを取得します。

タスク存続期間ストレージ

トランザクションの添付時に CICSストレージ、およびトランザクション内の個々のアプリケーション・プログラムに直接関連するストレージの要素に、ユーザー・キーまたは CICSのストレージを使用するかどうかを指定できます。

ユーザー・キー・ストレージと CICS キー・ストレージのどちらを使用するか指定するには、トランザクション・リソース定義で TASKDATAKEY オプションを使用します。 このオプションにより、以下のストレージ域に割り振られたストレージ域のタイプが決定されます。
  • トランザクション作業域 (TWA) と EXEC インターフェース・ブロック (EIB)
  • CICSがアプリケーションプログラムの実行ごとに取得する作業用記憶域のコピー
  • 以下のストレージ要求の応答としてアプリケーション・プログラムのために取得される任意のストレージ
    • GETMAIN コマンドの結果としての明示的な要求
    • SETオプションを使用する CICSの結果として発生する暗黙のリクエスト

TASKDATAKEYパラメータの指定方法については、 TRANSACTIONリソースを参照してください。

タスクの寿命保存とプログラムの作業保存の両方について、TASKDATAKEYが制御する内容については 、図1 を参照してください。

出口および PLT プログラム専用のプログラム作業用ストレージ

CICS は、呼び出し側トランザクションの TASKDATAKEY オプションを使用して、グローバル・ユーザー出口、タスク関連ユーザー出口、ユーザー置換可能モジュール、および PLT プログラムのために獲得するストレージ用のストレージ・キーを判別します。

ストレージ・キーが異なるタイプのプログラムにどのように影響するかについては CICS ストレージ保護機能があなたの出口プログラムに与える影響」 を参照してください。

COMMAREA によるデータの引き渡し

擬似対話型アプリケーションでは、 CICS は、RETURNコマンドで指定したCOMMAREAが、会話中の次のプログラムから常に読み取り/書き込みモードでアクセス可能であることを保証します。

複数のプログラム (LINK または XCTL 使用) を含むトランザクション内で COMMAREA を渡すときにも同様です。 CICS ターゲットプログラムがCOMMAREAに対して読み書きアクセスできることを保証します。

GETMAIN コマンド

GETMAIN および GETMAIN64 コマンドでは、USERDATAKEY および DATAKEY オプションが提供されており、関連するトランザクション・リソース定義で指定された TASKDATAKEY オプションに関係なく、アプリケーション・プログラムがユーザー・キーまたは CICSを明示的に要求できるようにします。 例えば、これらのオプションを使用すると、TASKDATAKEY(CICS) を指定して実行されているアプリケーション・プログラムが、ユーザー・キーで実行しているプログラムに渡すため、あるいは戻すための、ユーザー・キー・ストレージを取得することができます。

CICS キー・ストレージを取得するために GETMAIN コマンドを発行する EXECKEY(CICS) を指定して定義されているプログラムでは、FREEMAIN コマンドまたは FREEMAIN64 コマンドが、EXECKEY(CICS) を指定して定義されているプログラムによって発行される場合にのみ、CICS キー・ストレージが解放されます。 EXECKEY(USER) を指定して定義されているアプリケーション・プログラムで FREEMAIN コマンドを使用して CICS キー・ストレージを解放しようとすると、CICS が INVREQ 条件を返します。 ただし、アプリケーションは EXECKEY オプションに関係なく、FREEMAIN コマンドによってユーザー・キー・ストレージを解放することができます。

CICS は、タスクの終了時に、アプリケーションによって獲得されたすべてのタスク存続期間ストレージを解放します (それらのストレージが、CICS キーとユーザー・キーのどちらであるかは関係ありません)。 関連したトランザクション・リソース定義のこのオプションに、STORAGECLEAR(YES) を指定することもできます。 そのようにすると、誤って機密データが他のタスクで表示されないようにするため、ストレージがクリアされます。

コマンドについては CICS コマンドを参照してください。 リソースの定義については、 CICS リソース」 を参照してください。
図1: TASKDATAKEY および EXECKEY オプションの使用の図
図は添付のテキストに記載されています。
この例の場合、トランザクション A123 は、TASKDATAKEY(USER) および PROGRAM(PROGRAM1) を指定して定義されています。 PROGRAM1 は EXECKEY(USER) を指定して定義され、PROGRAM2 は EXECKEY(CICS) を指定して定義されます。 PROGRAM1 PROGRAM2 にリンクしており、PROGRAM2はGETMAINリクエストを使用して CICSを取得します。
注:
  1. TASKDATAKEY オプションは、EXECKEY(USER) で指定されるユーザー・キーで実行される PROGRAM1 で必要とされるとおりに、トランザクション作業域 (TWA) および EXEC インターフェース・ブロック (EIB) がユーザー・キー・ストレージから確実に割り振られるようにします。
  2. PROGRAM1 は (EXECKEY によって制御される) ユーザー・キーで実行され、ユーザー・キー・ストレージの中で獲得した作業用ストレージを (TASKDATAKEY オプションによって制御 される) 持っています。 GETMAIN コマンドを使用して、または CICS コマンドの SET オプションを使用してプログラムが取得するその他のストレージも、ユーザー・キー・ストレージで取得されます。
  3. PROGRAM2 は、(EXECKEY で制御される) CICS キーで実行されますが、これもまた TASKDATAKEY によって制御されるユーザー・キー・ストレージで取得した作業用ストレージを持っています。
  4. PROGRAM2 は、CICSDATAKEY オプションを使用して明示的な GETMAIN コマンドを発行します。また、これは CICS キーで実行されるので、制御を PROGRAM1 に戻す前に、データを CICS キー保護ストレージに保管することができます。
  5. PROGRAM1 は、PROGRAM2 が獲得した CICS キー保護ストレージに書き込むことはできませんが、PROGRAM2 がそこに書き込んだものを読み取ることができます。

    EXECKEY(CICS) および TASKDATAKEY(CICS) を 指定する必要があるかどうかを決めるとき、これらのオプションを必要とするすべての理由を考慮しなければなりません。

ストレージ保護キーを変更するプログラムは、ストレージへのアクセスを試行する際に正しいキーで実行されていることを確認しなければなりません。 CICS はプログラムを呼び出す際に、プログラム定義で定義されてい る EXECKEY しか使用することができません。