この章の内容は次のとおりです。
セキュリティとは、コンピュータに保存されているデータまたはコンピュータ間でやりとりされるデータが危険にさらされないことを保証する技術です。ほとんどの場合、セキュリティ対策では証明データとデータ暗号化を利用します。一般に証明データは、ユーザーに特定のアプリケーションまたはシステムへのアクセスを許可する秘密の単語または句です。データ暗号化とは、その秘密の単語または句を保持しているか提供しなければ解釈できないような形式にデータを変換することです。
電子商取引(e- コマース)向けアプリケーションなどの分散アプリケーションでは、悪意のある何者かがデータを横取りし、処理を混乱させ、不正な入力を行う起点となるような多数のアクセス・ポイントが提供されます。ビジネスの分散化が進むにつれて、セキュリティが侵害される可能性も大きくなります。したがって、アプリケーションの分散に伴い、その基盤となる分散コンピューティング・ソフトウェアによってセキュリティを実現することがますます重要になります。
アプリケーション・サーバーは、エンド・ユーザーと貴重なデータやリソースとの間の重要なレイヤーに位置しています。Oracle WebLogic Serverは、これらのリソースを保護するために認証、認可、および暗号化サービスを提供します。しかし、こうしたサービスでは、デプロイメント環境の弱点を見つけ出して悪用することでアクセスを取得した侵入者から、リソースを守ることはできません。
したがって、インターネットまたはイントラネット上でWebLogic Serverをデプロイする場合には、独立したセキュリティ専門家に依頼して、セキュリティ・プランと手順を検討してもらい、インストール済みシステムの監査を受け、改善点のアドバイスを受けるとよいでしょう。
セキュリティ問題と適切なセキュリティ対策についてできるかぎり知識を増やすことも重要です。ドキュメント『Oracle WebLogic Server本番環境の保護』では、WebLogic Serverを本番環境にデプロイする前に検討すべき重要なセキュリティ対策について説明します。ドキュメント『Oracle WebLogic Serverロールおよびポリシーによるリソースの保護』では、様々なタイプのWebLogicリソースを紹介し、WebLogic Serverを使用してそれらのリソースを保護するための情報を提供します。Webサーバーの保護に関する最新情報を得るために、カーネギー・メロン大学が運営するCERT (tm) Coordination Centerが公開している『Security Improvement Modules, Security Practices, and Technical Implementations information』(http://www.cert.org/
)にも目を通すことをお薦めします。
Oracleのセキュリティ勧告で推奨されている対策は是非、実行してください。Oracle製品に関して問題が発生した場合には、Oracleから、その報告と適切な対策を示した指示が配信されます。サイトのセキュリティ関連の問題を担当されている方は、今後、通知を受け取れるように登録を行ってください。
セキュリティに関しては、Webアプリケーション、EJB、Java EEコネクタ、およびエンタープライズ・アプリケーションのデプロイメント記述子の定義および編集に、WebLogic Server管理コンソールを使用できます。このドキュメントWebLogicセキュリティ・サービスによるアプリケーションの開発では、WebLogic Server管理コンソールを使用してセキュリティを構成する方法について説明していません。WebLogic Server管理コンソールを使用してデプロイメント記述子の定義と編集を行う方法の詳細は、『Oracle WebLogic Serverロールおよびポリシーによるリソースの保護』と『Oracle WebLogic Serverセキュリティの管理』を参照してください。
WebLogic Serverでは次のセキュリティ・メカニズムがサポートされます。
認証とは、呼出し側とサービス・プロバイダが、特定のユーザーまたはシステムのかわりに動作していることを証明する際に使用するメカニズムのことです。認証は、資格証明を使用して「あなたは誰」という問いに答えます。証明が双方向で行われる場合、相互認証と呼ばれます。
WebLogic Serverは、ユーザー名およびパスワードによる認証と証明書による認証をサポートしています。WebLogic Serverは、証明書認証について一方向と双方向のSSL (Secure Sockets Layer)認証を両方ともサポートしています。双方向のSSL認証は、相互認証の一形態です。
WebLogic Serverでは、ユーザーまたはシステム・プロセスのIDを証明するために認証プロバイダを使用します。認証プロバイダでは、ID情報を記憶したり、トランスポートしたり、その情報が必要な場合に(サブジェクトを通じて)システムの様々なコンポーネントで利用できるようにしたりします。認証プロバイダは、WebアプリケーションおよびEJBデプロイメント記述子ファイル、またはWebLogic Server管理コンソール、あるいはその両方を使用して構成できます。
認可とは、ユーザーのIDなどの情報に基づいて、ユーザーとWebLogicリソースとのやり取りを管理するプロセスのことです。言い換えれば、認可とは「自分は何にアクセスできますか」という質問に答えるものです。
WebLogic Serverでは、WebLogic認可プロバイダはユーザーとWebLogicリソースとの対話を制限して、整合性、機密性、および可用性を確保します。認可プロバイダは、WebアプリケーションおよびEJBデプロイメント記述子ファイル、またはWebLogic Server管理コンソール、あるいはその両方を使用して構成できます。
WebLogic Serverでは、プログラムによる認可(このドキュメントではプログラムによるセキュリティともいう)を使用してユーザーとWebLogicリソースとの対話を制限することもできます。
ここでは、WebLogic Serverが実装およびサポートしているセキュリティ関連のパッケージとクラスについて説明します。これらのパッケージを使用して、WebLogic Serverとクライアント・アプリケーション、Enterprise JavaBeans (EJB)、およびWebアプリケーションとの間の対話を保護します。
注意:
WebLogicセキュリティ・パッケージ、クラス、およびメソッドの中には、WebLogic Serverのこのリリースでは非推奨となっているものがあります。非推奨となったパッケージおよびクラスの詳細は、非推奨のセキュリティAPIを参照してください。
この節では、以下の内容について説明します。
JAAS認証を使用するクライアント・アプリケーションを作成するには、Java APIおよびWebLogic APIを使用します。
この節では、以下の内容について説明します。
JAASクライアント・アプリケーションの作成には、以下のJava APIを使用します。このAPIはhttp://docs.oracle.com/javase/7/docs/api/index.html
から入手できます。
javax.naming
javax.security.auth
javax.security.auth.callback
javax.security.auth.login
javax.security.auth.spi
これらのAPIの使い方については、「JAAS認証API」を参照してください。
JAASクライアント・アプリケーションの作成には、以下のWebLogic APIを使用します。
これらのAPIの使い方については、「JAAS認証API」を参照してください。
SSL認証を使用するクライアント・アプリケーションを作成するには、Java APIおよびWebLogic APIを使用します。
この節では、以下の内容について説明します。
SSLクライアント・アプリケーションの作成には、次のJava API(http://docs.oracle.com/javase/7/docs/api/index.html
)を使用します。
java.security
java.security.cert
javax.crypto
javax.naming
javax.net
javax.security
javax.servlet
javax.servet.http
WebLogic Serverは、javax.net.SSL API(http://docs.oracle.com/javase/7/docs/api/index.html
)もサポートしていますが、WebLogic ServerでSSLを使用する際にはweblogic.security.SSL
パッケージを使用することをお薦めします。
これらのAPIの使い方については、「SSL認証API」を参照してください。
SSLクライアント・アプリケーションの作成には、以下のWebLogic APIを使用します。
これらのAPIの使い方については、「SSL認証API」を参照してください。
さらに、以下のAPIがWebLogic Serverアプリケーションの開発に使用されます。
このAPIはRoleMapper
インタフェースを提供します。JACC (Java Authorization Contract for Containers)を実装する場合は、このパッケージをjavax.security.jaccパッケージ(http://docs.oracle.com/javaee/7/api/javax/security/jacc/package-summary.html
)とともに使用できます。WebLogic JACCプロバイダの詳細は、「Java Authorization Contract for Containersの使用」を参照してください。JACCプロバイダの開発の詳細は、http://docs.oracle.com/javaee/7/api/javax/security/jacc/package-frame.html
を参照してください。
このAPIはネットワーク接続フィルタの実装に使用されるインタフェースおよびクラスを提供します。ネットワーク接続フィルタは、ネットワーク接続を開始したクライアントのIPアドレス、ドメイン、またはプロトコルなどの属性に基づいてOracle WebLogic Serverへの接続を許可または拒否します。このAPIの使用方法の詳細は、ネットワーク接続フィルタの使用を参照してください。
このAPIは、証明書パスを作成および検証するためのインタフェースとクラスを提供します。このAPIを使用して証明書チェーンを作成および検証する方法については、証明書パスの作成と検証を参照してください。
証明書および証明書パスの詳細は、java.security.certパッケージ(http://docs.oracle.com/javase/7/docs/api/java/security/cert/package-summary.html
)を参照してください。
weblogic.security.providers.saml
このAPIは、ユーザーおよびグループ情報からSAML (Security Assertion Markup Language)アサーションへのマッピングや、SAMLアサーションのキャッシュおよび取得に使用するインタフェースとクラスを提供します。
SAMLは、セキュリティ情報をやり取りするためのXMLベースのフレームワークです。WebLogic Serverでは、SAML V2.0およびV1.1(ブラウザ/POSTプロファイルおよびブラウザ/アーティファクト・プロファイルを含む)がサポートされます。SAML認可はサポートされません。
SAMLの詳細は、http://www.oasis-open.org
を参照してください。
このAPIには、セキュリティ・プロバイダをサポートするインタフェース、クラスおよび例外が含まれます。WebLogicセキュリティ・フレームワークは、このAPIで提供されるインタフェース、クラスおよび例外からなります。このAPIのインタフェース、クラスおよび例外は、weblogic.security.spi
パッケージのインタフェース、クラスおよび例外と関連付けて使用します。このAPIの使用方法の詳細は、『Oracle WebLogic Serverセキュリティ・プロバイダの開発』を参照してください。
このAPIはサーバー側の認証クラスを提供します。このクラスは、サーバーへのローカル・ログインの実行に使用されます。ユーザーを認証し、デフォルトのセキュリティ・レルムを使用して資格証明を返すためのCallbackHandlersと共に使用されるログイン・メソッドを提供します。
このパッケージはセキュリティ・サービス・プロバイダ・インタフェース(SSPI)を提供します。カスタム・セキュリティ・プロバイダの開発に使用されるインタフェース、クラスおよび例外を提供します。多くの場合、これらのインタフェース、クラスおよび例外は、weblogic.security.service
APIのインタフェース、クラスおよび例外と関連付けて使用します。このパッケージからのインタフェース、クラスおよび例外を実装することで、セキュリティ・プロバイダの実行時クラスを作成できます。SSPIの使用方法の詳細は、『Oracle WebLogic Serverセキュリティ・プロバイダの開発』を参照してください。
このAPIは、サーブレット・アプリケーション内からプログラムによる認証をサポートするサーバー側APIを備えています。このAPIの使い方の詳細は、「プログラムによる認証APIの使用」を参照してください。