Sun Java ロゴ     前へ      目次      索引      次へ     

Sun ロゴ
Sun Java System Message Queue 3 2005Q4 管理ガイド 

第 7 章
セキュリティーの管理

管理者は、ユーザーの認証のためのユーザーリポジトリの設定、アクセス制御の定義、クライアントブローカ間の通信を暗号化する SSL (Secure Socket Layer) 接続サービスの設定、ブローカ起動時に使用するパスワードファイルの設定を行います。

この章では、次の節について説明します。


ユーザーの認証

ユーザーがブローカへの接続を試みると、ブローカは提供された名前とパスワードを調べて、ユーザーを認証します。ブローカは、その名前とパスワードが、それぞれ参照するように設定されているブローカ固有のユーザーリポジトリにある名前とパスワードに一致した場合に、接続を許可します。

管理者は、ユーザー、ユーザーグループ、およびパスワードのリストをユーザーリポジトリに保持しておく責任があります。ブローカインスタンスごとに異なるユーザーリポジトリを使用できます。この節では、リポジトリの作成、設定、および管理の方法を説明します。

リポジトリは次のいずれかのタイプになります。

単層型ファイルユーザーリポジトリを使用する

Message Queue には、単層型ファイルユーザーリポジトリ、コマンド行ツール、および単層型ファイルユーザーリポジトリの設定と管理ができるユーザーマネージャーユーティリティー (imqusermgr) が用意されています。次の節では、単層型ファイルユーザーリポジトリと、そのリポジトリを設定し管理するユーザーマネージャーユーティリティーの使用方法について説明します。

ユーザーリポジトリの作成

単層型ファイルユーザーリポジトリは、インスタンス固有です。起動するブローカインスタンスごとに、passwd という名前のデフォルトのユーザーリポジトリが自動的に作成されます。このユーザーリポジトリは、そのリポジトリが関連付けられているブローカインスタンスの名前によって識別されたディレクトリに書き込まれます (付録 A 「プラットフォームごとの Message Queue データの場所」を参照)。

リポジトリは 2 つのエントリから構成されます。表 7-1 の各行にエントリを示します。

表 7-1 ユーザーリポジトリでの初期エントリ 

ユーザー名

パスワード

グループ

状態

admin

admin

admin

アクティブ

guest

guest

anonymous

アクティブ

これらの初期エントリにより、管理者が介入しなくても、インストール後直ちに Message Queue ブローカを使用できます。

次の節では、単層型ユーザーリポジトリの設定、および管理方法について説明します。

ユーザーマネージャーユーティリティー

Message Queue ユーザーマネージャーユーティリティー (imqusermgr) を使って、単層型ファイルユーザーリポジトリを編集したり設定できます。この節では、ユーザーマネージャユーティリティーについて説明します。後続の節では、imqusermgr サブコマンドを使用して、特定のタスクを実行する方法について説明します。

imqusermgr コマンドの詳細は、第 13 章「コマンド行のリファレンス」を参照してください。

ユーザーマネージャーの使用の先立ち、次の点に留意してください。

サブコマンド

imqusermgr コマンドには、adddeletelistupdate といったサブコマンドがあります。

コマンドオプション

表 7-2imqusermgr コマンドのオプションを一覧表示します。

表 7-2 imqusermgr オプション 

オプション

説明

-a activeState

ユーザーの状態をアクティブにするかどうかを指定します (true/false)。値が true の場合、状態はアクティブです。デフォルト値 は true です。

-f

ユーザーの確認なしで、アクションを実行します。

-h

使用方法に関するヘルプを表示します。コマンド行ではそれ以外のことは実行されません。

-i instanceName

コマンドを適用するブローカインスタンス名を指定します。指定しない場合は、デフォルトのインスタンス名 imqbroker が使用されます。

-p passwd

ユーザーのパスワードを指定します。

-g group

ユーザーグループを指定します。指定できる値は、adminuseranonymous です。

-s

サイレントモードに設定します。

-u userName

ユーザー名を指定します。

-v

バージョン情報を表示します。コマンド行ではそれ以外のことは実行されません。

グループ

ブローカインスタンスのユーザーリポジトリにユーザーエントリを追加する場合、事前に定義された 3 つのグループである adminuseranonymous のいずれかを指定できます。グループが指定されない場合、デフォルトのグループ user が割り当てられます。グループが次のように割り当てられるはずです。

ユーザーが属するグループを変更するには、そのユーザーのエントリを削除してから、そのユーザーの別のエントリを追加し、新しいグループを指定します。

このようなシステムで生成されたグループの名前の変更や削除、および新しいグループの作成は行えません。ただし、そのグループのメンバーがどの操作を実行するかを定義するアクセス規則を指定できます。詳細は、「ユーザーの承認: アクセス制御プロパティーファイル」を参照してください。

ユーザーの状態

ユーザーをリポジトリに追加した場合、デフォルトのユーザーの状態はアクティブです。ユーザーを非アクティブに変更するには、更新コマンドを使用する必要があります。たとえば、次のコマンドでは、ユーザーの JoeD が非アクティブになります。

非アクティブになったユーザーのエントリは、リポジトリに保持されますが、非アクティブのユーザーは、新規接続を開くことはできません。ユーザーが非アクティブのときに、同じ名前を持つ別のユーザーを追加すると、操作に障害が発生します。非アクティブなユーザーのエントリを削除するか、新しいユーザーのユーザー名を変更するか、あるいは新しいユーザーに別のユーザー名を使用する必要があります。このようにして、重複するユーザー名が追加されるのを防ぎます。

ユーザー名とパスワードの形式

ユーザー名とパスワードは、次の規則に従う必要があります。

ユーザーリポジトリの設定と管理

add サブコマンドを使用して、ユーザーをリポジトリに追加します。たとえば、次のコマンドでは、sesame というパスワードを持つ Katharine というユーザーがデフォルトのブローカインスタンスユーザーリポジトリに追加されます。

delete サブコマンドを使用して、ユーザーをリポジトリから削除します。たとえば、次のコマンドでは Bob というユーザーが削除されます。

update サブコマンドを使用して、ユーザーのパスワードまたは状態を変更します。たとえば、次のコマンドでは、Katharine のパスワードが alladin に変更されます。

1 人またはすべてのユーザーに関する情報を一覧表示するには、list コマンドを使用します。次のコマンドでは、isa という名前のユーザーに関する情報が表示されます。

次のコマンドでは、すべてのユーザーに関する情報が表示されます。

デフォルトの管理者パスワードの変更

セキュリティーのために、admin のデフォルトパスワードを自分だけが知っているパスワードに変更する必要があります。次のコマンドは、mybroker ブローカインスタンスのデフォルトの管理者パスワードを admin から grandpoobah に変更します。

ブローカインスタンスの実行中に任意のコマンド行ツールを実行すれば、この変更が反映されていることをすぐに確認できます。たとえば、次のコマンドはパスワードの入力を要求します。

新しいパスワード (grandpoobah) は入力可能であり、古いパスワードでは失敗します。

パスワードを変更したあとは、管理コンソールなどのあらゆる Message Queue 管理ツールを使用するときに、新しいパスワードを使用してください。

ユーザーリポジトリに LDAP サーバーを使用する

ユーザーリポジトリに LDAP サーバーを使用する場合、次の作業を実行します。

インスタンス設定ファイルの編集

ブローカでディレクトリサーバーを使用する場合、ブローカインスタンス設定ファイル config.properties で特定のプロパティーの値を設定します。これらのプロパティーを使用すると、ユーザーがブローカインスタンスへの接続を試みているか、メッセージング操作を実行しようとしている場合に、ブローカインスタンスが LDAP サーバーに対して、ユーザーやグループに関する情報をクエリーできるようになります。

インスタンス設定ファイルは、ブローカインスタンスディレクトリのディレクトリ内にあります。パスは次のような形式です。

オペレーティングシステム別のインスタンスディレクトリの場所については、付録 A 「プラットフォームごとの Message Queue データの場所」を参照してください。

設定ファイルを編集して、LDAP サーバーを使用する
  1. 次のプロパティーを設定して、LDAP ユーザーリポジトリの使用を指定します。
  2. imq.authentication.basic.user_repository=ldap

  3. imq.authentication.type プロパティーを設定して、クライアントからブローカへのパスワードの受け渡しに、base64 (basic) 符号化方式を使用するか、MD5 (digest) 符号化方式を使用するかを決定します。LDAP ディレクトリサーバーをユーザーリポジトリに使用する場合、認証タイプに basic を設定する必要があります。たとえば、次のように指定します。
  4. imq.authentication.type=basic

  5. LDAP へのアクセスを制御するブローカプロパティーを設定する必要もあります。このプロパティーは、ブローカインスタンス設定ファイル内にあります。プロパティーについては、「セキュリティーサービス」で説明し、「セキュリティーのプロパティー」にまとめています。
  6. Message Queue は JNDI API を使用して、LDAP ディレクトリサーバーと対話します。このプロパティーで使用されている構文と用語の詳細については JNDI のドキュメントを参照してください。Message Queue は、Sun JNDI LDAP プロバイダと簡単な認証を使用しています。

    Message Queue は LDAP 認証のフェイルオーバーをサポートします。認証が試みられる LDAP ディレクトリサーバーのリストを指定できます (imq.user.repos.ldap.server プロパティーの詳細を参照)。

    LDAP ユーザーリポジトリに関連したプロパティーの設定方法の例については、ブローカの config.properties ファイルを参照してください。

  7. 必要に応じて、アクセス制御プロパティーファイルにあるユーザーまたはグループ、および規則を編集する必要があります。アクセス制御プロパティーファイルの使用に関する詳細は、「ユーザーの承認: アクセス制御プロパティーファイル」を参照してください。
  8. 接続の認証やグループ検索の間、ブローカに SSL を使用して LDAP ディレクトリとの通信を行わせる場合、LDAP サーバーの SSL をアクティブにし、ブローカ設定ファイルで次のプロパティーを設定します。
    • LDAP サーバーが SSL 通信に使用するポートを指定します。たとえば、次のように指定します。
    •    imq.user_repository.ldap.server=myhost:7878

    • ブローカプロパティーの imq.user_repository.ldap.ssl.enabledtrue に設定します。

      複数の LDAP ディレクトリサーバーを使用している場合は、ldap:// を使用して、追加の各ディレクトリサーバーを指定します。たとえば、次のように指定します。

      imq.user_repository.ldap.server=myHost:7878 ldap://otherHost:7878 ...

      追加の各ディレクトリサーバーはスペースで区切ります。リスト内のすべてのディレクトリサーバーは、LDAP 関連プロパティーに同じ値を使用する必要があります。

管理者のアクセス制御の設定

管理ユーザーを作成するには、アクセス制御プロパティーファイルで、ADMIN 接続を作成できるユーザーとグループを指定します。これらのユーザーとグループは、LDAP ディレクトリで事前に定義されている必要があります。

ADMIN 接続を作成できるユーザーまたはグループは、管理コマンドを発行できます。

管理ユーザーを設定する
  1. アクセス制御ファイルの使用を有効にするには、ブローカプロパティー imq.accesscontrol.enabled を、デフォルト値である true に設定します。
  2. imq.accesscontrol.enabled プロパティーにより、アクセス制御ファイルの使用が有効になります。

  3. アクセス制御ファイル accesscontrol.properties を開きます。このファイルの場所については、付録 A 「プラットフォームごとの Message Queue データの場所」の一覧を参照してください。
  4. このファイルには、次のようなエントリが収められています。

    サービス接続アクセス制御
    ##################################
    connection.NORMAL.allow.user=*
    connection.ADMIN.allow.group=admin

    上記のエントリは一例です。admin グループはファイルベースのユーザーリポジトリに存在しますが、デフォルトでは LDAP ディレクトリに存在しないことに注意してください。LDAP ディレクトリで定義される、Message Queue 管理者権限を付与するグループの名前は変更する必要があります。

  5. Message Queue 管理者権限をユーザーに付与するには、ユーザー名を次のように入力します。
  6. connection.ADMIN.allow.user=userName[[,userName2]...]

  7. Message Queue 管理者権限をグループに付与するには、グループ名を次のように入力します。
  8. connection.ADMIN.allow.group=groupName[[,groupName2]...]


ユーザーの承認: アクセス制御プロパティーファイル

アクセス制御プロパティーファイル (ACL ファイル) には、ユーザーおよびユーザーグループがどの操作を実行できるかを指定する規則が収められています。ACL ファイルを編集して、操作を特定のユーザーやグループに制限します。ブローカインスタンスごとに異なる ACL ファイルを使用できます。

ユーザー情報が単層型ファイルのユーザーリポジトリにある場合でも LDAP ユーザーリポジトリにある場合でも、ACL ファイルが使用されます。ブローカは、クライアントアプリケーションが次の操作のいずれかを実行するときに ACL ファイルをチェックします。

ブローカは ACL ファイルをチェックして、要求を生成したユーザーまたはユーザーが所属するグループに対して、操作の実行を許可するかどうかを決定します。

ACL ファイルを編集する場合、次にブローカがファイルをチェックして認証を検証するまで、新しい設定は有効になりません。ファイルの編集後、ブローカを再起動する必要はありません。

アクセス制御プロパティーファイルの作成

ACL ファイルはインスタンス固有です。ブローカインスタンスを起動する場合は常に、インスタンスディレクトリでデフォルトファイル accesscontrol.properties が作成されます。ファイルのパスは次のような形式です (付録 A 「プラットフォームごとの Message Queue データの場所」を参照)。

ACL ファイルは、Java プロパティーファイルのような形式になっています。ACL ファイルは、ファイルのバージョンを指定すると起動し、次の 3 つのセクションのアクセス制御規則を指定します。

version プロパティーでは、ACL プロパティーファイルのバージョンが定義されるので、このエントリを変更しないでください。

アクセス制御を指定する ACL ファイルの 3 つのセクションについては、アクセス規則の基本構文およびアクセス権の計算方法に続いて、説明します。

アクセス規則の構文

ACL プロパティーファイルでは、アクセス制御は、特定のユーザーやグループが物理的送信先や接続サービスといった保護されたリソースに対してどのアクセスを持っているのかを定義します。アクセス制御は、それぞれ Java プロパティーとして提示されている規則、または規則のセットで表現されます。

これらの規則の基本的な構文は次のとおりです。

表 7-3 に構文規則の各要素を示します。

表 7-3 アクセス規則の構文要素 

要素

説明

resourceType

connectionqueuetopic のいずれか

resourceVariant

resourceType で指定されたタイプのインスタンス。たとえば、myQueue。ワイルドカードの文字 (*) を、すべての接続サービス、またはすべての物理的な送信先を表すのに使用できます。

operation

公式化されているアクセス規則の種類に依存する値です。

access

allowdeny のどちらかです。

principalType

usergroup のどちらかです。詳細は、「グループ」を参照してください。

principals

規則の左側で指定されるアクセス権を保持するユーザーを示します。ここでは、principalTypeuser の場合は個々のユーザーまたはコンマで区切られたユーザーのリストとなり、principalTypegroup の場合は 1 つのグループまたはコンマで区切られたグループのリストとなります。ワイルドカードの文字 (*) を、すべてのユーザーまたはすべてのグループを表すのに使用できます。

ここで、アクセス規則の例をいくつか紹介します。

権限の計算方法

ファイル内に複数のアクセス規則が存在する場合、権限を次のように計算します。

接続サービスのアクセス制御

ACL プロパティーファイルの接続アクセス制御のセクションには、ブローカの接続サービスのアクセス制御規則が含まれます。接続アクセス制御規則の構文は次のとおりです。

resourceVariant には、 NORMALADMIN の 2 つの値が定義されています。これらの定義済みの値は、アクセス権を付与できる唯一のタイプの接続サービスです。

デフォルトの ACL プロパティーファイルは、すべてのユーザーに NORMAL 接続サービスへのアクセス権を付与し、グループ admin のユーザーに ADMIN 接続サービスへのアクセス権を付与します。

ファイルベースのユーザーリポジトリを使用している場合、ユーザーマネージャーユーティリティーによりデフォルトのグループ admin が作成されます。LDAP ユーザーリポジトリを使用している場合、次のいずれかを実行して、デフォルトの ACL プロパティーファイルを使用します。

接続アクセス権限を制限できます。たとえば、次の規則では Bob が NORMAL にアクセスすることは拒否されますが、ほかのユーザーはすべてアクセスが許可されます。

アスタリスク (*) 文字を使用して、すべての認証済みユーザーまたはグループを指定できます。

ACL プロパティーファイルを使用して ADMIN 接続へのアクセスを付与する方法は、次のように、ファイルベースのユーザーリポジトリと LDAP ユーザーリポジトリでは異なります。

物理的な送信先のアクセス制御

アクセス制御プロパティーファイルの送信先アクセス制御セクションには、物理的送信先ベースのアクセス制御規則が含まれます。これらの規則では、誰 (ユーザーまたはグループ) が何 (操作) をどこ (物理的送信先) に行うかが決定されます。これらの規則で統制されるアクセスのタイプには、キューへのメッセージの送信、トピックへのメッセージの発行、キューからのメッセージの受信、トピックへのサブスクライブ、キューでのメッセージの検索が含まれます。

デフォルトでは、あらゆるユーザーまたはグループが、任意の物理的送信先に対してあらゆるタイプのアクセス権を保持できます。さらに詳細な送信先アクセス規則を追加したり、デフォルトの規則を編集したりできます。この節の残りの部分では、自分自身の規則を記述するために理解しておく必要のある物理的送信先アクセス規則の構文について説明します。

送信先規則の構文は次のとおりです。

resourceType.resourceVariant.operation.access.principalType=principals

表 7-4 にこれらの要素の説明を示します。

表 7-4 送信先アクセス制御規則の要素 

コンポーネント

説明

resourceType

queuetopic のいずれかです。

resourceVariant

物理的送信先名、またはすべてのキューやすべてのトピックを表す、すべての物理的送信先 (*) です。

operation

produceconsume、または browse のいずれかです。

access

allowdeny のいずれかです。

principalType

usergroup のいずれかです。

アクセス権は、1 人以上のユーザーまたは 1 つ以上のグループ、あるいはその両方に対して指定できます。

次の例では、さまざまな種類の物理的送信先のアクセス制御規則を示します。

自動作成された物理的送信先のアクセス制御

ACL プロパティーファイルの最後のセクションには、どのユーザーおよびグループに対してブローカが物理的送信先を自動作成するのかを指定するアクセス規則が含まれます。

ユーザーがまだ存在していない物理的送信先でプロデューサまたはコンシューマを作成すると、ブローカの自動作成プロパティーが有効になっている場合、ブローカは送信先を作成します。

デフォルトでは、任意のユーザーやグループは、ブローカに物理的送信先を自動作成させる権限を持っています。この権限は、次の規則で指定されます。

ACL ファイルを編集して、このタイプのアクセスを制限できます。

物理的送信先の自動作成アクセス規則の一般的な構文は、次のとおりです。

resourceType の部分には、queuetopic が表示されます。

たとえば次の規則により、ブローカは Snoopy 以外の全員に対してトピック送信先を自動作成できます。

物理的送信先の自動作成規則の結果は、物理的送信先のアクセス規則の影響と一致している必要があります。たとえば、1) 送信先アクセス規則を変更して、どのユーザーも送信先にメッセージを送信できないようにしてから、2) 送信先の自動作成を有効にすると、ブローカは物理的送信先が存在しない場合、物理的送信先を作成しますが、メッセージの配信は行いません。


SSL ベースのサービスの操作

SSL (Secure Socket Layer) 標準に基づく接続サービスは、クライアントとブローカ間で暗号化されるメッセージを送信します。この節では、SSL ベースの接続サービスの設定方法を説明します。

Message Queue は、SSL (Secure Socket Layer) 規格に基づく次の接続サービスをサポートしています。

これらの接続サービスにより、クライアントとブローカ間で送信されるメッセージが暗号化されます。Message Queue は、自己署名型サーバー証明書または自己署名型証明書に基づく SSL 暗号化をサポートしています。

SSL ベースの接続サービスを使用するには、キーツールユーティリティー (imqkeytool) を使用して、非公開キーと公開キーのペアを生成します。このユーティリティーは、ブローカへの接続を要求しているクライアントに渡される自己署名の証明書に公開キーを埋め込み、クライアントはこの証明書を使用して、接続を暗号化します。

Message Queue の SSL ベースの接続サービスはこれと同様の概念ですが、設定の方法に若干の違いがあります。

この節の後半では、TCP/IP で安全な接続を設定する方法について説明します。

HTTP を使用するユーザー向けの SSL ベースの接続サービス httpsjms では、クライアントとブローカが HTTPS トンネルサーブレットを使用して安全な接続を確立できます。HTTP を使用した安全な接続の確立の詳細は、付録 C 「HTTP/HTTPS のサポート」を参照してください。

TCP/IP を介した安全な接続サービス

次の SSL ベースの接続サービスは、TCP/IP を介した直接的で安全な接続を提供します。

自己署名型証明書の使用の設定

この節では、自己署名型証明書を使用した SSL ベースのサービスの設定方法を説明します。

認証を強力なものにするために、認証局が検証する署名付き証明書を使用できます。まずこの節の手順に従い、次に「署名付き証明書の使用の設定」に進んで、追加手順を実行します。

SSL ベースの接続サービスを設定する
  1. 自己署名型証明書を生成する。
  2. ブローカで ssljmsssladmincluster のいずれかの接続サービスを有効にする。
  3. ブローカを起動する。
  4. クライアントを設定し実行する (ssljms 接続サービスだけに適用)。

ssljms および ssladmin 接続サービスを設定する手順は、手順 4 のクライアントの設定と実行以外は同じです。

各手順については、次で詳しく説明します。

手順 1: 自己署名型証明書の生成

Message Queue の自己署名型証明書による SSL Support は、クライアントが既知の信頼されたサーバーと通信することを前提に、ネットワーク上のデータを保護することを目的としています。

キーツールユーティリティーを実行し、ブローカの自己署名型証明書を生成します。UNIX システムでは、キーストアを作成するアクセス権を取得するためにスーパーユーザー (root) としてキーツールを実行する必要があります。

ssljmsssladmincluster の接続サービスに対して、同じ証明書を使用できます。

コマンドプロンプトで次のとおり入力します。

ユーティリティーがキーストアのパスワードの入力を要求します。

次に、ユーティリティーは証明書の所有者である、ブローカを識別する情報の入力を要求します。指定する情報は、X.500 識別名になります。次の表にプロンプトの一覧とその説明、および各プロンプトの例を示します。値は大文字と小文字を区別し、空白を使用できます。

表 7-5 自己署名型証明書に必要な識別名情報 

プロンプト

説明

氏名

X.500 commonName (CN)。ブローカを実行しているサーバーの完全修飾名を入力します。

myhost.sun.com

組織名

X.500 organizationUnit (OU)。部署または部門の名前を入力します。

purchasing

組織名

X.500 organizationName (ON)。企業または政府機関などの大規模組織の名前です。

My Company, Inc.

市町村名

X.500 localityName (L)。

San Francisco

州名または県名

X.500 stateName (ST)。頭語ではなく、州または県の完全名を入力します。

California

組織の 2 文字国コード

X.500 country (C)。

US

情報を入力し終えたら、キーツールにより確認の画面が表示されます。たとえば、次のように表示されます。

値を再入力する場合は、デフォルトを使用するか no を入力します。現在の値でよければ、先に進み、yes を入力します。確認後、キーツールがキーの組み合わせを生成する間、このツールは停止します。

次に、キーツールから特定のキーの組み合わせをロックするためのパスワードの入力が要求されます (キーパスワード)。このプロンプトに対して Return キーを押し、キーパスワードおよびキーストアパスワードと同じパスワードを使用します。


指定したパスワードは覚えておいてください。ブローカの起動時にこのパスワードを指定し、ブローカがキーストアを開けるようにする必要があります。キーストアパスワードはパスワードファイルに保存できます (「パスワードファイルの使用」を参照)。


imqkeytool コマンドにより、JDK keytool ユーティリティーが実行されて、自己署名型証明書が生成されます。生成された証明書は、付録 A 「プラットフォームごとの Message Queue データの場所」に記載されているとおり、オペレーティングシステムに応じたディレクトリにある Message Queue のキーストアに配置されます。

キーストアは、JDK1.2 keytool ユーティリティーでサポートされているのと同じ形式になっています。

次に示すのは Message Queue キーストアの設定可能なプロパティーです。

たとえば特定の問題を解決するには、キーの組み合わせを生成し直す必要があります。

キーの組み合わせを生成し直す
  1. 付録 A 「プラットフォームごとの Message Queue データの場所」に示すとおり、ブローカのキーストアを削除します。
  2. imqkeytool をもう一度実行し、「手順 1: 自己署名型証明書の生成」の説明に従って、キーの組み合わせを生成します。

手順 2: ブローカでの SSL ベースのサービスを有効にする

ブローカでの SSL ベースのサービスを有効にするには、ssljms (または、ssladmin) を imq.service.activelist プロパティーに追加する必要があります。


imq.service.activelist プロパティーではなく、imq.cluster.transport プロパティーを使用して、SSL ベースの cluster 接続サービスを有効にします。「ブローカ間の安全な接続」を参照してください。


ブローカで SSL ベースのサービスを有効にする
  1. ブローカのインスタンス設定ファイルを開きます。
  2. インスタンス設定ファイルは、その設定ファイルが関連付けられているブローカインスタンスの名前 (instanceName) によって識別されたディレクトリに書き込まれます (付録 A 「プラットフォームごとの Message Queue データの場所」を参照)。

    .../instances/instanceName/props/config.properties

  3. 存在していない場合は、imq.service.activelist プロパティーのエントリを追加し、SSL ベースのサービスをリストに含めます。
  4. デフォルトでは、プロパティーには jms 接続サービスと admin 接続サービスが含まれます。アクティブ化するサービスに応じて、ssljms 接続サービスか ssladmin 接続サービス、またはその両方を追加する必要があります。

    imq.service.activelist=jms,admin,ssljms,ssladmin

手順 3: ブローカを起動する

キーストアパスワードを入力して、ブローカを起動します。パスワードの入力は、次のいずれかの方法で行います。

SSL を使用してブローカまたはクライアントを起動するとき、多くの CPU サイクルが数秒間消費されます。これは、Message Queue が JSSE (Java Secure Socket Extension) を使用して SSL を実装するためです。JSSE は java.security.SecureRandom を使用して、ランダムな数を生成します。このメソッドで初期ランダム番号シードを作成するにはかなりの時間がかかり、そのために CPU の使用率が増加します。シードが作成されたあと、CPU レベルは通常に戻ります。

手順 4: SSL ベースのクライアントを設定および実行する

最後に安全な接続サービスを使用するように、クライアントを設定します。TCP/IP を使用した安全な接続には、2 つのシナリオが考えられます。

後続の節では、これらについて個別に説明します。

ssljms を使用するアプリケーションクライアント

クライアントが必要な JSSE (Java Secure Socket Extension) jar ファイルをクラスパスに保持していることを確認し、このファイルに ssljms 接続サービスを使用するよう指示する必要があります。

  1. クライアントが JSSE と JNDI のサポートを組み込んだ J2SDK1.4 を使用していない場合、クライアントのクラスパスに次の .jar ファイルがあることを確認します。
  2. jsse.jar、jnet.jar、jcert.jar、jndi.jar

  3. クライアントのクラスパスに次の Message Queue .jar ファイルがあることを確認します。
  4. imq.jar、jms.jar

  5. クライアントを起動し、ブローカの ssljms サービスに接続します。これを行う 1 つの方法として、次のようなコマンドを入力します。
  6. java -DimqConnectionType=TLS clientAppName

    imqConnectionType を設定すると、接続に SSL を使用するよう指示が出されます。

    クライアントアプリケーションでの ssljms 接続サービスの使用についての詳細は、『Message Queue Developer's Guide for Java Clients』の管理対象オブジェクトの使用に関する章を参照してください。

ssladmin を使用する管理クライアント (imqcmd)

imqcmd を使用するときに -secure オプションを含めると、安全な管理接続を確立できます。たとえば、次のように指定します。

imqcmd list svc -b hostName:portNumber -u adminName -secure

adminName には Message Queue ユーザーリポジトリの有効なエントリが入り、コマンドからパスワードの入力が要求されます。単層型ファイルリポジトリを使用している場合は、「デフォルトの管理者パスワードの変更」を参照してください。

接続サービスを一覧表示すると、次の出力のように、ssladmin サービスが実行中で、安全な管理接続が問題なく確立されたことが示されます。

Listing all the services on the broker specified by:

Host                 Primary Port

localhost            7676

Service Name     Port Number       Service State

admin            33984 (dynamic)   RUNNING

httpjms          -                 UNKNOWN

httpsjms         -                 UNKNOWN

jms              33983 (dynamic)   RUNNING

ssladmin         35988 (dynamic)   RUNNING

ssljms           dynamic           UNKNOWN

Successfully listed services.

署名付き証明書の使用の設定

署名付き証明書は、自己署名型証明書よりも強力なサーバー認証をもたらします。署名付き証明書を実装するには、キーストアに署名付き証明書をインストールし、Message Queue クライアントが imqbrokerd との SSL 接続を確立するときに、署名付き証明書を要求するように設定します。

署名付き証明書はクライアントとブローカ間でのみ実装可能で、クラスタ内の複数のブローカ間に実装できません。

次の手順では、「自己署名型証明書の使用の設定」に文書化した手順を実行しているものと仮定しています。手順に従う際に、J2SE キーツール証明書と X.509 証明書に関する情報を http://java.sun.com で確認しておくと役に立つ場合があります。

手順 1: 署名付き証明書の取得とインストール

署名付き証明書を取得する
  1. J2SE キーツールを使用して、前節で作成した自己署名型証明書の CSR (Certificate Signing Request) を生成します。
  2. 次に例を示します。

    keytool -certreq -keyalg RSA -alias imq -file certreq.csr
            -keystore /etc/imq/keystore -storepass myStorePassword

    CSR は次にファイル certreq.csr に証明書をカプセル化します。

  3. 次のいずれかの方法で、署名付き証明書を作成するか要求します。
    • Thawte や Verisign などの非常に著名な認証局 (CA) から、証明書に署名してもらいます。このプロセスの詳細は、CA のマニュアルを参照してください。
    • SSL 署名ソフトウェアパッケージを使用して、証明書に自己署名を行います。
    • 最終的な署名付き証明書は、ASCII 文字列が連続したものになります。CA から署名付き証明書を受け取る場合、電子メールの添付またはテキスト形式のメッセージとして到着します。

  4. 署名付き証明書を取得した場合、ファイルに保存します。
  5. 次の手順では、ブローカの証明書に broker.cer という名前が使用されています。

署名付き証明書をインストールする
  1. $JAVA_HOME/lib/security/cacerts で、次のコマンドを使用して、J2SE がデフォルトで使用中の CA をサポートしているかどうかを確認します。
  2. keytool -v -list -keystore $JAVA_HOME/lib/security/cacerts

    このコマンドは、システムキーストアの root CA を一覧表示します。

    使用中の CA がリスト内に見つかったら、次の手順は省略してください。

  3. 使用中の CA が J2SE でサポートされていない場合、認証局の root 証明書を imqbrokerd キーストアにインポートします。
  4. 次に例を示します。

    keytool -import -alias ca -file ca.cer -noprompt -trustcacerts
            -keystore /etc/imq/keystore -storepass myStorePassword

    ca.cer は、CA から入手した CA root 証明書です。

    CA テスト証明書を使用している場合、Test CA Root 証明書をインポートする必要があるかもしれません。CA には、Test CA Root のコピーの入手方法に関する手順が示されているはずです。

  5. 署名付き証明書をキーストアにインポートし、オリジナルの自己署名型証明書と置き換えます。
  6. たとえば、次のように指定します。

    keytool -import -alias imq -file broker.cer -noprompt -trustcacerts
            -keystore /etc/imq/keystore -storepass myStorePassword

    broker.cer は、CA から受け取った署名付き証明書を含むファイルです。

imqbrokerd キーストアに、SSL 接続に使用できる署名付き証明書が格納されました。

手順 2: 署名付き証明書を要求するクライアントランタイムの設定

Java クライアントランタイムを設定する

デフォルトでは、Message Queue クライアントランタイムは imqbrokerd を信頼し、提示されるすべての証明書を受け付けます。次に署名付き証明書を要求するクライアントランタイムを設定し、クライアントが証明書に署名した CA を確実に信頼する必要があります。

  1. imqbrokerd から有効な署名付き証明書を要求するようにクライアントを設定するには、クライアントの ConnectionFactory オブジェクトに対して imqSSLIsHostTrusted 属性を false に設定します。
  2. 「手順 4: SSL ベースのクライアントを設定および実行する」の説明に従って、imqbrokrd との SSL 接続の確立を試みます。
  3. broker の証明書に著名な CA が署名している場合、接続は成功すると見られ、次の手順は省略してもかまいません。接続が証明書の有効性検証エラーにより失敗した場合、次の手順を実行します。

  4. 次の節の説明に従って、クライアントのトラストストアに署名 CA の root 証明書をインストールします。

トラストストアへのクライアントの設定方法は 3 通りあります。

次の節では、上記のオプションを使用した Verisign Test Root CA のインストール方法の例を説明します。root CA はファイル testrootca.cer 内にあります。この例では、J2SE が /usr/j2se にインストールされていると仮定しています。

デフォルトシステム cacerts ファイルへのインストール

この例では root CA をファイル $JAVA_HOME/usr/jre/lib/security/cacerts にインストールしています。

クライアントはデフォルトでこのキーストアを検索するため、その他のクライアント設定は不要です。

jssecacerts へのインストール

この例では root CA をファイル $JAVA_HOME/usr/jre/lib/security/jssecacerts にインストールしています。

クライアントはデフォルトでこのキーストアを検索するため、その他のクライアント設定は不要です。

その他のファイルへのインストール

この例では、root CA をファイル /home/smith/.keystore にインストールしています。

クライアントはデフォルトでこのキーストアを検索しないため、トラストストアの場所をクライアントに知らせる必要があります。この場合、クライアントの実行後に Java システムプロパティー javax.net.ssl.trustStore を設定します。たとえば、次のように指定します。


パスワードファイルの使用

コマンドにはパスワードを必要とするものがいくつかあります。表 7-6 では、最初の列にパスワードを必要とするコマンド、2 番目の列にパスワードが必要な理由を一覧表示しています。

表 7-6 パスワードを使用するコマンド

コマンド

目的

パスワードの目的

imqbrokerd

ブローカを起動する

JDBC ベースの持続データストア、SSL 証明書キーストア、または LDAP ユーザーリポジトリにアクセスします

imqcmd

ブローカを管理する

コマンドの使用が許可された管理ユーザーを認証します

imqdbmgr

JDBC ベースのデータストアを管理する

データストアにアクセスします

パスワードファイルでこれらのパスワードを指定し、-passfile オプションを使用してファイル名を指定します。次に示すのは、-passfile オプションの形式です。

セキュリティー上の問題

プロンプトに応じて、パスワードをインタラクティブに指定するのは、ほかのユーザーにモニタリングが表示されていなければ、もっとも安全なパスワード指定の方法です。またコマンド行でパスワードファイルも指定できます。ただし、コマンドをインタラクティブではない方法で使用する場合、パスワードファイルを使用する必要があります。

パスワードファイルは暗号化されず、このため不正なアクセスから保護するためにパスファイルにアクセス権を設定する必要があります。ファイルを表示できるユーザーを制限するが、ブローカを起動するユーザーに読み取りアクセスを許可するようにアクセス権を設定します。

パスワードファイルの内容

パスワードファイルは、一連のプロパティーと値を収めた簡単なテキストファイルです。それぞれの値はコマンドで使用されるパスワードです。

パスワードファイルには、表 7-7 に示すパスワードを含めることができます。

表 7-7 パスワードファイル内のパスワード

パスワード

影響を受けるコマンド

説明

imq.imqcmd.password

imqcmd

imqcmd コマンド行の管理者パスワードを指定します。パスワードはコマンドごとに認証されます。

imq.keystore.password

imqbrokerd

SSL ベースのサービスにキーストアパスワードを指定します。

imq.persist.jdbc.password

imqbrokerd

imdbmgr

必要に応じて、データベース接続を開くときに使用するパスワードを指定します。

imq.user_repository.ldap.password

imqbrokerd

設定された LDAP ユーザーリポジトリにバインドするためにブローカに割り当てられた、識別名に関連するパスワードを指定します。

サンプルパスワードファイルは、Message Queue 製品に組み込まれています。サンプルファイルの場所については、付録 A 「プラットフォームごとの Message Queue データの場所」を参照してください。


監査ログの作成

Message Queue は Enterprise Edition でのみ監査ロギングをサポートします。監査ロギングを有効にすると、Message Queue は次のタイプのイベントにレコードを生成します。

Message Queue ブローカログファイルにレコードの監査ロギングを作成するには、imq.audit.enabled ブローカプロパティーを true に設定します。ログ内のすべての監査レコードには、キーワード AUDIT が含まれています。



前へ      目次      索引      次へ     


Part No: 819-3560.   Copyright 2005 Sun Microsystems, Inc. All rights reserved.