Menu Close

第3章 基本的なセキュリティー

本章では、Karaf を初めて開始する前にセキュリティーを設定する基本的な手順を説明します。デフォルトでは Karaf はセキュアですが、そのサービスにはリモートアクセスできません。本章では、Karaf によって公開されるポートへのセキュアなアクセスを有効にする方法を説明します。

3.1. 基本的なセキュリティーの設定

3.1.1. 概要

Apache Karaf ランタイムは、公開されているすべてのポートにユーザー認証が必要であり、最初にユーザーが定義されていないため、デフォルトでネットワーク攻撃から保護されています。つまり、Apache Karaf ランタイムはデフォルトではリモートアクセスできません。

ランタイムにリモートアクセスする場合は、ここで説明するように、最初にセキュリティー設定をカスタマイズする必要があります。

3.1.2. コンテナーの起動前

Karaf コンテナーへのリモートアクセスを有効にする場合は、コンテナーを起動する前にセキュアな JAAS ユーザーを作成する必要があります。

3.1.3. セキュアな JAAS ユーザーの作成

デフォルトでは、コンテナーに対して JAAS ユーザーが定義されていません。これにより、リモートアクセスは実質的に無効になります (ログインはできません)。

セキュアな JAAS ユーザーを作成するには、InstallDir/etc/users.properties ファイルを編集し、以下のように新規ユーザーフィールドを追加します。

Username=Password,admin

Username および Password は、新しいユーザー認証情報です。admin ロールは、このユーザーに、コンテナーのすべての管理機能にアクセスするための権限を付与します。

ゼロで始まる数値のユーザー名を定義しないでください。このようなユーザー名は常にログインの試行に失敗します。これは、コンソールが使用する Karaf シェルは、入力が数値である場合に先頭のゼロを削除するためです。以下は例になります。

karaf@root> echo 0123
123
karaf@root> echo 00.123
0.123
karaf@root>
警告

強力なパスワードでカスタムユーザーのクレデンシャルを定義することを強くお勧めします。

3.1.4. ロールベースのアクセス制御

Karaf コンテナーはロールベースアクセス制御をサポートします。このアクセス制御は、JMX プロトコル、Karaf コマンドコンソール、および Fuse Management コンソールを介したアクセスを規制します。ユーザーにロールを割り当てるときは、表3.1「アクセス制御のための標準ロール」 で説明されているアクセスレベルを提供する標準ロールのセットから選択できます。

表3.1 アクセス制御のための標準ロール

ロール説明

ビューアー

コンテナーへの読み取り専用アクセスを付与します。

manager

アプリケーションをデプロイおよび実行する通常のユーザーに、適切なレベルで読み書きアクセスを付与します。ただし、機密性の高いコンテナー設定へのアクセスはブロックされます。

admin

コンテナーへの無制限のアクセスを付与します。

ssh

SSH ポート経由でリモートコンソールのアクセス権限を付与します。

ロールベースのアクセス制御の詳細は、「Role-Based Access Control」を参照してください。

3.1.5. Apache Karaf コンテナーによって公開されるポート

コンテナーによって以下のポートが公開されます。

  • コンソールポート - Apache Karaf シェルコマンドを介してコンテナーインスタンスのリモート制御を有効にします。このポートはデフォルトで有効になっており、JAAS認証とSSHの両方で保護されます。
  • JMX ポート  - JMX プロトコル経由でコンテナーの管理を有効にします。このポートはデフォルトで有効になり、JAAS 認証によってセキュア化されます。
  • Web コンソールポート - Web コンソールサーブレットをホストできる組み込み Undertow コンテナーへのアクセスを提供します。デフォルトでは、Fuse Console は Undertow コンテナーにインストールされます。

3.1.6. リモートコンソールポートの有効化

以下の条件が両方とも true であれば、リモートコンソールポートにアクセスできます。

  • JAAS が、少なくとも 1 セットのログインクレデンシャルで設定されている。
  • Karaf ランタイムがクライアントモードで起動されていない (クライアントモードはリモートコンソールポートを完全に無効にするため)。

たとえば、コンテナーが実行されているマシンからリモートコンソールポートにログインするには、以下のコマンドを入力します。

./client -u Username -p Password

Username および Password は、ssh ロールを持つ JAAS ユーザーの認証情報です。リモートポート経由で Karaf コンソールにアクセスする場合、権限は etc/users.properties ファイルでユーザーに割り当てられたロールによって異なります。コンソールコマンドの完全なセットにアクセスする場合は、ユーザーアカウントに admin ロールが必要です。

3.1.7. リモートコンソールポートでのセキュリティーの強化

以下の手段を使用して、リモートコンソールポートのセキュリティーを強化できます。

  • JAAS ユーザークレデンシャルに強力なパスワードが設定されているようにします。
  • X.509 証明書をカスタマイズします(Java キーストアファイル InstallDir/etc/host.key をカスタムキーペアに置き換えます)。

3.1.8. JMX ポートの有効化

JMX ポートはデフォルトで有効になっており、JAAS 認証によってセキュア化されます。JMX ポートにアクセスするには、少なくとも 1 セットのログインクレデンシャルセットで JAAS を設定しておく必要があります。JMX ポートに接続するには、JMX クライアント(jconsole など を開き、以下の JMX URI に接続します。

service:jmx:rmi:///jndi/rmi://localhost:1099/karaf-root

また、接続するには、有効な JAAS クレデンシャルを JMX クライアントに提供する必要もあります。

注記

通常、JMX URI の末尾の形式は /karaf-ContainerName です。コンテナー名を root から他の名前に変更するには、JMX URI を適宜変更する必要があります。

3.1.9. Fuse Console ポートでのセキュリティーの強化

Fuse Console はすでに JAAS 認証によってセキュア化されています。SSL セキュリティーを追加するには、「Undertow HTTP サーバーのセキュア化」を参照してください