第1章 セキュリティーアーキテクチャー
概要
OSGi コンテナーでは、さまざまなセキュリティー機能をサポートするアプリケーションをデプロイできます。現在、Java 認証および認可サービス (JAAS) のみが、共通するコンテナー全体のインフラストラクチャーに基づいています。その他のセキュリティー機能は、コンテナーにデプロイされた個々の製品およびコンポーネントによって個別に提供されます。
1.1. OSGi コンテナーセキュリティー
概要
図1.1「OSGi コンテナーセキュリティーアーキテクチャー」 は、コンテナー全体で使用され、コンテナーにデプロイされているすべてのバンドルにアクセスできるセキュリティーインフラストラクチャーの概要を示しています。この一般的なセキュリティーインフラストラクチャーは、現在、JAAS レルム (またはログインモジュール) をすべてのアプリケーションバンドルで利用できるようにするためのメカニズムで設定されています。
図1.1 OSGi コンテナーセキュリティーアーキテクチャー
JAAS レルム
JAAS レルムまたはログインモジュールは、Java Authentication and Authorization Service (JAAS) の仕様で定義されているように、Java アプリケーションに認証および認可データを提供するプラグインモジュールです。
Red Hat Fuse は、JAAS ログインモジュール (Spring またはブループリントファイルのいずれか) を定義するための特別なメカニズムをサポートします。これにより、コンテナー内のすべてのバンドルにログインモジュールにアクセスできるようになります。これにより、OSGi コンテナーで実行されている複数のアプリケーションが、セキュリティーデータを単一の JAAS レルムに統合することが容易になります。
karaf レルム
OSGi コンテナーには、事前定義された JAAS レルムである karaf
レルムがあります。Red Hat Fuse は、karaf
レルムを使用して、OSGi ランタイムのリモート管理、Fuse 管理コンソール、および JMX 管理の認証を提供します。karaf
レルムは、認証データが InstallDir/etc/users.properties
ファイルに保存される簡単なファイルベースのリポジトリーを使用します。
独自のアプリケーションで karaf
レルムを使用できます。karaf
を、使用する JAAS レルムの名前として設定するだけです。その後、アプリケーションは users.properties
ファイルからのデータを使用して認証を実行します。
コンソールポート
Karaf クライアントでコンソールポートに接続するか、Karaf ssh:ssh
コマンドを使用して、OSGi コンテナーをリモートで管理できます。コンソールポートは、karaf
レルムに接続する JAAS ログイン機能によってセキュア化されます。コンソールポートへの接続を試みると、karaf
レルムからアカウントのいずれかに一致する必要のあるユーザー名とパスワードの入力が要求されます。
JMX ポート
JMX ポートに接続することで (たとえば、Java の JConsole を使用して) OSGi コンテナーを管理できます。JMX ポートは、karaf
レルムに接続する JAAS ログイン機能によっても保護されます。
アプリケーションバンドルと JAAS セキュリティー
OSGi コンテナーにデプロイするすべてのアプリケーションバンドルは、コンテナーの JAAS レルムにアクセスできます。アプリケーションバンドルは、名前を使用して既存の JAAS レルムの 1 つを参照します (これは JAAS ログインモジュールのインスタンスに対応します)。
ただし、JAAS レルムは、OSGi コンテナー独自のログイン設定メカニズムを使用して定義されている必要があります。デフォルトでは、Java は単純なファイルベースのログイン設定実装を提供しますが、OSGi コンテナーのコンテキストでこの実装は 使用できません。