Sun Identity Manager 8.1 リソースリファレンス

第 40 章 シェルスクリプト

Identity Manager には、リソースをホストするシステム上でシェルスクリプトによって制御されるリソースを管理するための、シェルスクリプトリソースアダプタが用意されています。このアダプタは汎用アダプタであるため、高度な設定が可能です。

このアダプタは、com.waveset.adapter.ShellScriptResourceAdapter クラスで定義されます。

アダプタの詳細

リソースを設定する際の注意事項

ERROR_CODE_LIMIT 属性を使用して、エラーを表すエラーコードを定義できます。ここで指定した値を超えるコードはエラーを表します。この値より小さいコードは、情報または警告を表すコードとして使用されます。この値を設定しない場合、Identity Manager は標準の動作を行います。この場合、0 以外のリターンコードはすべてエラーを表します。このオプションの属性をリソース定義に追加できます。

Identity Manager のインストールに関する注意事項

このリソースを Identity Manager のリソースリストに追加するには、「管理するリソースの設定」ページの「カスタムリソース」セクションに次の値を追加する必要があります。

使用上の注意

ユーザーパスワードに制御文字 (0x00、0x7f など) を使用しないでください。

リソースアクション

シェルスクリプトアダプタでは、ユーザーアカウントの作成、更新、削除、取得などの基本的なプロビジョニング機能を実行する一連のアクションを作成できます。これらの各アクションは、シェルスクリプトで定義されます。シェルスクリプトアダプタは、リソースアクションを UNIX リソースアダプタとして実行することで機能します。リソースアクションを実行するには、このアダプタで次の操作が必要です。

このアダプタでは、次の表に示すプロビジョニングアクションがサポートされます。

アクション

目的  

必要性  

create 

新しいユーザーを作成します。 

省略可能。 ただし、指定されていない場合は、ユーザーを作成できません。 

delete 

既存のユーザーを削除します。 

省略可能。 ただし、指定されていない場合は、ユーザーを削除できません。 

getAllUsers 

リソース上のすべてのユーザーに関する情報を取得します。 

省略可能。 ただし、指定されていない場合は、調整や「リソースから読み込み」などのアカウント反復処理に依存する操作は実行できません。 

getUser 

既存ユーザーの属性を取得します。 

はい。 

update 

既存ユーザーの属性を更新します。 

省略可能。 ただし、指定されていない場合は、ユーザーを更新できません。 

$WSHOME/sample/ShellScript ディレクトリには、理論上のシェルスクリプトベースのホストアプリケーションにユーザーをプロビジョニングするのに使用できるリソースアクション定義のサンプルセットが格納されています。環境に合わせてそれらの定義をカスタマイズしてください。

リソースアクションの一般的な情報については、第 50 章リソースへのアクションの追加を参照してください。

スクリプト

シェルスクリプトアダプタは、リソースホスト上で実行するシェルスクリプトファイルとしてアクションを実装します。これらのスクリプトは、リソースホスト上でスクリプトを実行するアカウント用に設定されているシェルで動作するように記述してください。

スクリプトは規則に従い、成功を示すリターンコード 0 で終了するようにしてください。0 以外のコード (スクリプトの作成者が定めた) を返すことは、操作が正しく完了しなかった可能性があるという意味になります。

スクリプトは、標準エラーや標準出力ストリームにテキストを出力できます。操作の種類、操作のコンテキスト、および失敗のタイプによっては、その操作の結果にテキストを表示することができます。

getUser および getAllUsers 操作では、このテキストは、各ユーザーの属性を特定するために標準出力ストリームで解析されます。

次のタイプの環境変数を、スクリプトにエクスポートできます。

次のコード例は、サンプルで生成される環境を示しています。

 

WSRSRC_Host=’129.153.147.151’; export WSRSRC_Host
WSRSRC_Port=’22’; export WSRSRC_Port
WSRSRC_Login_User=’root’; export WSRSRC_Login_User
WSRSRC_password=’074B7E28F5927C90:1C65216:108540A69DE:-7FFD|zGEBDGD3VRs=’; export WSRSRC_password
WSRSRC_Login_Shell_Prompt=’]#’; export WSRSRC_Login_Shell_Prompt
WSRSRC_Root_User=’root’; export WSRSRC_Root_User
WSRSRC_credentials=’074B7E28F5927C90:1C65216:108540A69DE:-7FFD|zGEBDGD3VRs=’; export WSRSRC_credentials
WSRSRC_Root_Shell_Prompt=’]#’; export WSRSRC_Root_Shell_Prompt"
WSRSRC_Connection_Type=’SSH’; export WSRSRC_Connection_Type"
WSRSRC_Maximum_Connections=’10’; export WSRSRC_Maximum_Connections"
WSRSRC_Connection_Idle_Timeout=’900’; export WSRSRC_Connection_Idle_Timeout"
WSRSRC_Display_Name_Attribute=’accountId’; export WSRSRC_Display_Name_Attribute"
WSRSRC_NAME=’ShellTest’; export WSRSRC_NAME"
WSRSRC_ID=’#ID#074B7E28F5927C90:B122A1:108E3E4CFAA:-7FFC’; export WSRSRC_ID"
WSRSRC_TYPE=’Resource’; export WSRSRC_TYPE"
WSRSRC_CLASS=’class com.waveset.object.Resource’; export WSRSRC_CLASS"
 

一般に、属性の値が NULL の場合は、対応する環境変数に長さが 0 の文字列が設定されるのではなく、その環境変数が省略されます。

スクリプトで使用可能な変数については、第 50 章リソースへのアクションの追加を参照してください。

結果処理

AttrParse メカニズムは、標準出力ストリームを通して getUser アクションと getAllUsers アクションから返された結果を処理します。このメカニズムについては、第 49 章AttrParse オブジェクトの実装を参照してください。

getUser アクションの場合、AttrParse はユーザー属性のマップを返します。getAllUsers アクションの場合は、マップのマップを生成します。返されるマップの各エントリには、次の内容が含まれます。

collectCsvHeader および collectCsvLines AttrParse トークンを使用すると、属性と値を特定できます。

セキュリティーに関する注意事項

ここでは、サポートされる接続と特権の要件について説明します。

サポートされる接続

Identity Manager は、次の接続を使用してシェルスクリプトアダプタと通信します。

SSHPubKey 接続の場合、「リソースパラメータ」ページで非公開鍵を指定する必要があります。この鍵には --- BEGIN PRIVATE KEY --- および --- END PRIVATE KEY -- のような注釈行を含める必要があります。公開鍵は、サーバー上の /.ssh/authorized_keys ファイルに配置する必要があります。

必要な管理特権

スクリプトを実行する管理アカウントは、スクリプトで定義されているすべての操作について承認されている必要があります。

プロビジョニングに関する注意事項

次の表に、シェルスクリプトアダプタのプロビジョニング機能の概要を示します。

機能  

サポート状況  

アカウントの作成 

あり 

アカウントの更新 

あり 

アカウントの削除 

あり 

アカウントの有効化/無効化 

あり 

アカウントの名前の変更 

あり 

パススルー認証 

なし 

前アクションと後アクション 

なし 

データ読み込みメソッド 

getAllUsersアクションが定義されている場合は、次のデータ読み込み方法がサポートされます。

  • リソースから直接インポート

  • 調整

アカウント属性

アカウント属性は多種多様であるため、シェルスクリプトアダプタにはデフォルトのアカウント属性が用意されていません。

アカウントには、アイデンティティーシステムユーザー属性の名前が accountId であるアカウント属性が必要です。

リソースオブジェクトの管理

サポートされません。

アイデンティティーテンプレート

なし。有効な値を持つアイデンティティーテンプレートを設定する必要があります。

サンプルフォーム

サンプルユーザーフォームはありませんが、リソースと AttrParse 定義の例が次の場所にあります。

$WSHOME/sample/ShellScript/ShellScriptResourceObjects55.xml

トラブルシューティング

Identity Manager のデバッグページを使用して、次のクラスでトレースオプションを設定します。

com.waveset.adapter.ShellScriptResouceAdapter