第1章 セキュリティーアーキテクチャー

概要

OSGi コンテナーでは、さまざまなセキュリティー機能をサポートするアプリケーションをデプロイできます。現在、Java 認証および認可サービス (JAAS) のみが、共通するコンテナー全体のインフラストラクチャーに基づいています。その他のセキュリティー機能は、コンテナーにデプロイされた個々の製品およびコンポーネントによって個別に提供されます。

1.1. OSGi コンテナーセキュリティー

概要

図1.1「OSGi コンテナーセキュリティーアーキテクチャー」 は、コンテナー全体で使用され、コンテナーにデプロイされているすべてのバンドルにアクセスできるセキュリティーインフラストラクチャーの概要を示しています。この一般的なセキュリティーインフラストラクチャーは、現在、JAAS レルム (またはログインモジュール) をすべてのアプリケーションバンドルで利用できるようにするためのメカニズムで設定されています。

図1.1 OSGi コンテナーセキュリティーアーキテクチャー

アーキテクチャー 01

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 コンテナーのコンテキストでこの実装は 使用できません