アクセス制御

概要

認証(authentication)は単に一人一人が「誰」であるかを信頼できる方法で確認することです。それに対して、承認 (authorization) は、その誰かが何にアクセスできて、何にアクセスできないかを類別する行為です。

Batch Serverの認証と承認の機構は、JAAS (Java Authentication and Authorization Service) の APIに基づいたOSアカウントによる認証とユーザに割り当てられたロールによる権限の付与(承認)を行います。 ユーザが要求した操作の実行を許可するかどうかは、Java のSecurityManagerを利用して、付与されている権限の確認を行います。

概要構成図

アカウント認証
Batch Serverで利用可能なアカウントは、Batch Serverを稼動させるOSが管理するユーザカウントと一致します。 つまり、Batch Serverのコマンド実行時に指定するユーザ名/パスワードはOSが管理するユーザ名/パスワードと一致する必要があります。また、Batch Serverのアカウントを追加するにはOSのユーザカウントを追加することになります。
ロールへのマッピング
ロールとはBatch Server上での操作の権限管理を行う単位です。ロール毎に実行可能な操作が規定されています。 Batch Serverではユーザ単位でどのロールに割り当てるのかを指定します。
また、ジョブの実行権は個別の設定を行うことも可能です。
関連

1. アカウント認証

Batch Serverで利用可能なアカウントは、Batch Serverを稼動させるOSが管理するユーザカウントと一致します。 つまり、Batch Serverのコマンド実行時に指定するユーザ名/パスワードはOSが管理するユーザ名/パスワードと一致する必要があります。また、Batch Serverのアカウントを追加するにはOSのユーザカウントを追加することになります。

1.1. OSユーザによる認証

Batch Serverが行うアカウント認証はOSのアカウント管理機能にアクセスし、OSに登録されているアカウントであるかどうかを確認します。

Windowsの場合にはWindows APIを、Linuxの場合はPAMのAPIを介してOSのアカウント管理機能にアクセスします。

例えばLinuxの場合、 Batch ServerはPAMのインターフェースに沿ってIDとパスワードのペアによる認証できることを前提としています。
そのために、Batch Serverインストール時に、PAMに対する認証設定ファイル webotxbs-pam-service の登録を行っています。 この前提が満たされる範囲内であれば、同設定ファイルの内容を利用者が書き換えることができます。

この設定の登録は、下記のようなリンクによって行われています。
/etc/pam.d/webotxbs-pam-service -> /opt/WebOTX/batch/bin/setup/pam/linux/webotxbs-pam-service

PAM の認証設定ファイル webotxbs-pam-service のデフォルトの内容は、同 system-auth サービスを利用する内容となっており、RHEL 5 の system-auth のデフォルトの設定は、pam_unix.soモジュールを利用する内容となっています。
pam_unix.soモジュールは、特権ユーザ(root)で起動されたプロセスからの認証要求の場合、当該サーバ上の全アカウントの認証を行うことができますが、一般ユーザで起動されたプロセスからの認証要求の場合、自ユーザのみの認証しか行うことができません。
そのため、ドメインエージェントを一般ユーザで起動した場合、ドメインエージェントを起動したユーザ以外のアカウントからの バッチアプリケーションの配備やジョブの実行が、認証エラーにより行えない状態となります。

2. ロール管理

ロールとはBatch Server上での操作の権限管理を行う単位です。ロール毎に実行可能な操作が規定されています。

2.1. 定義済みのロール

Batch Serverには下記のロールがあらかじめ定義されます。個々のロールには個別のアクセス権が設定されており、これらのアクセス権の変更や新たなロールの追加を行うことはできません。

ロール 説明
Administrator バッチドメインの管理者です。
バッチドメインに関する全ての操作が実行可能です。
Operator バッチドメインの運用者です。
バッチドメインの起動/停止や設定変更を含む操作が実行可能です。
運用者はバッチドメインの状態参照やバッチアプリケーションの配備に関する操作も実行可能です。
Observer バッチドメインの監視者です。
バッチドメインの状態を参照することが可能です。
Deployer バッチアプリケーションの配備者です。
バッチアプリケーションの配備に関する操作が実行可能です。
JobExecutor ジョブの実行者です。
ジョブの実行とジョブ実行状態、実行結果の参照が可能です。
ただし、JobExecutorに対するジョブの実行権に対しては細かな設定を可能にしています。

2.2. ユーザとロールのマッピング

ユーザが実行可能な操作を制限するために、各ユーザにロールを割り当てます。 デフォルトの設定では、全てのユーザに対してAdministrator権限が割り当てられるように設定されています。

ユーザ名、ロール名のマッピングが管理され、ユーザには複数ロールを割り当てることができます。
例えば、あるユーザにJobExecutorとDeployerロールを割り当てることでバッチアプリケーションのデプロイからジョブの実行までの操作権限を割り当てることができます。

関連

3. 操作権限の付与

Batch Serverではユーザ単位でどのロールに割り当てるのかを指定します。

また、ジョブの実行権は個別の設定を行うことも可能です。 例えば、全てのユーザが共通的に実行できるジョブはJobExecutorロールの規定の権限として設定し、特別なuserBにだけ特別なジョブ実行権を付与することができます。

3.1. ロール単位での操作権限

基本的な操作の権限がロール単位で付与されます。

ロール 操作権限
ドメインに対する操作 ドメインの監視 アプリケーションの配備操作 ジョブの実行 権限に対する操作
Administrator
Operator × ×
Observer × × × ×
Deployer × × × ×
JobExecutor × × × ×
Batch Serverはロールに割り当てられている権限を確認することで、ユーザが要求している操作を承認します。
ユーザとロールのマッピングや、その他権限に関する操作はAdministratorsロールのみに許可されます。

3.2. 実行可能ジョブの指定

JobExecutorのロールを割り当てられたユーザに対しては、個別のジョブの実行権を設定することができます。
デフォルトではJobExecutorロールを持つユーザには全てのジョブ実行権が割り当てられます。

ユーザが実行できるジョブを制限したい場合、JobExecutorロールに割り当てられているジョブ実行権を制限し、個別のジョブ実行件をユーザに対して割り当てます。
ジョブの実行権にはバッチアプリケーショングループ名、バッチアプリケーション名、ジョブ名を指定します。

  1. JobExecutorロールに設定されているジョブ実行権を絞り込む
    既定値では、JobExecutorには全てのジョブの実行権が割り当てられています。
    そこで、otxadmin add-bs-jobexecution-permissiondelete-bs-jobexecution-permissionコマンドを利用してJobExecutorロールで実行可能なジョブを設定し、特定のユーザにしか実行させたくないジョブを除外します。
  2. 特定のユーザに対するジョブ実行権を付与する
    個別のユーザに対してotxadmin add-bs-jobexecution-permissionコマンドを利用してジョブ実行権を与えます。
関連