![]() |
Sun ONE Application Server 7 セキュリティ管理者ガイド |
Sun ONE Application Server のセキュリティについてこの章では、セキュリティの基本的な概念と、SunTM ONE Application Server 7 環境に適用されるセキュリティ機能の概要について説明します。
注 このマニュアルで説明するすべての内容が J2EE アプリケーションにあてはまるわけではありません。一部の内容は HTTP サーバーだけに適用されます。安全な J2EE アプリケーションの開発については、J2EE の仕様書、および『Sun ONE Application Server 開発者ガイド』を参照してください。
この節には次のトピックがあります。
アプリケーションサーバーのセキュリティ
サーバーのセキュリティに責任を負う管理者は、Sun ONE Application Server を保護し、未承認のアクセス、 (意図的なものであるかどうかにかかわらず) 損傷、盗難、誤表示からデータを守ることが重要です。このためには、デジタル証明書、暗号化、承認、監査などのセキュリティツールを使用し、セキュリティを考慮することが必要です。
Sun ONE Application Server 環境でセキュリティ管理に必要な事項には次のものがあります。
証明書の管理
証明書は、個人や企業などのエンティティの名前を指定するデジタルデータで、そのエンティティが所属する証明書に含まれる公開鍵を証明します。クライアントとサーバーの両方が証明書を持つことができます。
Sun ONE Application Server 環境で証明書が機能するしくみについては、「証明書の管理」を参照してください。
SSL/TLS 暗号化
暗号化は、意図した受信者以外が認識できないように情報を変換するプロセスで、復号化は、暗号化された情報を認識可能な状態に戻すプロセスです。
符号化方式は、暗号化と復号化に使用される暗号化アルゴリズム (関数) です。Sun ONE Application Server がサポートしている SSL (Secure Sockets Layer) プロトコルと TLS (Transport Layer Security) プロトコルには、さまざまな符号化方式が用意されています。安全度は、符号化方式によって異なります。
サポートされている暗号化プロトコルは、SSL 3.0 と TLS 1.0 です。暗号化については、「SSL/TLS 暗号化の管理」を参照してください。
認証
認証は、呼び出し側とサービスプロバイダが特定のユーザーまたはシステムとして対話していることを相互に証明するメカニズムです。証明が双方向の場合は、これを特別に相互認証と呼びます。たとえば、ユーザーが Web ブラウザ上でユーザー名とパスワードを入力し、アクティブなデータベースドメインに保存されているパーマネントプロファイルとその証明書が一致したときに、ユーザーが認証されます。それ以降のセッションでは、ユーザーはこの認証済みのセキュリティ ID に関連付けられます。
サーバー認証とは、クライアントがサーバーにより認証されることです。つまり、特定のネットワークアドレスにあるサーバーに対して責任を持つとされている組織を識別して証明します。
仮想サーバー認証では、システム上の仮想サーバーごとに異なる証明書データベースを持たせることができます。各仮想サーバーデータベースには、複数の証明書を格納できます。仮想サーバー上でも、各インスタンスに複数の異なる証明書を持たせることができます。
監査
監査は、エラーやセキュリティ違反などの重大なイベントが発生した場合に、それを後から調べることができるようにイベントを記録するメソッドです。すべての認証イベントは、Sun ONE Application Server のログに記録されます。完全なアクセスログには、Sun ONE Application Server で行われるすべてのアクセスイベントが連続して記録されます。
ログについては、『Sun ONE Application Server 管理者ガイド』を参照してください。
HTTP サーバーのセキュリティ機能
注 HTTP サーバーの機能として紹介される機能は、HTTP サーバーとしての Sun ONE Application Server だけに適用され、J2EE アプリケーションとしては適用されません。ただし、J2EE アプリケーションにも同様の機能が用意されていることがあります。
HTTP サーバーの主なセキュリティ機能は、次のとおりです。
- HTTP サーバーのユーザー - グループ認証
- HTTP サーバーのホスト - IP 認証
- HTTP サーバーの SSL クライアント認証
- HTTP サーバーのアクセス制御
- Netscape API (NSAPI)
HTTP サーバーのユーザー - グループ認証
ユーザー - グループ認証では、アクセスを許可する前にユーザーがユーザー自身を認証する必要があります。この認証は、ユーザーが入力する名前とパスワード、およびクライアント証明書またはダイジェスト認証プラグインを使って行われます。Sun ONE Application Server がサポートしているユーザー - グループ認証には、基本、デフォルト、SSL、ダイジェスト、カスタムがあります。
HTTP サーバーのユーザー - グループ認証については、「HTTP サーバーのユーザー - グループ認証」および「ホスト - IP 認証の実装」を参照してください。
J2EE アプリケーションのユーザー - グループ認証については、『Sun ONE Application Server 開発者ガイド』を参照してください。
HTTP サーバーのホスト - IP 認証
ホスト - IP 認証は、管理サーバーまたは Web サイト上のファイルやディレクトリへのアクセスを、特定のコンピュータを使うクライアントだけに制限するメソッドで、ホスト - IP アクセス制御とも呼ばれます。
HTTP サーバーのホスト - IP 認証については、「ホスト - IP 認証の実装」を参照してください。
HTTP サーバーの SSL クライアント認証
クライアント認証は、クライアントの証明書を認証するプロセスで、証明書の署名を暗号を使って検証し、証明書チェーンが信頼できる CA のリストに載っている CA からのものであることを確認します。クライアントに複数の証明書を持たせることもできます。これは、1 人の人が数種類の ID を所有しているのと同じことです。
HTTP サーバーのクライアント認証については、「クライアント認証の設定」を参照してください。
注 J2EE でも SSL クライアント認証を利用できます。詳細は『Sun ONE Application Server 開発者ガイド』を参照してください。
HTTP サーバーのアクセス制御
ACE (アクセス制御エントリ) という階層構造の規則を作成することで、個人、グループ、または特定のサーバーやアプリケーションなどのエンティティからのアクセスを許可したり、拒否したりすることができます。それぞれの ACE は、サーバーがその階層の次の ACE を調べるかどうかを指定します。作成した ACE のセットを ACL (アクセス制御リスト) と呼びます。
次のように、HTTP サーバーへのアクセス制限には多数のオプションがあります。
- サーバー全体へのアクセスの制限
- ディレクトリ (パス) に対するアクセスの制限
- URI (パス) に対するアクセスの制限
- ファイルタイプによるアクセスの制限
- 時間帯によるアクセスの制限
- セキュリティによるアクセスの制限
HTTP サーバーのアクセス制御については、「HTTP サーバーアクセス制御の管理」を参照してください。
Netscape API (NSAPI)
NSAPI は、HTTP に特化した多数のユーティリティ機能を提供する C 言語 API です。NSAPI では、要求の処理やその他のサーバーアクティビティで使われる SAF (Server Application Function) 機能をプラグインとして提供することができます。
詳細は、『Sun ONE Application Server Developerユs Guide to NASPI』を参照してください。
J2EE アプリケーションのセキュリティ機能
J2EE アプリケーションの認証と承認の要件は、J2EE 仕様に定義されており、ここでも簡単に紹介します。
注 J2EE アプリケーションのセキュリティを開発するときは、J2EE の仕様書と『Sun ONE Application Server 開発者ガイド』に記載されているセキュリティメカニズムを使用してください。
Sun ONE Application Server 環境でサポートしている J2EE セキュリティ機能は、次のとおりです。
宣言によるセキュリティ
宣言によるセキュリティでは、認証はコンテナによって処理されます。現在のセキュリティコンテキストに関連づけられた主体が、要求される処理へのアクセスを許可されているかどうかを決定するときに、配備記述子が参照されます。
機密性または整合性のトランスポート保証要件を Web アプリケーションが指定することもあります。これは、該当リソースに必要な SSL に変換されます。
詳細は、『Sun ONE Application Server 開発者ガイド』を参照してください。
プログラムによるセキュリティ
プログラムによるセキュリティでは、認証はアプリケーションコードによって直接処理されます。このコードは、開発者が記述します。
詳細は、『Sun ONE Application Server 開発者ガイド』を参照してください。
ユーザー認証
Web クライアント、アプリケーションコンテナを実行する J2EE アプリケーションクライアント、Sun ONE Application Server コンテナを使用しない外部の RMI/IIOP クライアント、という 3 つの呼び出し側認証パスがあります。フォーム認証がサポートされています。
詳細は、『Sun ONE Application Server 開発者ガイド』を参照してください。
レルムの管理
管理インタフェースでは、サーバーに特定のレルムを追加、編集、削除することができます。Sun ONE Application Server のレルムには、file、ldap、certificate、および solaris があります。
詳細は、『Sun ONE Application Server 開発者ガイド』を参照してください。
シングルサインオン
シングルサインオンの場合、1 つの仮想サーバーインスタンスで複数の J2EE アプリケーションが、ユーザーの認証を共有できます。
詳細は、『Sun ONE Application Server 開発者ガイド』を参照してください。
リソース認証
Sun ONE Application Server は、外部リソースの認証をサポートしています。この認証では、別の認証も必要になることがあります。
詳細は、『Sun ONE Application Server 開発者ガイド』を参照してください。
プラグイン対応認証
プラグイン認証では、J2EE アプリケーションは J2SE プラットフォームから JAAS (Java Authentication and Authorization Service) を利用できます。開発者は、独自の認証メカニズムをプラグインできます。
詳細は、『Sun ONE Application Server 開発者ガイド』を参照してください。
安全を考慮した運用
Sun ONE Application Server のリソースを保護する上で、注意すべき点は数多くあります。認証や暗号化などのメカニズムが関係するものもありますが、単にセキュリティを意識した運用と常識に基づくものがその多くを占めます。
次の作業にはセキュリティ上の考慮が必要です。
- Sun ONE Application Server への物理的なアクセスの制限
- ファイアウォールの設定
- 管理機能へのアクセスの制限
- パスワードの管理
- サーバーでのほかのアプリケーションの実行制限
- 保護されているサーバーと保護されていないサーバーの設定
それぞれのトピックについては、「一般的なセキュリティ対策」で説明します。
サーバーのセキュリティに関連するファイル
多くの Sun ONE Application Server 設定ファイルが、サーバーのセキュリティパラメータの定義に使用されます。セキュリティ関連タスクに使用される主なファイルは次のとおりです。各ファイルについて簡単に説明します。
- init.conf ファイル
- dbswitch.conf ファイル
- server.xml ファイル
- password.conf ファイル
- certmap.conf ファイル
- ACL ファイル
- htaccess ファイル
- キーファイル
- server.policy ファイル
Sun ONE Application Server 設定ファイルの詳細については、『Sun ONE Application Server 管理者用設定ファイルリファレンス』を参照してください。
init.conf ファイル
init.conf ファイルには、サーバーのインストール先パス、パフォーマンス調整オプション、プラグイン共有オブジェクトの場所など、低レベルのサーバー設定情報が記録されています。このファイルは、起動ファイルです。Sun ONE Application Server を起動すると、このファイルの内容が参照され、サーバーインスタンスの動作と設定に影響するグローバル変数が設定されます。セキュリティ関連タスクには、次のものがあります。
- 保護されていないサーバーを安全にする chroot コマンドを使うには、init.conf に含まれるすべてのパスを絶対パスとして記録し、obj.conf に含まれるパスを chroot ディレクトリに関連づけた相対パスとして記録する必要がある。ガイドラインについては、「保護されていないサーバーのセキュリティ」を参照
- SSL が有効なサーバーをインストールすると、グローバルセキュリティパラメータ用の SSL 指令エントリが init.conf ファイルに作成される。詳細については、「グローバルなセキュリティ設定」を参照
- init.conf ファイルで指令を設定することで、ACL ユーザーキャッシュを制御できる。詳細については、「ACL ユーザーキャッシュの設定」を参照
- サーバーが htaccess ファイルを使用するように手動で設定するには、サーバーの init.conf ファイルを修正して、プラグインをロード、初期化、有効化する必要がある。詳細については、「init.conf による htaccess の有効化」を参照
dbswitch.conf ファイル
注 この項は、HTTP サーバーのコンテンツだけに適用されます。
dbswitch.conf ファイルは、Sun ONE Application Server が使用する LDAP ディレクトリを指定します。これは、サーバーの起動時にだけ読み込まれます。
ユーザー認証データベースを dbswitch.conf ファイルにグローバルに定義できます。詳細については、「仮想サーバーからデータベースへのアクセス」を参照
server.xml ファイル
server.xml ファイルは、Sun ONE Application Server の中心的な設定ファイルです。セキュリティ関連タスクには、次のものがあります。
- HTTP リスナー (SSL 符号化方式、証明書などを含む)、仮想サーバー、アクセス制御リストなどの設定を処理する。また、これらのエンティティ間の関係を処理する
- セキュリティドメインのリスト、およびプロバイダクラスとレルムに固有なプロパティの設定データを含む。セキュリティドメイン (レルム) については、『Sun ONE Application Server 開発者ガイド』を参照
- server.xml ファイルの ssl 要素には、仮想サーバーの SSL プロパティがサーバーごとに記録されている。詳細については、「グローバルなセキュリティ設定」を参照
- server.xml を手動で編集することで、外部サーバー証明書により、 Sun ONE Application Server を起動できる。詳細については、「外部の証明書を使ったサーバーの起動」を参照
server.xml ファイルの詳細については、『Sun ONE Application Server 管理者用設定ファイルリファレンス』を参照してください。
obj.conf ファイル
注 この項は、HTTP サーバーのコンテンツだけに適用されます。
obj.conf ファイルには、クライアントからの要求を Sun ONE Application Server が処理する方法を指示するための指令が指定されています。セキュリティ関連タスクには、次のものがあります。
- HTTP サーバー認証では、obj.conf ファイルに指定した方式が使われる。方式が obj.conf ファイルに指定されていない場合は、基本認証となる。詳細は、「HTTP サーバーのユーザー - グループ認証」を参照
- ACL を指定する、または独立した ACL ファイルを作成すると、それを obj.conf ファイルで参照することができる。方法については「obj.conf ファイル内の ACL ファイルの参照」を参照
- NSAPI 要求処理のパス設定を処理する (各仮想サーバーに専用の obj.conf ファイルを持たせることができる)。詳細については、『Sun ONE Application Server Developerユs Guide to NASPI』を参照
password.conf ファイル
SSL が設定された場合、SSL/TTS が有効な Sun ONE Application Server を自動で再起動できるように、信頼データベースのパスワードを password.conf ファイルに記録できます。
注 システムを充分にセキュリティ保護して、このファイルとキーデータベースが危険にさらされないようにする必要があります。このような保護については、「物理アクセスの制限」で説明します。
password.conf ファイルの詳細については、「password.conf ファイルの使用」および『Sun ONE Application Server 管理者用設定ファイルリファレンス』を参照してください。
certmap.conf ファイル
注 この項は、HTTP サーバーのコンテンツだけに適用されます。
certmap.conf ファイルは、名前で指定された証明書を、issureDN で指定された LDAP エントリにどのようにマッピングするかを指定します。certmap.conf ファイルには、次のような情報が記録されます。
- サーバーが、LDAP ツリーのどこから検索を開始するか
- LDAP ディレクトリからエントリを検索する場合、Sun ONE Application Server が検索条件として使用する証明書属性
- サーバーがほかの検証プロセスに進むかどうか
詳細については、「certmap.conf ファイルの操作」を参照してください。
ACL ファイル
ACL (アクセス制御リスト) は、Sun ONE Application Server に格納されているリソースにアクセスできるユーザーの ID リストを記録したテキストファイルです。
デフォルトの設定では、Sun ONE Application Server はサーバーにアクセスするすべてのリストをまとめた 1 つの ACL ファイルを使用します。複数の ACL ファイルを作成し、obj.conf ファイルでそれを参照することもできます。
ACL ファイルの処理については、「HTTP サーバーアクセス制御の管理」を参照してください。詳細は、『Sun ONE Application Server Developerユs Guide to NASPI』を参照してください。
htaccess ファイル
注 この項は、HTTP サーバーのコンテンツだけに適用されます。
htaccess ファイルは、設定オプションのサブセットを格納した動的な設定ファイルです。Sun ONE Application Server の標準のアクセス制御と htaccess ファイルを組み合わせて使用できます。標準のアクセス制御は、常に htaccess によるアクセス制御の前に適用されます。
htaccess ファイルの処理については、「htaccess ファイルの使用」を参照してください。
キーファイル
キーファイルには、file レルムのユーザーリストが含まれます (J2EE アプリケーションだけに適用)。すべてのサーバーインスタンスには、空のデフォルトキーファイルがあります。ユーザーの追加は、管理インタフェースまたはコマンド行インタフェースから行います。
デフォルトでは、file レルムは常にこのファイル (keyfile) を使うように設定されます。このファイルの名前と保存されている場所は、server.xml ファイルで file レルムのプロパティを編集することで変更できます。
詳細は、『Sun ONE Application Server 開発者ガイド』を参照してください。
server.policy ファイル
server.policy ファイルには、インスタンスで実行されるすべての Java コードに適用される J2SE ポリシーの設定が記録されます。
詳細は、『Sun ONE Application Server 開発者ガイド』を参照してください。