Oracle Containers for J2EE
セキュリティ・ガイド
10g(10.1.3.4.0) B50832-01 |
|
この章には、OracleAS JAAS ProviderのAdmintoolのリファレンス情報が記載されています。この章の内容は次のとおりです。
この項では、OracleAS JAAS ProviderのAdmintoolを使用する際に役立つ情報を提供します。この項の内容は次のとおりです。
java -jar
オプションを使用してOracleAS JAAS Providerのjazn.jar
ファイルを実行することにより、Admintoolを実行します。現行のディレクトリをjazn.jar
が配置されているディレクトリにするか、または次の例に示すように、Javaコマンドラインでjazn.jar
へのパスを指定します。
% java -jar /myroot/mydir/jazn.jar ...
デフォルトでは、Admintoolは、現行ディレクトリ下にあるconfig
ディレクトリのjazn.xml
構成ファイルを検索します。これを変更するには、oracle.security.jazn.config
システム・プロパティによって場所を直接指定するか、oracle.home
プロパティまたはoracle.j2ee.home
プロパティでOracleホームまたはJ2EEホームの場所を指定します。検索場所の優先度については、「jazn.xmlファイル」を参照してください。
次の例では、jazn.xml
ファイルの場所を指定しています。
% java -jar -Doracle.security.jazn.config=/tmp/jazn.xml jazn.jar ...
次の例では、J2EEホームの場所を指定しています。この場合のORACLE_HOME
は、Oracleホーム・ディレクトリへのパス、instancename
はOC4Jインスタンスの名前(home
など)を表しています。この指定に基づき、AdmintoolはORACLE_HOME
/j2ee/
instancename
/config
ディレクトリ内でjazn.xml
を検索します。
% java -jar -Doracle.j2ee.home=ORACLE_HOME/j2ee/instancename jazn.jar ...
ファイルベースのセキュリティ・プロバイダを使用する場合は、jazn.xml
ファイルにある<jazn>
要素のlocation
属性によって、Admintoolが使用するユーザー・リポジトリ(system-jazn-data.xml
またはjazn-data.xml
)の場所が指定されます。デフォルトでは、これはsystem-jazn-data.xml
ファイルですが、location
の設定を更新して、アプリケーション固有のjazn-data.xml
ファイルを使用することができます。
<jazn provider="XML" location="path/jazn-data.xml"> ... </jazn>
Oracle Identity Managementを使用する場合、次の例のように、<jazn>
のlocation
属性によってOracle Internet Directoryの場所が指定されます。ただし、Oracle Identity Managementを使用する場合はlocation
の値を手動で更新しないでください。この値は、Application Server Controlを介してOracle Internet DirectoryインスタンスをOC4Jに関連付けるとき(「Oracle Internet DirectoryとOC4Jの関連付け」を参照)に自動的に設定されます)。次に例を示します。
<jazn provider="LDAP" location="ldap://myoid.oracle.com:389" default-realm="us" > ... </jazn>
Admintoolを実行する際には、ユーザーは、オプションとして-user
および-password
コマンドライン・オプションを使用して、認証を受ける必要があります。ユーザー認証は、次のいずれかの方法で行えます。
-user
および-password
の設定を指定しない方法です。この方法を使用すると、次の例のようにAdmintoolからユーザー名とパスワードの入力が求められます。
% java -jar jazn.jar ... AbstractLoginModule username: username AbstractLoginModule password: password ...
このモードでは、ユーザー名およびパスワードが求められ、これらを入力した後でのみ、指定したオプションが実行されます。次に例を示します。
% java -jar jazn.jar -listrealms
以降、この付録でこのような例を示しても、コマンドが実行される前(この例では、レルムがリスト表示される前)にユーザー名とパスワードが求められることは記載していません。
-user
および-password
オプションを使用することもできます。
% java -jar jazn.jar -user username -password password...
コマンドラインでパスワードを指定するとセキュリティ上の脆弱性が生じるため、一般的にはこの方法は使用しないことをお薦めします。
このモードでは、次のようなコマンドでただちにレルムがリスト表示されます。
% java -jar jazn.jar -user myname -password mypassword -listrealms
前述のいずれのモードでも、コマンドラインで指定したオプションが実行されると、システム・プロンプトが再表示されます。さらに他のAdmintoolコマンドを実行するには、再度ツールを実行してもう1回認証される必要があります。
再度認証を受けることなく複数のコマンドを実行するには、Admintoolシェル・モードを使用できます。このモードでは、「Admintoolシェル」で説明しているように、シェルを終了するまではAdmintoolのプロンプトから繰り返しコマンドを実行できます。
Admintoolとカスタム・プリンシパルおよびパーミッションを連携させるには、カスタム・クラスを含んでいるJARファイルの場所を指定するようにclasspath
プロパティを構成します。そのためには、次の例のように、jazn.xml
ファイルの<jazn>
要素にある<property>
サブ要素を使用します。
<jazn ... > ... <property name="classpath" value="/tmp/customPrincipal.jar" /> ... </jazn>
Admintoolには、管理機能用のコマンド・オプションが多数用意されています。一般的な構文は、次のとおりです。
% java -jar jazn.jar [-user username -password password] [option1 option2 ... ]
この項では、Admintoolのコマンドのすべてのオプションを、詳細の参照先とともに示します。すべてのオプションとその構文は、-help
オプションでもリスト表示できます。
% java -jar jazn.jar -help
コマンドライン・オプションの概要は、次のとおりです。
-activateadmin
-user username -password password
-addloginmodule application_name login_module_name control_flag [options] -listloginmodules [application_name] [login_module_class] -remloginmodule application_name login_module_name
-convert filename realm
-checkpasswd realm user [-pw password] -setpasswd realm user old_pwd new_pwd
-grantperm {realm {-user user|-role role} | principal_class principal_params} permission_class [permission_params] -listperms {realm {-user user|-role role} | principal_class principal_params} permission_class [permission_params] -revokeperm {realm {-user user|-role role} | principal_class principal_params} permission_class [permission_params]
-addrealm realm admin {adminpwd adminrole | adminrole userbase rolebase realmtype } -addrole realm role -adduser realm username password -remrealm realm -remrole realm role -remuser realm user
-grantrole role realm {user | -role to_role} -revokerole role realm {user|-role from_role} -listrealms realm -listroles [realm [user | -role role]] -listusers [realm [-role role | -perm permission]]
-shell
Admintoolシェルを使用すると、UNIXに似たインタフェースを介してJAASのプリンシパルとポリシーを対話形式で管理できます。-shell
オプションで、シェルを開始します。次に例を示します(ユーザーとパスワードを要求されたら、ユーザーoc4jadmin
およびパスワードを入力します)。
% java -jar jazn.jar -shell AbstractLoginModule username: oc4jadmin AbstractLoginModule password: password JAZN:>
このシェルは、JAZN:>
プロンプトで応答します。インタフェース・シェルを終了するには、exit
シェル・コマンドを使用します。シェル・コマンドのリストを表示するには、help
コマンドを使用します。特定のシェル・コマンドの詳細が表示できるように、シェルではman
コマンドがサポートされています。
JAZN:> man admintoolcommand
この項の以降の部分で、次の項目について説明します。
Admintoolシェルでは、Admintoolコマンドラインと同じオプションがサポートされていますが、オプション名の前にハイフン(-
)を含める必要はありません。(ハイフンを含めると、オプションは無視されます。)Admintoolシェルを起動すると、次のシェル・コマンドラインは、(システム・プロンプトからの)次のAdmintoolコマンドラインと同じになります。
JAZN:> option1 option2 ... optionN % java -jar jazn.jar -option1 -option2 ... -optionN
Admintoolシェルは、OracleAS JAAS Provider APIへの対話型インタフェースです。
シェルのディレクトリ構造はノードで構成され、各ノードには親ノードのプロパティを表すサブノードが含まれています。図C-1にノード構造を示します。
この構造では、user
およびrole
ノードがリンクされています。これは、user
の下のroles
リンクが、realm
の下のroles
リンクと同じであることを意味します。UNIX用語では、この図で番号1のrole
は、この図で番号2のrole
へのシンボリック・リンクです。
次の図C-2に、レルムabcRealm
のノードを示します。
この項では、次のAdmintoolのシェル・コマンドの概要を説明します。
すべてのAdmintoolコマンドで相対パスと絶対パスがサポートされます。
add name [other_parameter] mkdir name [other_parameter] mk name [other_parameter]
add
、mkdir
、mk
の各コマンドは等価で、いずれも現行のディレクトリにサブディレクトリまたはノードを作成します。コマンドの結果は、現行ディレクトリの場所によって異なります。たとえば、現行のディレクトリがルートの場合、コマンドによってレルムが作成されます。現行のディレクトリが/realm/users
の場合、コマンドによってユーザーが作成されます。状況によっては、これらのコマンドが-addrealm
や-adduser
などのAdmintoolコマンドと等価となる場合があります。
前述のシェル・コマンドには、追加のパラメータが必要となる場合があります。これは基本的に、同等のAdmintoolコマンドに対して必要となるパラメータと同じです。たとえば、次のシェル・コマンドを実行するとします。
JAZN:> add myrealm myuser mypassword myrole
/realms
ディレクトリの下で実行する場合、このシェル・コマンドは次のコマンドと等価になります。
% java -jar jazn.jar -addrealm myrealm myuser mypassword myrole
cd path
cd
コマンドを使用すると、ディレクトリ・ツリーをナビゲートできます。相対パス名と絶対パス名がサポートされます。
/
とパスを入力すると、ルート・ノードに戻ります。
指定したディレクトリが存在しない場合は、エラー・メッセージが表示されます。
clear
clear
コマンドを実行すると、80の空白行が表示されて端末画面がクリアされます。
exit
exit
コマンドを実行すると、Admintoolシェルが終了します。
help
help
コマンドを実行すると、有効なすべてのシェル・コマンドのリストが表示されます。
ls [path]
ls
コマンドを実行すると、現行のディレクトリまたはノードの内容がリスト表示されます。たとえば、現行のディレクトリがルートの場合、ls
ではすべてのレルムのリストが表示されます。現行のディレクトリが/realm/users
の場合、ls
ではレルムのすべてのユーザーのリストが表示されます。表示されるリストは、現行のディレクトリに応じて異なります。ls
コマンドには、*
ワイルドカードを使用できます。
man command_option man shell_command
man
コマンドを実行すると、指定したシェル・コマンドまたはAdmintoolコマンド・オプションの詳細な使用方法が表示されます。
pwd
pwd
コマンドを実行すると、ディレクトリ・ツリー内のユーザーの現在位置が表示されます。未定義の値は、このリストに空白として表示されます。
rm name
rm
コマンドを実行すると、現行のディレクトリからディレクトリまたはノードが削除されます。コマンドの結果は、現行ディレクトリに応じて異なります。たとえば、現行のディレクトリがルートの場合、rm
では指定したレルムが削除されます。現行のディレクトリが/realm/users
の場合は、指定したユーザーが削除されます。指定した名前が存在しない場合は、エラー・メッセージが表示されます。
rm
コマンドには、*
ワイルドカードを使用できます。
set name=value
set
コマンドを実行すると、指定した名前の値が更新されます。たとえば、このコマンドでは、作業ディレクトリに応じて、ログイン・モジュール・クラス、ログイン・モジュール制御フラグまたはログイン・モジュール・クラス・オプションが更新されます。
この項では、Admintoolの管理機能について説明します。内容は次のとおりです。
-addloginmodule application_name login_module_name control_flag [optionname=value ...] -remloginmodule application_name login_module_name
-addloginmodule
オプションを指定すると、指定したアプリケーション用に新規ログイン・モジュールが構成されます。
control_flag
には、標準のjavax.security.auth.login.Configuration
クラスに指定されているとおり、required
、requisite
、sufficient
またはoptional
のいずれかを指定する必要があります。これらのフラグ値の意味の概要は、表9-5で説明しています。
ログイン・モジュールが独自のオプションを受け入れる場合は、各オプションとその値をoptionname=value
のペアとして指定します。各ログイン・モジュールには、独自の個別オプション・セットがあります。
たとえば、MyLoginModule
を必須モジュールとしてアプリケーションmyapp
に追加する場合に、このログイン・モジュールでdebug
オプションがサポートされているときは、次のように入力します。
% java -jar jazn.jar -addloginmodule myapp MyLoginModule required debug=true
MyLoginModule
をmyapp
から削除するには、次のように入力します。
% java -jar jazn.jar -remloginmodule myapp MyLoginModule
Admintoolのシェルの場合
JAZN:> addloginmodule myapp MyLoginModule required debug=true JAZN:> remloginmodule myapp MyLoginModule
-addrealm realm admin adminpwd adminrole -remrealm realm
-addrealm
オプションを指定すると、指定した名前と管理者でレルムが作成されます。
ファイルベース・プロバイダの場合、レルムの名前、レルムの管理者、管理者のパスワード、管理者のロールを指定します。
-addrealm realm admin adminpwd adminrole
-remrealm
オプションを指定すると、レルムが削除されます。
たとえば、管理者martha
を指定してレルムemployees
を作成するときに、管理者のパスワードがmypass
で、管理者がロールhr
のメンバーである場合は、次のように入力します。
% java -jar jazn.jar -addrealm employees martha mypass hr
employees
を削除する場合は、次のように入力します。
% java -jar jazn.jar -remrealm employees
Admintoolのシェルの場合
JAZN:> addrealm employees martha mypass hr JAZN:> remrealm employees
-addrole realm role -remrole realm role
-addrole
オプションを使用して指定のレルムにロールを作成し、-remrole
オプションを使用してレルムからロールを削除します。
たとえば、ロールroleFoo
をレルムfoo
に追加するには、次のように入力します。
% java -jar jazn.jar -addrole foo fooRole
レルムからロールを削除するには、次のように入力します。
% java -jar jazn.jar -remrole foo fooRole
Admintoolのシェルの場合
JAZN:> addrole foo fooRole JAZN:> remrole foo fooRole
-adduser realm username password -remuser realm username
-adduser
オプションを使用して指定のレルムにユーザーを追加し、-remuser
オプションを使用してユーザーをレルムから削除します。
次に示す例のように、コマンドラインではなくAdmintoolシェルを使用してユーザーを追加することをお薦めします。
% java -jar jazn.jar -shell AbstractLoginModule username : oc4jadmin AbstractLoginModule password : adminpassword JAZN:> adduser jazn.com my_user my_password
Admintoolのコマンドラインでユーザーを入力するのはあまりセキュアではありません。たとえば、UNIXシステムでは、システム上の他のユーザーは、すべてのプロセスをリスト表示するps -ef
コマンドを使用することでパスワードを見ることができます。これに対し、Admintoolシェルに入力したコマンドはAdmintoolのみが読み取れます。
ただし、コマンドラインでユーザーを追加する方法もサポートされています。たとえば、パスワードmypass
を指定してユーザーmartha
をレルムfoo
に追加するには、次のように入力します。
% java -jar jazn.jar -adduser foo martha mypass
パスワードを指定せずにユーザーを挿入するには、次のようにコマンドラインの最後に-null
オプションを指定します。
jazn -jar jazn.jar -adduser foo martha -null
レルムからmartha
を削除するには、次のように入力します。
% java -jar jazn.jar -remuser foo martha
Admintoolのシェルの場合
JAZN:> adduser foo martha mypass JAZN:> remuser foo martha
-setpasswd realm user old_pwd new_pwd
-setpasswd
オプションを使用すると、管理者は古いパスワードを指定したユーザーのパスワードを再設定できます。
たとえば、レルムfoo
のユーザーmartha
のパスワードをmypass
からa2d3vn
に変更するには、次のように入力します。
% java -jar jazn.jar -setpasswd foo martha mypass a2d3vn
Admintoolのシェルの場合
JAZN:> setpasswd foo martha mypass a2d3vn
-checkpasswd realm user [-pw password]
-checkpasswd
オプションを使用して、指定のユーザーの認証にパスワードが必要かどうかを指定します。
-checkpasswd
を単独で指定すると、Admintoolでは、ユーザーがパスワードを持っている場合は「このプリンシパルのためのパスワードが存在します。」、パスワードを持っていない場合は「このプリンシパルのためのパスワードは存在しません。」という応答が戻されます。
-checkpasswd
をパスワード用の-pw
パラメータとともに指定すると、Admintoolでは、ユーザー名とパスワードのペアが正しい場合は、「ユーザー/パスワードのペアの検証に成功しました。」というレスポンスが戻され、ユーザーまたはパスワードが正しくない場合は「ユーザー/パスワードのペアの検証に失敗しました。」というレスポンスが戻されます。
たとえば、レルムfoo
内のユーザーmartha
がパスワードHello
を使用するかどうかをチェックするには、次のように入力します。
% java -jar jazn.jar -checkpasswd foo martha -pw Hello
Admintoolのシェルの場合
JAZN:> checkpasswd foo martha -pw Hello
-activateadmin
-activateadmin
オプションを使用して、デフォルト・レルム内のoc4jadmin
アカウント(旧admin
)をアクティブにし、パスワードを設定するには、次のようにします。(スタンドアロンOC4Jでは、ファイルベース・プロバイダに対してこのアカウントは最初は非アクティブになっています。)
% java -jar jazn.jar -activateadmin password
Admintoolのシェルの場合
JAZN:> activateadmin password
-grantperm {realm {-user user |-role role} | principal_class principal_params} permission_class [permission_params] -revokeperm {realm {-user user|-role role} | principal_class principal_params} permission_class [permission_params]
この構文のprincipal_class
は、java.security.Principal
インタフェースを実装するクラスの完全修飾名で、principal_params
は、プリンシパル・クラスによって解釈される文字列です。
-grantperm
オプションを使用して、指定したパーミッションをユーザー(-user
でコールする場合)、ロール(-role
でコールする場合)またはプリンシパルに付与します。-revokeperm
オプションを使用すると、指定したパーミッションがユーザー、ロールまたはプリンシパルから取り消されます。
ユーザーまたはロールに対してパーミッションの付与または取消しを行う場合は常にレルムを指定しますが、プリンシパルに対してパーミッションの付与または取消しを行う場合は指定しません。
パーミッションの指定は、パーミッションの明示的なクラス名と、そのアクション・パラメータおよびターゲット・パラメータから構成されます。次の例のように、複数のアクション・パラメータとターゲット・パラメータを指定できることに注意してください。
注意 Admintoolから「パーミッション・クラスが見つかりません。」というエラー・メッセージが発行された場合、付与するパーミッションがクラスパス内にないことを意味します。「Admintoolでのカスタム・プリンシパルとパーミッションの使用」を参照してください。 |
たとえば、プリンシパル・パラメータhobbes
(LDAPPrincipal
が理解できる値)およびパーミッション・パラメータgetProtectionDomain
(RuntimePermission
が理解できる値)を使用してプリンシパルLDAPPrincipal
にRuntimePermission
を付与するには、次のように入力します。
% java -jar jazn.jar -grantperm oracle.security.jazn.realm.LDAPPrincipal hobbes java.lang.RuntimePermission getProtectionDomain
もう1つ例を示すと、ターゲットa.txt
とアクションread, write
を指定して、レルムfoo
のユーザーmartha
にFilePermission
を付与するには、次のように入力します。
% java -jar jazn.jar -grantperm foo -user martha java.io.FilePermission a.txt read,write
パーミッションを取り消すには、次のように入力します。
% java -jar jazn.jar -revokeperm foo -user martha java.io.FilePermission a.txt read,write
Admintoolのシェルの場合
JAZN:> grantperm foo -user martha java.io.FilePermission a.txt read,write JAZN:> revokeperm foo -user martha java.io.FilePermission a.txt read,write
-grantrole role realm {user |-role role} -revokerole role realm {user |-role role}
-grantrole
オプションを使用して、指定のロールをユーザー(ユーザー名でコールする場合)またはロール(-role
でコールする場合)に付与します。-revokerole
オプションを使用すると、指定のロールがユーザーまたはロールから取り消されます。
たとえば、ロールeditor
をレルムfoo
のユーザーmartha
に付与するには、次のように入力します。
% java -jar jazn.jar -grantrole editor foo martha
あるいは、ロールfinancial
をロールfinreporter
に付与するには、次のように入力します。
% java -jar jazn.jar -grantrole financial foo -role finreporter
Admintoolのシェルの場合
JAZN:> grantrole editor foo martha JAZN:> revokerole editor foo martha
-listloginmodules [application_name] [login_module_class]
-listloginmodules
オプションを使用して、指定のapplication_name
内のログイン・モジュールをすべて表示します。application_name
を指定しないと、すべてのアプリケーション内のログイン・モジュールが表示されます。application_name
の後にlogin_module_class
を指定すると、アプリケーション内の指定したクラスに関する情報のみが表示されます。
たとえば、アプリケーションmyapp
のログイン・モジュールをすべて表示するには、次のように入力します。
% java -jar jazn.jar -listloginmodules myapp
Admintoolのシェルの場合
JAZN:> listloginmodules myapp
-listperms {realm {-user user | -role role} | principal_class principal_params permission_class [permission_params]
-listperms
オプションを使用して、リスト基準と一致するパーミッションをすべて表示します。
ユーザーまたはロールのパーミッションをリスト表示する場合は常にレルムを指定しますが、プリンシパルのパーミッションをリスト表示する場合は指定しません。
たとえば、レルムfoo
のユーザーmartha
のパーミッションをすべて表示するには、次のように入力します。
% java -jar jazn.jar -listperms foo -user martha
Admintoolのシェルの場合
JAZN:> listperms foo -user martha
-listrealms [realm]
-listrealms
オプションを使用して、現行のJAAS環境のレルムをすべて表示します。引数としてレルムを指定すると、そのレルムのみがリスト表示されます。
たとえば、レルムすべてのリストを表示するには、次のように入力します。
% java -jar jazn.jar -listrealms
Admintoolのシェルの場合
JAZN:> listrealms
-listroles [realm [user | -role role]]
-listroles
オプションを使用して、リスト基準と一致するロールのリストを表示します。このオプションでは、次のユーザーがリスト表示されます。
-role
を指定してコールした場合は、指定したロールに付与されているすべてのロール
たとえば、レルムfoo
のすべてのロールのリストを表示するには、次のように入力します。
% java -jar jazn.jar -listroles foo
Admintoolのシェルの場合
JAZN:> listroles foo
-listusers [realm [-role role | -perm permission]]
-listusers
オプションを使用して、リスト基準と一致するユーザーのリストを表示します。このオプションでは、次のユーザーがリスト表示されます。
-role
または-perm
を指定してコールした場合は、特定のロールまたはパーミッションが付与されているユーザー
たとえば、レルムfoo
のすべてのユーザーのリストを表示するには、次のように入力します。
% java -jar jazn.jar -listusers foo
パーミッションbar
を使用しているレルムfoo
のすべてのユーザーのリストを表示するには、次のように入力します。
% java -jar jazn.jar -listusers foo -perm bar
Admintoolでは、次のようにユーザーが1行に1人ずつリスト表示されます。
scott admin anonymous
Admintoolのシェルの場合
JAZN:> listusers foo
-convert filename realm
-convert
オプションを使用して、principals.xml
ファイルを現行のOracleAS JAAS Providerの指定したレルムに移植します。filename
引数には、入力ファイルのパス名(通常はORACLE_HOME
/j2ee/home/config/principals.xml
)を指定します。次に例を示します。
% java -jar jazn.jar \ -convert $ORACLE_HOME/j2ee/home/config/principals.xml jazn.com
Admintoolのシェルの場合
JAZN:> convert ORACLE_HOME/j2ee/home/config/principals.xml jazn.com
|
Copyright © 2003, 2008 Oracle Corporation. All Rights Reserved. |
|