管理タスク・スケジューラーのタスクの安全な実行

管理タスク・スケジューラーの実行スレッドは、タスク実行前に常に実行ユーザーのセキュリティー・コンテキストに切り替えます。 ユーザーは、パスチケットを使用して認証されます。

タスク実行開始時に、管理タスク・スケジューラーは最初に、セキュリティー・コンテキストを実行ユーザーのコンテキストに切り替えます。 実行ユーザーは ADMIN_TASK_ADD ストアード・プロシージャーの user-ID パラメーターにより明示的に指定されるか、またはデフォルト・ユーザーを実行ユーザーとして使用できます。

タスクがストアード・プロシージャーであり、実行ユーザーの 2 次認証 ID の特権と権限を使用してストアード・プロシージャーを Db2 で実行する必要がある場合は、サインオン出口ルーチンを使用して Db2 が始動されていることを確認します。

タスクを特定の権限の下で実行する必要がある場合には、ストアード・プロシージャーの呼び出し元と権限が異なっていても、資格情報が管理タスク・スケジューラーに渡されます。 この資格情報はどこにも保管されません。 RACF® によって検証され、タスク定義時にストアドプロシージャの呼び出し元がセキュリティコンテキストを想定する権利を有していることを確認します。 したがって、ADMIN_TASK_ADD ストアード・プロシージャーのパスワード・パラメーターにパスチケット (1 回限りのパスワードで暗号化済み) を使用できます。 資格情報が提供されない場合、管理タスク・スケジューラーは、デフォルトの実行ユーザー下でタスクを実行します。

管理タスク・スケジューラーは、対応する権限の下でタスクを実行するためのパスチケットを生成して使用します。 各タスクは、ユーザー ID と生成されたパスチケットを使用して、要求されたセキュリティー・コンテキストに切り替えた後、実行されます。

管理タスクスケジューラにはパスワードは保存されませんが、管理タスクスケジューラは RACF で信頼されたプログラムとして定義されており、すべてのユーザーに対して PassTickets を取得することが許可されています。 管理タスクスケジューラのサブスレッドは、 RACF から PassTicket を受け取り、この使い捨てパスワードを使用してログインする必要があります。 次に、切り替わったセキュリティー概念でタスクが実行されます。これにより、タスクはこの実行ユーザーに対して定義されているリソースにアクセスできます。 実行後に、セキュリティー・コンテキストがスケジュールされているタスク・ユーザーに再び切り替わります。

管理タスク・スケジューラーの開始タスク・モジュール (DSNADMT0) は、ユーザーの切り替えに pthread_security_np() 関数を使用します。 スケジューラのスレッド レベルのセキュリティ環境を設定するには、 「管理タスク スケジューラと管理有効化ルーチンを有効にするための追加手順」 の手順に従います。

タスク実行時には、意図しない影響から管理タスク・スケジューラー・リソースを保護する必要があります。 したがって、開始タスク・ユーザー (STARTUID) (管理タスク・スケジューラー・リソースへのアクセス権限を持つユーザー) を、デフォルトの実行ユーザー (DFLTUID) として使用しないでください。 また、また、このユーザーを ADMIN_TASK_ADD ストアード・プロシージャーの user-ID パラメーターに指定しないでください。 開始タスク・ユーザーとデフォルトの実行ユーザーが同じ場合には、管理タスク・スケジューラーは開始されません。 タスクのユーザーが定義されていない場合にリソースに及ぼす影響を回避するため、デフォルトの実行ユーザーに付与する権限は最小限に抑えてください。

デフォルトの実行ユーザーには、Db2 への接続および JES リーダーへの書き込み以外の権限はありません。