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


この章では、Karaf を初めて起動する前のセキュリティー設定に関する基本的な手順を説明します。デフォルトでは、Karaf は安全ですが、Kafka のサービスにはリモートアクセスできません。この章では、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 コマンドコンソール、および FuseManagement コンソールを介したアクセスを規制します。ユーザーにロールを割り当てる場合に、標準のロールのセットから選択できます。これにより、表3.1「アクセス制御の標準的なロール」 で説明されているアクセスレベルが提供されます。

表3.1 アクセス制御の標準的なロール
ロール説明

viewer

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

manager

アプリケーションのデプロイや実行を行う通常のユーザーに、適切なレベルで読み取り/書き込みアクセスを許可します。ただし、機密性の高いコンテナー設定オプションへのアクセスをブロックします。

admin

コンテナーへのアクセスを無制限に許可します。

ssh

SSH ポートを介したリモートコンソールアクセスの許可を付与します。

ロールベースのアクセス制御の詳細は、ロールベースのアクセス制御 を参照してください。

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

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

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

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

次の両方の条件が当てはまる場合はいつでも、リモートコンソールポートにアクセスできます。

  • 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 サーバーのセキュア化 を参照してください。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.