エンタープライズ Bean メソッドは、セキュリティー役割を割り当てることによって
保護できます。セキュリティー役割を割り当てる前に、保護が必要な Enterprise JavaBeans (EJB) メソッドと
その保護方法について知る必要があります。
このタスクについて
EJB メソッドのセットは、役割のセットに割り当てることができます。EJB メソッドが役割セットの関連付けによって保護されている場合、
そのメソッドにアクセスできるように、そのセット内の少なくとも 1 つの役割を付与します。
EJB メソッドのセットへのアクセスを防ぐために、そのセットに除外のマークを付けます。このメソッドのマークを外せば、誰でも
エンタープライズ Bean メソッドのセットにアクセスできるようなります。エンタープライズ Bean は、他の エンタープライズ Bean を呼び出す前に、
runAs ID を使用して、異なる ID として実行することができます。
注: この手順は、
アセンブリー・ツールを使用する場合に必要なステップ、または使用しているアセンブリー・ツールのバージョンに一致しない可能性があります。
ご使用のツールおよびバージョンに応じた指示に従う必要があります。
エンタープライズ Bean アプリケーションをセキュアにするには、以下のステップを実行します。
プロシージャー
- アセンブリー・ツールで、1 つ以上の Web モジュールを含んでいる、
Enterprise JavaBean (EJB) Java アーカイブ (JAR) ファイルまたはアプリ
ケーション・アーカイブ (EAR) ファイルをインポートします。
Application Server Toolkit (AST) の文書で、EJB JAR ファイルのインポートまたはエンタープライズ・アプリケーション EAR ファイルのインポートに関する情報を参照してください。
- Project Explorer で、「EJB Projects」ディレクトリーをクリックし、
アプリケーションの名前をクリックします。
- デプロイメント記述子を右クリックし、「Open with」>「Deployment Descriptor Editor」をクリックします。 エンタープライズ Bean .jar ファイルを選択した場合、
EJB デプロイメント記述子エディターが開きます。アプリケーション .ear ファイルを選択する場合、
アプリケーションのデプロイメント記述子エディターが開きます。エディターのオンライン情報を参照するには、
F1 を押して、エディター名をクリックします。
- セキュリティー役割を作成します。 セキュリティー役割は、アプリケーション・レベルまたは EJB モジュール・レベルで作成できます。
セキュリティー役割を EJB モジュール・レベルで作成する場合、
役割はアプリケーション・レベルで表示されます。
セキュリティー役割がアプリケーション・レベルで作成される場合、
役割はすべての EJB モジュールでは表示されません。
アプリケーション・レベルで作成した 1 つ以上の EJB モジュール・セキュリティー役割
を、以下のようにコピーして貼り付けることができます。
- EJB モジュール・レベルで役割を作成します。EJB デプロイメント記述子エディターで、
「アセンブリー」タブをクリックします。「セキュリティー役割」の下で、「追加」を
クリックします。「セキュリティー役割の追加」
ウィザードで、セキュリティー役割に名前を付け、記述し、「終了」をクリックします。
- アプリケーション・レベルで役割を作成します。アプリケーション・デプロイメント記述子エディターで、「セキュリティー」タブを選択します。セキュリティー役割のリスト下で、「追加」をクリックします。「セキュリティー役割の追加」
ウィザードで、セキュリティー役割に名前を付け、記述します。次に「終了」をクリックします。
- メソッド許可を作成します。 メソッド許可は、1 つ以上のメソッドを一連の役割にマップします。
エンタープライズ Bean は、4 つのタイプのメソッドを保有しています。
その 4 つとは、home メソッド、remote メソッド、LocalHome メソッド、および local メソッドです。メソッド・レベルでエンタープライズ Bean に許可を追加できます。1 つ以上のセキュリティー役割を定義していない限り、
メソッド・アクセス権をエンタープライズ Bean に追加できません。バージョン 2.0 EJB プロジェクトの場合、
選択されていないオプションは、選択された Bean の選択されたメソッドが実行の権限を必要としないことを指定します。
エンタープライズ Bean に
メソッド・アクセス権を追加するには、以下のようにします。
- EJB デプロイメント記述子エディターの「アセンブリー」タブの「メソッド許可」の下で、
「追加」をクリックします。「Add Method Permission」ウィザードが開きます。
- 検索された役割のリストからセキュリティー役割を選択し、「次へ」をクリックします。
- 検索された Bean のリストから 1 つ以上のエンタープライズ Bean を選択します。
「全選択」または「全選択解除」をクリックして、リスト内のエンタープライズ Bean の
すべてを選択またはクリアできます。「次へ」をクリックします。
- セキュリティー役割にバインドしたいメソッドを選択します。「Method elements」ページに
エンタープライズ Bean に関連付けられるすべてのメソッドがリストされます。 「Apply to All」または
「全選択解除」をクリックして複数のメソッドを速やかに選択またはクリア
できます。選択すると、各 Bean ごとのデフォルトの (*) メソッドに影響を与えます。正確なメソッド・シグニチャーの
メソッド・アクセス権を作成すると、デフォルトの (*) メソッド・アクセス権の設定はオーバーライドされます。
デフォルトの (*) メソッドは、Bean 内のすべてのメソッドを表します。
各インターフェースにもデフォルトの (*) メソッドがあります。ツリー内の個々のメソッドのすべてを選択しないことで、
その他のアクセス権を残りのメソッドに設定できます。
- 「終了」をクリックします。
メソッド・アクセス権が作成された後、ツリー内で新規メソッド・アクセス権を確認できます。ツリーを拡張して、
メソッド・アクセス権で定義される Bean およびメソッドを確認します。
- メソッドへのユーザー・アクセスを除外します。 ユーザーは、除外されたメソッドにはアクセスできません。
役割を何も割り当てられていないか、あるいは除外されていないエンタープライズ Bean 内
のメソッドはすべて、アプリケーションのインストール時に、デプロイヤーによってクリアされます。
- EJB デプロイメント記述子エディターの「アセンブリー」タブの「Excludes List」の下で、
「追加」をクリックします。「Exclude List」ウィザードが開きます。
- 検索された Bean のリストから 1 つ以上のエンタープライズ Bean を選択し、「次へ」をクリックします。
- セキュリティー ID 用の 1 つ以上のメソッド要素を選択し、「終了」をクリックします。
- security-role-ref および role-name を role-link にマップします。
エンタープライズ Bean の開発中、
security-role-ref エレメントを作成することができます。
security-role-ref エレメントは、role-name フィールドのみを含んでいます。
role-name フィールドは、呼び出し元が指定された role(isCallerInRole()) 役割内にあり、
コード内で参照される役割の名前を含んでいるかどうかを判別します。セキュリティー役割はアセンブリー段階で作成されるため、
開発者は role-name フィールドで 論理役割名 を使用して、
アセンブラーの説明フィールドに十分な説明を提供し、実際の役割 (role-link) をマップします。
security-role-ref エレメントは、EJB レベルにあります。
エンタープライズ Bean は、ゼロ個以上の security-role-ref エレメントを保有できます。
- EJB デプロイメント記述子エディターの「参照」タブの参照リストの下で、
「追加」をクリックします。「Add Reference」ウィザードが開きます。
- 「Security role reference」を選択して、「次へ」をクリックします。
- セキュリティー役割参照に名前を付け、参照をリンクするセキュリティー役割を選択し、
セキュリティー役割参照を記述して、「終了」をクリックします。
- 開発中に使用される role-name をすべて、上記のステップを使用して
役割 (role-link) にマップします。
- エンタープライズ Bean コンポーネントの RunAs ID を指定します。
エンタープライズ Bean の RunAs ID は、EJB 呼び出しのチェーンの中で
次のエンタープライズ Bean を呼び出すために使用されます。次のエンタープライズ Bean が
呼び出されると、RunAsIdentity ID が次のエンタープライズ Bean に渡されて、
次のエンタープライズ Bean で許可検査が実行されます。
RunAs ID が指定されていない場合、クライアントの ID が
次のエンタープライズ Bean に伝搬されます。
RunAs ID は、それぞれのエンタープライズ Bean を表し、
エンタープライズ Bean 内の各メソッドを表すことができます。
- EJB デプロイメント記述子エディターの「アクセス」タブの「Security Identity (Bean Level)」の横で、
「追加」をクリックします。「Add Security Identity」ウィザードが開きます。
- 該当する「run as」モードを選択し、セキュリティー ID を記述し、
「次へ」をクリックします。 「呼び出し元の ID を使用」モードを選択し、
プリンシパルのクレデンシャルの設定に変更を加えないことをセキュリティー・サービスに指示します。
「Use identity assigned to specific role
(below)」モードを選択し、Bean メソッドの実行用に指定されたセキュリティー役割
に割り当てられるプリンシパルを使用します。この関連付けは、アプリケーション・バインディングの一部で、
ここでの役割は、その役割が認められているユーザーのユーザー ID およびパスワードに関連付けられています。
「Use identity assigned to specific role (below)」モードを選択した場合、
役割名および役割の説明を指定しなければなりません。
- 検索された Bean のリストから 1 つ以上のエンタープライズ Bean を選択し、「次へ」をクリックします。
「次へ」が選択不可の場合、
「終了」をクリックします。
- オプション: 「Method elements」ページで、セキュリティー ID 用の 1 つ以上のメソッド要素を選択し、「終了」をクリックします。
- デプロイメント記述子エディターを閉じ、プロンプトが出された場合は、
「はい」をクリックして変更を保管します。
結果
EJB アプリケーションを保護した後、
結果としての .jar ファイルは、セキュリティー情報をそのデプロイメント記述子内に格納します。
EJB モジュールのセキュリティー情報は ejb-jar.xml ファイルに
保管されます。
次の作業
アセンブリー・ツールを使用して EJB アプリケーションを保護すると、
管理コンソールを使用して、EJB アプリケーションをインストールできます。
保護されている EJB アプリケーションのインストール中に、
セキュア・アプリケーションのデプロイ
の項目のステップに従って、
EJB アプリケーションを保護するタスクを完了します。