セキュリティーとはデータの保護に関することであり、ストレージ内または伝送中のデータへの不正アクセスやそうしたデータの破損をどのようにして防止するか、ということです。Application Server には、J2EE 標準に基づく動的で拡張可能なセキュリティーアーキテクチャーがあります。標準実装されているセキュリティー機能には、暗号化、認証と承認、および公開鍵インフラストラクチャーがあります。Application Server は Java セキュリティーモデルをベースに構築され、アプリケーションが安全に動作できるサンドボックスを使用するため、システムやユーザーにリスクが及ぶ可能性がありません。説明する項目は次のとおりです。
概して、2 種類のアプリケーションセキュリティーがあります。
「プログラムによるセキュリティー」。開発者が記述したアプリケーションコードがセキュリティー動作を処理します。管理者が、このメカニズムを操作する必要はまったくありません。一般的に、プログラムによるセキュリティーは、J2EE コンテナで管理するのではなく、アプリケーションのセキュリティー設定をハードコード化するのでお勧めできません。
「宣言によるセキュリティー」。Application Server のコンテナがアプリケーションの配備記述子によりセキュリティーを処理します。宣言によるセキュリティーは、配備記述子を直接または deploytool などのツールで編集することによって操作できます。配備記述子はアプリケーションの開発後に変更可能なので、宣言によるセキュリティーの方が柔軟性に富んでいます。
アプリケーションによるセキュリティーのほかに、Application Server システムのアプリケーション全体に影響するシステムセキュリティーもあります。
プログラムによるセキュリティーはアプリケーション開発者により制御されるため、このマニュアルでは説明していません。宣言によるセキュリティーについては、このマニュアルである程度説明しています。このマニュアルは、主にシステム管理者を対象としているため、システムセキュリティーを中心に説明しています。
Application Server には次のセキュリティー管理用ツールがあります。
管理コンソール。サーバー全体のセキュリティー設定、ユーザー、グループ、レルムの管理、およびほかのシステム全体のセキュリティータスクの実行に使用するブラウザベースのツール。管理コンソールの概要については、「管理用ツール」を参照してください。管理コンソールで実行可能なセキュリティータスクの概要については、「管理コンソールによるセキュリティーの管理」を参照してください。
asadmin。管理コンソールと同じタスクの多くを行うコマンド行ツール。管理コンソールからできない操作でも、asadmin を使用して操作できる場合があります。コマンドプロンプトまたはスクリプトのいずれかから asadmin コマンドを実行して、繰り返しのタスクを自動化します。asadminの概要については、「管理用ツール」を参照してください。
deploytool。個別のアプリケーションセキュリティーを制御するために、アプリケーション配備記述子を編集するグラフィカルパッケージ化ツールおよび配備ツール。deploytool はアプリケーション開発者を対象にしているため、このマニュアルでは使用方法の詳細な説明はしていません。deploytool の使用手順については、このツールのオンラインヘルプおよび http://java.sun.com/j2ee/1.4/docs/tutorial/doc/index.html の『J2EE 1.4 Tutorial』を参照してください。
Java 2 プラットフォーム、J2SE (Java 2 Standard Edition) には、次の 2 つのセキュリティー管理用ツールがあります。
keytool。デジタル証明書および鍵のペアの管理に使用するコマンド行ユーティリティー。keytool は、certificate レルムのユーザー管理に使用します。
policytool。システム全体の Java セキュリティーポリシー管理に使用するグラフィカルユーティリティー。管理者が policytool を使用することはほとんどありません。
keytool、policytool、およびその他の Java セキュリティーツールの使用方法の詳細については、http://java.sun.com/j2se/1.4.2/docs/tooldocs/tools.html#security の「Java 2 SDK Tools and Utilities」を参照してください。
Enterprise Edition では、NSS (Network Security Services) を実装した 2 つのセキュリティー管理ツールも利用可能です。NSS の詳細については、http://www.mozilla.org/projects/security/pki/nss/ を参照してください。それらのセキュリティー管理ツールは次のとおりです。
certutil。証明書および鍵データベースの管理に使用されるコマンド行ユーティリティー。
pk12util。証明書または鍵データベースと PKCS12 形式のファイル間における鍵と証明書のインポートおよびエクスポートに使用されるコマンド行ユーティリティー。
certutil、pk12util、およびその他の NSS セキュリティーツールの使用方法の詳細については、http://www.mozilla.org/projects/security/pki/nss/tools の「NSS Security Tools」を参照してください。
Application Server のこのリリースでは、特定のドメインの仕様が収められるファイル domain.xml 内に、Sun Java System Message Queue ブローカのパスワードが、あらかじめ平文で格納されています。このパスワードを収めた domain.xml ファイルの要素は、jms-host 要素の admin-password 属性です。このパスワードは変更不可能なので、インストールの際、セキュリティーに重大な影響は与えません。
ただし、管理コンソールを使用してユーザーやリソースを追加し、そのユーザーやリソースにパスワードを割り当ててください。このパスワードの中には、たとえばデータベースにアクセスするためのパスワードなど、平文で domain.xml ファイルに記述されているものがあります。このようなパスワードを平文で domain.xml ファイルに保持すると、セキュリティー上の危険を引き起こす可能性があります。次の手順を実行すると、admin-password 属性やデータベースパスワードを含む domain.xml のすべてのパスワードを暗号化できます。
domain.xml ファイルが格納されているディレクトリ (デフォルトでは domain-dir/config) から、次の asadmin コマンドを実行します。
asadmin create-password-alias --user admin alias-name |
次に例を示します。
asadmin create-password-alias --user admin jms-password |
パスワードプロンプトが表示されます。この場合は admin です。詳細については、create-password-alias、list-password-aliases、delete-password-alias コマンドのマニュアルページを参照してください。
domain.xml のパスワードの削除および置き換えを行います。これは、asadmin set コマンドを使用して行います。このような目的での set コマンドの使用例は、次のとおりです。
asadmin set --user admin server.jms-service.jms-host. default_JMS_host.admin-password=${ALIAS=jms-password} |
該当するドメインの Application Server を再起動します。
ファイルの中にはエンコード化されたパスワードを含むものがあり、ファイルシステムのアクセス権を使用しての保護が必要になります。これらのファイルには次のものが含まれます。
domain-dir/master-password
このファイルにはエンコード化されたマスターパスワードが含まれているので、ファイルシステムのアクセス権 600 で保護する必要があります。
asadmin への --passwordfile 引数を使用して、引数として渡すために作成されたすべてのパスワードファイル。これらは、ファイルシステムのアクセス権 600 で保護する必要があります。
マスターパスワード (MP) とは、全体で共有するパスワードです。これを認証に使用したり、ネットワークを介して送信したりすることは決してありません。このパスワードはセキュリティー全体の要なので、ユーザーが必要に応じて手動で入力したり、またはファイルに隠蔽したりすることができます。これは、システムで最高の機密データです。ユーザーは、このファイルを削除することで、強制的に MP の入力を要求できます。マスターパスワードが変更されると、マスターパスワードキーストアに再保存されます。
ドメインの Application Server を停止します。新旧のパスワードの入力を促す asadmin change-master-password コマンドを使用して、依存するすべての項目を再暗号化してください。次に例を示します。
asadmin change-master-password> Please enter the master password> Please enter the new master password> Please enter the the new master password again> |
Application Server を再起動します。
この時点で、実行中のサーバーインスタンスを開始してはいけません。対応するノードエージェントの SMP が変更されるまでは、決して実行中のサーバーインスタンスを再起動しないでください。SMP が変更される前にサーバーインスタンスを再起動すると、起動に失敗します。
各ノードエージェントおよび関連するサーバーを 1 つずつ停止します。asadmin change-master-password コマンドをもう一度実行してから、ノードエージェントおよび関連するサーバーを再起動してください。
すべてのノードエージェントで対応が終了するまで、次のノードエージェントで同様の作業を継続します。このようにして、継続的な変更作業が完了します。
管理パスワードの暗号化については、「パスワードのセキュリティー管理」を参照してください。管理パスワードの暗号化は強く推奨されています。管理パスワードを暗号化する前に変更する場合は、asadmin set コマンドを使用してください。このような目的での set コマンドの使用例は、次のとおりです。
asadmin set --user admin server.jms-service.jms-host.default_JMS_host.admin-password=new_pwd |
管理コンソールを使って管理パスワードを変更することもできます。その手順を次に示します。
管理コンソールのツリーコンポーネントで、「設定」ノードを展開します。
設定するインスタンスを選択します。
「セキュリティー」ノードを展開します。
「レルム」ノードを展開します。
admin-realm ノードを選択します。
「レルムを編集」ページで、「ユーザーを管理」ボタンをクリックします。
admin という名前のユーザーを選択します。
新しいパスワードを入力し、そのパスワードをもう一度入力します。
「保存」をクリックして保存するか、「閉じる」をクリックして保存しないで閉じます。
セキュリティーの責任は次のように割り当てます。
アプリケーション開発者は次の責任を負います。
アプリケーションコンポーネントに対するロールおよびロールベースのアクセス制限の指定。
アプリケーションの認証メソッドの定義およびセキュリティー保護が行われるアプリケーションの各部の指定。
アプリケーション開発者は、deploytool などのツールを使用してアプリケーション配備記述子を編集できます。これらのセキュリティータスクの詳細については、『J2EE 1.4 Tutorial』の「Security」の章 (http://java.sun.com/j2ee/1.4/docs/tutorial/doc/index.html) を参照してください。
アプリケーション配備担当者は次の責任を負います。
ユーザーまたはグループ、あるいはその両方のセキュリティーロールへのマッピング。
特定の配備シナリオの要件に適合するための、コンポーネントメソッドのアクセスに必要な権限の定義。
アプリケーション配備担当者は、deploytool などのツールを使用してアプリケーション配備記述子を編集できます。これらのセキュリティータスクの詳細については、『J2EE 1.4 Tutorial』の「Security」の章 (http://java.sun.com/j2ee/1.4/docs/tutorial/doc/index.html) を参照してください。
システム管理者は次の責任を負います。
セキュリティーレルムの設定。
ユーザーアカウントおよびグループの管理。
監査ログの管理。
サーバー証明書の管理およびサーバーの SSL (Secure Sockets Layer) の使用の設定。
コネクタ接続プールのセキュリティーマップ、その他の JACC プロバイダなど、その他のシステム全体のセキュリティー機能の管理。
システム管理者は、管理コンソールを使ってサーバーのセキュリティー設定を管理し、certutil を使って証明書を管理します。このマニュアルは主にシステム管理者を対象にしています。