Identity Manager には、リソースをホストするシステム上でシェルスクリプトによって制御されるリソースを管理するための、シェルスクリプトリソースアダプタが用意されています。このアダプタは汎用アダプタであるため、高度な設定が可能です。
このアダプタは、com.waveset.adapter.ShellScriptResourceAdapter クラスで定義されます。
ERROR_CODE_LIMIT 属性を使用して、エラーを表すエラーコードを定義できます。ここで指定した値を超えるコードはエラーを表します。この値より小さいコードは、情報または警告を表すコードとして使用されます。この値を設定しない場合、Identity Manager は標準の動作を行います。この場合、0 以外のリターンコードはすべてエラーを表します。このオプションの属性をリソース定義に追加できます。
このリソースを Identity Manager のリソースリストに追加するには、「管理するリソースの設定」ページの「カスタムリソース」セクションに次の値を追加する必要があります。
ユーザーパスワードに制御文字 (0x00、0x7f など) を使用しないでください。
シェルスクリプトアダプタでは、ユーザーアカウントの作成、更新、削除、取得などの基本的なプロビジョニング機能を実行する一連のアクションを作成できます。これらの各アクションは、シェルスクリプトで定義されます。シェルスクリプトアダプタは、リソースアクションを UNIX リソースアダプタとして実行することで機能します。リソースアクションを実行するには、このアダプタで次の操作が必要です。
作成、削除、および更新の操作を、/tmp ディレクトリで実行する。
mkdir、umask、touch、cat、chmod、rm - f、rmdir、find、set などのコマンドを実行する機能と、<、<<、>、>> などの演算子を使用する機能を設定する。
このアダプタでは、次の表に示すプロビジョニングアクションがサポートされます。
目的 |
必要性 |
|
---|---|---|
create |
新しいユーザーを作成します。 |
省略可能。 ただし、指定されていない場合は、ユーザーを作成できません。 |
delete |
既存のユーザーを削除します。 |
省略可能。 ただし、指定されていない場合は、ユーザーを削除できません。 |
getAllUsers |
リソース上のすべてのユーザーに関する情報を取得します。 |
省略可能。 ただし、指定されていない場合は、調整や「リソースから読み込み」などのアカウント反復処理に依存する操作は実行できません。 |
getUser |
既存ユーザーの属性を取得します。 |
はい。 |
update |
既存ユーザーの属性を更新します。 |
省略可能。 ただし、指定されていない場合は、ユーザーを更新できません。 |
$WSHOME/sample/ShellScript ディレクトリには、理論上のシェルスクリプトベースのホストアプリケーションにユーザーをプロビジョニングするのに使用できるリソースアクション定義のサンプルセットが格納されています。環境に合わせてそれらの定義をカスタマイズしてください。
リソースアクションの一般的な情報については、第 50 章リソースへのアクションの追加を参照してください。
シェルスクリプトアダプタは、リソースホスト上で実行するシェルスクリプトファイルとしてアクションを実装します。これらのスクリプトは、リソースホスト上でスクリプトを実行するアカウント用に設定されているシェルで動作するように記述してください。
スクリプトは規則に従い、成功を示すリターンコード 0 で終了するようにしてください。0 以外のコード (スクリプトの作成者が定めた) を返すことは、操作が正しく完了しなかった可能性があるという意味になります。
スクリプトは、標準エラーや標準出力ストリームにテキストを出力できます。操作の種類、操作のコンテキスト、および失敗のタイプによっては、その操作の結果にテキストを表示することができます。
getUser および getAllUsers 操作では、このテキストは、各ユーザーの属性を特定するために標準出力ストリームで解析されます。
スキーママップの アイデンティティーシステム リソース属性列で定義されたアカウント属性はいずれも、そのアカウント属性の先頭に WSUSER_ を付加することで、スクリプトで利用できるようになります。たとえば、アカウント属性の名前が Full Name の場合、その環境変数は WSUSER_Full_Name という名前になります。スペースは下線に置き換えられます。
WSRSRC_ で始まる環境変数で、アダプタの設定を渡すことができます。もっとも重要な変数は、アダプタの名前を定義する WSRSRC_Name です。異なるリソースで同じスクリプトを実行する場合は、この変数を実装すると、それぞれのホストで同じ操作を行うスクリプトの複数のコピーを維持する手間を省けます。
次のコード例は、サンプルで生成される環境を示しています。
|
|
一般に、属性の値が NULL の場合は、対応する環境変数に長さが 0 の文字列が設定されるのではなく、その環境変数が省略されます。
スクリプトで使用可能な変数については、第 50 章リソースへのアクションの追加を参照してください。
AttrParse メカニズムは、標準出力ストリームを通して getUser アクションと getAllUsers アクションから返された結果を処理します。このメカニズムについては、第 49 章AttrParse オブジェクトの実装を参照してください。
getUser アクションの場合、AttrParse はユーザー属性のマップを返します。getAllUsers アクションの場合は、マップのマップを生成します。返されるマップの各エントリには、次の内容が含まれます。
通常 AttrParse で返されるものと同様のユーザー属性のマップを示す値。
アカウント ID または (ID が不明の場合は) 名前を示すキー。
collectCsvHeader および collectCsvLines AttrParse トークンを使用すると、属性と値を特定できます。
ここでは、サポートされる接続と特権の要件について説明します。
Identity Manager は、次の接続を使用してシェルスクリプトアダプタと通信します。
Telnet
SSH (SSH はリソース上に個別にインストールする)
SSHPubKey
SSHPubKey 接続の場合、「リソースパラメータ」ページで非公開鍵を指定する必要があります。この鍵には --- BEGIN PRIVATE KEY --- および --- END PRIVATE KEY -- のような注釈行を含める必要があります。公開鍵は、サーバー上の /.ssh/authorized_keys ファイルに配置する必要があります。
スクリプトを実行する管理アカウントは、スクリプトで定義されているすべての操作について承認されている必要があります。
次の表に、シェルスクリプトアダプタのプロビジョニング機能の概要を示します。
機能 |
サポート状況 |
---|---|
アカウントの作成 |
あり |
アカウントの更新 |
あり |
アカウントの削除 |
あり |
アカウントの有効化/無効化 |
あり |
アカウントの名前の変更 |
あり |
パススルー認証 |
なし |
前アクションと後アクション |
なし |
データ読み込みメソッド |
getAllUsersアクションが定義されている場合は、次のデータ読み込み方法がサポートされます。
|
アカウント属性は多種多様であるため、シェルスクリプトアダプタにはデフォルトのアカウント属性が用意されていません。
アカウントには、アイデンティティーシステムユーザー属性の名前が accountId であるアカウント属性が必要です。
なし。有効な値を持つアイデンティティーテンプレートを設定する必要があります。
サンプルユーザーフォームはありませんが、リソースと AttrParse 定義の例が次の場所にあります。
$WSHOME/sample/ShellScript/ShellScriptResourceObjects55.xml
Identity Manager のデバッグページを使用して、次のクラスでトレースオプションを設定します。
com.waveset.adapter.ShellScriptResouceAdapter