プロダクション モードへの移行
チュートリアル 19 : セキュリティ コンフィグレーションのコピーと再初期化
このチュートリアルでは、セキュリティ コンフィグレーションをデプロイメント記述子からコンフィグレーション済みの認可プロバイダとロール マッピング プロバイダのデータベースにコピーして、その後のセキュリティ ポリシーとセキュリティ ロールの変更を Administration Console から行えるようにする方法を説明します。また、元のデプロイメント記述子を使用してセキュリティ コンフィグレーションを再初期化する方法も説明します。
このチュートリアルは、以下の節で構成されています。
前提条件
このチュートリアルを開始する前に、以下のことを行ってください。
MedRecDomain および MedRecServer を作成し、MedRecServer を起動する。「チュートリアル 1 : 開発用の WebLogic ドメインおよびサーバ インスタンスの作成」を参照してください。
「AdminWebApp Web アプリケーション」を入手し (dev2dev Web サイトの WebLogic Server 8.1 のコード サンプルで入手可能)、adminWebApp.zip ファイルを一時ディレクトリ (C:\adminWebApp など) に解凍する。
これまでのチュートリアルの手順で MedRecEAR という名前のエンタープライズ アプリケーションをデプロイしている場合、Administration Console でこのアプリケーションを削除する。
『WebLogic リソースのセキュリティ』の「組み合わせた方法による URL リソースと EJB リソースの保護」を読む。
手順
このチュートリアルは、主に以下の 3 つの手順で構成されます。
手順 1 : セキュリティ コンフィグレーションをコピーする
adminWebApp Web アプリケーションのセキュリティ コンフィグレーションを、そのデプロイメント記述子からコンフィグレーション済みの認可プロバイダとロール マッピング プロバイダのデータベースにコピーするには、次の手順に従います。
手順 1 : セキュリティ レルム設定を指定して Web アプリケーションをデプロイする
- Administration Console の左側のナビゲーション ツリーで [セキュリティ|レルム] を展開します。
- [myrealm] セキュリティ レルムをクリックします。
- [全般] タブで、[ロールとポリシーのチェック対象] ドロップダウン メニューの値として [すべての Web アプリケーションと EJB] を選択します。
この設定では、WebLogic Security サービスがすべての URL (Web) リソースおよび EJB リソースに対してセキュリティ チェックを実行します。詳細については、『WebLogic リソースのセキュリティ』の「セキュリティ ロールとセキュリティ ポリシーをチェックする方法」を参照してください。
[ロールとポリシーのチェック対象] ドロップダウン メニューの値として [すべての Web アプリケーションと EJB] がすでに選択されている場合は、手順 4 に進みます。
- [今後の再デプロイの設定] ドロップダウン メニューから [デプロイメント記述子のロールとポリシーを初期化] を選択します。
この設定にすると、WebLogic Server はリソースをデプロイするたびに、URL (Web) リソースおよび EJB リソースのセキュリティ コンフィグレーションをデプロイメント記述子からコンフィグレーション済みの認可プロバイダとロール マッピング プロバイダのデータベースにコピーします。詳細については、『WebLogic リソースのセキュリティ』の「WebLogic リソースを再デプロイするときの処理」を参照してください。
- [適用] をクリックして、変更を保存します。
- 手順 2 で [ロールとポリシーのチェック対象] ドロップダウン メニューの値を [すべての Web アプリケーションと EJB] に設定する必要があった場合 (つまり、まだこのように設定されていなかった場合) は、サーバを再起動します。詳細については、『WebLogic Server のコンフィグレーションと管理』の「サーバの起動と停止 : クイック リファレンス」を参照してください。
手順 3 で [ロールとポリシーのチェック対象] ドロップダウン メニューの値を変更する必要がなかった場合は、サーバを再起動せずに手順 7 に進みます。
- adminWebApp Web アプリケーション モジュールをデプロイして、MedRecServer に割り当てます。
Web アプリケーションのデプロイ手順については、『WebLogic Server アプリケーションのデプロイメント』を参照してください。
手順 2 : コピーしたセキュリティ ポリシーを検証する (省略可能)
- adminWebApp Web アプリケーションの web.xml デプロイメント記述子を開き、<url-pattern> および <http-method> 要素の内容と、<auth-constraint> 要素の <role-name> 下位要素の内容を記録しておきます。コード リスト 1 は、web.xml デプロイメント記述子ファイルの関連部分を太字で示しています。
コード リスト 1 : adminWebApp Web アプリケーションの web.xml デプロイメント記述子
<!DOCTYPE web-app (View Source for full doctype...)>
<web-app>
...
<security-constraint>
<web-resource-collection>
<web-resource-name>images</web-resource-name>
<url-pattern>*.gif</url-pattern>
</web-resource-collection>
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>UnsecureLoginAction
</web-resource-name>
<url-pattern>login.do</url-pattern>
</web-resource-collection>
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>UnsecureLoginPages
</web-resource-name>
<url-pattern>Login.jsp</url-pattern>
</web-resource-collection>
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>AdminActions</web-resource-name>
<description>These pages are only accessible by authorized administrators.</description>
<url-pattern>*.do</url-pattern>
<url-pattern>*.jsp</url-pattern>
<http-method>POST</http-method>
<http-method>GET</http-method>
</web-resource-collection>
<auth-constraint>
<description>These are the roles who have access.</description>
<role-name>admin</role-name>
</auth-constraint>
...
</security-constraint>
...
<security-role>
<description>An administrator</description>
<role-name>admin</role-name>
</security-role>
</web-app>
- Administration Console の左側のナビゲーション ツリーで [Web アプリケーション モジュール] を展開し、[adminWebApp] を右クリックします。
- メニューから [セキュリティ ポリシーを定義] を選択し、[全般] タブを表示します。
[定義済みの URL パターン] の見出しの下に、手順 1 で記録した URL パターンに対応する 5 つの URL パターンのハイパーリンクが表示されます。
- URL パターン *.do のハイパーリンクをクリックして、ポリシー エディタ ページを表示します。
- [メソッド] ドロップダウン メニューから [POST] を選択します。
[呼び出し側に許可するロールは] ポリシー条件が強調表示され、[ポリシー文] リスト ボックスに次のように表示されます。
呼び出し側に許可するロールは
admin
クリックしたハイパーリンクの URL パターンに対応する <http-method> 要素が web.xml デプロイメント記述子にない場合は、[メソッド] ドロップダウン メニューの値が [ALL] であれば、[ポリシー文] リスト ボックスに適切なセキュリティ ポリシーが表示されます。[メソッド] ドロップダウンの値が [ALL] であれば、たとえばコード リスト 1 の URL パターン *.gif に対するセキュリティ ポリシーが表示されます。
URL パターンに対応する <auth-constraint> 要素が web.xml デプロイメント記述子にない場合は、その URL パターンに対するセキュリティ ポリシーが Anonymous グローバル ロールで作成されます。たとえばコード リスト 1 の URL パターン *.gif に対するセキュリティ ポリシーが作成されます。デフォルト グローバル ロールの詳細については、『WebLogic リソースのセキュリティ』の「デフォルト グローバル ロール」を参照してください。
- 手順 2 から 5 を繰り返して複数のセキュリティ ポリシーを検証します。
手順 3 : コピーしたセキュリティ ロールを検証する (省略可能)
- adminWebApp Web アプリケーションの weblogic.xml デプロイメント記述子を開き、<security-role-assignment> 要素の内容、特に <role-name> および <principal-name> の各下位要素の内容を記録しておきます。コード リスト 2 は、weblogic.xml デプロイメント記述子ファイルの関連部分を太字で示しています。
コード リスト 2 : adminWebApp Web アプリケーションの weblogic.xml デプロイメント記述子
<!DOCTYPE weblogic-web-app (View Source for full doctype...)>
<weblogic-web-app>
<context-root>admin</context-root>
<security-role-assignment>
<role-name>admin</role-name>
<principal-name>admin</principal-name>
</security-role-assignment>
</weblogic-web-app>
- Administration Console の左側のナビゲーション ツリーで adminWebApp Web アプリケーションを右クリックします。
- メニューから [ロール スコープを定義] を選択し、[全般] タブを表示します。
- URL パターン /* のハイパーリンクをクリックします。
[スコープ指定ロール] ページには、WebLogic ロール マッピング プロバイダのデータベースで現在定義されているこの Web アプリケーションのすべてのスコープ ロール (admin というスコープ ロールを含む) が表示されます。
URL パターン /* により、デプロイメント記述子から取得されたセキュリティ ロールが、コンフィグレーション済みのロール マッピング プロバイダのデータベースにスコープ ロールとして必ずコピーされます。
- スコープ ロール admin のハイパーリンクをクリックします。
- [条件] タブを選択します。
[ロール文] リスト ボックスに、デプロイメント記述子の対応する <principal-name> 要素の内容に基づくロール文が表示されます。ここでは admin というユーザまたはグループが表示されます。
手順 4 : [今後の再デプロイの設定] の設定を元に戻す
警告:この手順は確実に完了する必要があります。この設定を元に戻さないと、URL (Web) リソースの再デプロイ時に、セキュリティ コンフィグレーションに一貫性がなくなるおそれがあります。この手順を誤ったり、実行しなかった場合、次にポリシー エディタ ページをロードしたときに以下のようなメッセージが表示されます。
「以下の情報は正しくない可能性があります。正確な情報が表示されていることを確認するには、WebLogic リソースを削除して再デプロイする必要があります。」
- Administration Console の左側のナビゲーション ツリーで [セキュリティ|レルム] を展開します。
- [myrealm] セキュリティ レルムをクリックします。
- [全般] タブで、[今後の再デプロイの設定] ドロップダウン メニューから [デプロイメント記述子のロールとポリシーを無視] を選択します。
この設定では、デプロイメント記述子を使用しないで、Administration Console を使用して、URL (Web) リソースおよび EJB リソースのセキュリティを設定します。 詳細については、『WebLogic リソースのセキュリティ』の「WebLogic リソースをデプロイするときの処理」を参照してください。
- [適用] をクリックして、変更を保存します。
手順 2 : Administration Console を使用してセキュリティ ポリシーを変更する
- Administration Console の左側のナビゲーション ツリーで [Web アプリケーション モジュール] を展開し、[adminWebApp] を右クリックします。
- メニューから [セキュリティ ポリシーを定義] を選択し、[全般] タブを表示します。
5 つの URL パターンのハイパーリンクが、[定義済みの URL パターン] の見出しの下にリストされている、「手順 2 : コピーしたセキュリティ ポリシーを検証する (省略可能)」で記録した URL パターンに対応しています。
- URL パターン *.do のハイパーリンクをクリックして、ポリシー エディタ ページを表示します。
- [メソッド] ドロップダウン メニューから [POST] を選択します。
[呼び出し側に許可するロールは] ポリシー条件が強調表示され、[ポリシー文] リスト ボックスに次のように表示されます。
呼び出し側に許可するロールは
admin
- [ポリシー条件] リスト ボックスで、[アクセス可能な時間帯は] というポリシー条件を強調表示します。
- [追加] をクリックし、次に [時間制約] ウィンドウで [OK] をクリックしてデフォルトの開始時刻と終了時刻を選択します。
[ポリシー文] リスト ボックスに次のように表示されます。
呼び出し側に許可するロールは
developers
アクセス可能な時間帯は
08:00:00 and 19:00:00
- [適用] をクリックして、変更を保存します。
手順 3 : セキュリティ コンフィグレーションを再初期化する
adminWebApp Web アプリケーションのデプロイメント記述子のセキュリティ コンフィグレーションを再初期化するには、次の手順に従います。
手順 1 : [今後の再デプロイの設定] の設定を変更する
- Administration Console の左側のナビゲーション ツリーで [セキュリティ|レルム] を展開します。
- [myrealm] セキュリティ レルムをクリックします。
- [全般] タブで、[今後の再デプロイの設定] ドロップダウン メニューから [デプロイメント記述子のロールとポリシーを初期化] を選択します。
この設定では、リソースをデプロイするたびに、WebLogic Server が URL (Web) リソースおよび EJB リソースのセキュリティ コンフィグレーションを、デプロイメント記述子からコンフィグレーション済みの認可プロバイダとロール マッピング プロバイダのデータベースにコピーします。詳細については、『WebLogic リソースのセキュリティ』の「WebLogic リソースを再デプロイするときの処理」を参照してください。
[ロールとポリシーのチェック対象] ドロップダウン メニューの値として [すべての Web アプリケーションと EJB] がすでに選択されている場合は、手順 4 に進みます。
- [適用] をクリックして、変更を保存します。
手順 2 : adminWebApp Web アプリケーションを再デプロイする
- Administration Console の左側のナビゲーション ツリーで [デプロイメント|Web アプリケーション モジュール] を展開します。
- adminWebApp Web アプリケーションをクリックしてください。
右ペインに、すべての Web アプリケーション モジュールまたは EJB モジュールを示すテーブルが表示されます。
- adminWebApp Web アプリケーションと同じ行にあるごみ箱アイコンをクリックします。
- [はい]、続いて [続行] をクリックし、adminWebApp Web アプリケーションを削除します。
adminWebApp Web アプリケーションが表示されなくなります。
- adminWebApp Web アプリケーション モジュールを割り当てた MedRecServer に対応する [デプロイ] ボタンをクリックします。
- MedRecServer を対象として adminWebApp Web アプリケーションを再デプロイします。
注意 :Web アプリケーション モジュールおよび EJB モジュールをデプロイする手順については、『WebLogic Server アプリケーションのデプロイメント』を参照してください。
手順 3 : セキュリティ コンフィグレーションの再初期化を検証する (省略可能)
- Administration Console の左側のナビゲーション ツリーで [adminWebApp] を右クリックします。
- メニューから [セキュリティ ポリシーを定義] を選択し、[全般] タブを表示します。
5 つの URL パターンのハイパーリンクが、[定義済みの URL パターン] の見出しの下にリストされている、手順 1 で記録した URL パターンに対応しています。
- URL パターン *.do のハイパーリンクをクリックして、ポリシー エディタ ページを表示します。
- [メソッド] ドロップダウン メニューから [POST] を選択します。
[呼び出し側に許可するロールは] ポリシー条件が強調表示され、[ポリシー文] リスト ボックスに次のように表示されます。
呼び出し側に許可するロールは
admin
「手順 2 : Administration Console を使用してセキュリティ ポリシーを変更する」で [アクセス可能な時間帯は] ポリシー条件を使用して作成したポリシー文は、セキュリティ コンフィグレーションを初期化したデプロイメント記述子に定義されていないため失われます。
手順 4 : [今後の再デプロイの設定] の設定を元に戻す
警告:この手順は確実に完了する必要があります。この設定を元に戻さないと、URL (Web) リソースの再デプロイ時に、セキュリティ コンフィグレーションに一貫性がなくなるおそれがあります。この手順を誤ったり、実行しなかった場合、次にポリシー エディタ ページをロードしたときに以下のようなメッセージが表示されます。
「以下の情報は正しくない可能性があります。正確な情報が表示されていることを確認するには、WebLogic リソースを削除して再デプロイする必要があります。」
- Administration Console の左側のナビゲーション ツリーで [セキュリティ|レルム] を展開します。
- [myrealm] セキュリティ レルムをクリックします。
- [全般] タブで、[今後の再デプロイの設定] ドロップダウン メニューから [デプロイメント記述子のロールとポリシーを無視] を選択します。
注意 :この設定では、デプロイメント記述子を使用しないで、Administration Console を使用して、URL (Web) リソースおよび EJB リソースのセキュリティを設定します。詳細については、『WebLogic リソースのセキュリティ』の「WebLogic リソースをデプロイするときの処理」を参照してください。
- [適用] をクリックして、変更を保存します。
ベスト プラクティス
ユーザ名、グループ名、またはセキュリティ ロール名には、空白スペース、カンマ、ハイフン、\t、< >、#、|、&、~、?、( )、{ } の文字は使用できません。ユーザ名、グループ名、セキュリティ ロール名では大文字/小文字を区別します。セキュリティ ロール名の正しい構文は、XML (Extensible Markup Language) 勧告の Nmtoken に定義されています。BEA の命名規約では、グループ名は複数形、セキュリティ ロール名は単数形です。
[今後の再デプロイの設定] ドロップダウン メニューを [デプロイメント記述子のロールとポリシーを無視] に設定して WebLogic リソースを再デプロイすると、リソースのセキュリティ コンフィグレーション (セキュリティ ポリシーまたはセキュリティ ロール) は変更されません。
[今後の再デプロイの設定] ドロップダウン メニューを [デプロイメント記述子のロールとポリシーを初期化] に設定すると、WebLogic リソースを再デプロイするときにセキュリティ コンフィグレーションが更新されます。この場合、新しいサーバが割り当てられたり、アプリケーションまたはモジュールが割り当てられているサーバがバウンスするように設定されたりします。[今後の再デプロイの設定] ドロップダウン メニューを [デプロイメント記述子のロールとポリシーを初期化] に設定している場合、デプロイメント記述子に指定されているセキュリティ ポリシーおよびセキュリティ ロールを変更するときは慎重に行ってください。
デプロイメント記述子のセキュリティ コンフィグレーションを初期化した後、Administration Console でセキュリティ ポリシーおよびセキュリティ ロールをカスタマイズする場合、[今後の再デプロイの設定] ドロップダウン メニューの値を [デプロイメント記述子のロールとポリシーを初期化] に設定したままサーバを起動しないでください。この設定でサーバを起動すると、Administration Console で行ったすべての Web アプリケーション (および EJB) のセキュリティ ポリシーおよびセキュリティ ロールに対するカスタマイズの内容がすべて失われます。
以下の場合を除き、[今後の再デプロイの設定] ドロップダウン メニューは常に [デプロイメント記述子のロールとポリシーを無視] に設定しておきます。
全体像
このチュートリアルでは、Web アプリケーションのセキュリティ コンフィグレーションを、デプロイメント記述子からコンフィグレーション済みの認可プロバイダおよびロール マッピング プロバイダのデータベースにコピーして、その後の Web アプリケーションのセキュリティ ロールとセキュリティ ポリシーの変更を Administration Console から行えるようにする方法を説明しています。Web アプリケーションの元のデプロイメント記述子を使用してセキュリティ コンフィグレーションを再初期化する方法を、同じ例を使用して説明しています。
完全な MedRec アプリケーションでも、「チュートリアル 17 : Administration Console を使用したアプリケーション リソースと URL (Web) リソースの保護」および「チュートリアル 18 : Administration Console を使用したエンタープライズ JavaBean (EJB) リソースの保護」で説明しているプリンシパル (およびプログラムによるセキュリティ) を使用して MedRec の管理者と患者の両方の EJB リソースを保護します。
関連情報