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

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

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

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

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


ユーザーの認証

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

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

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

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

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

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

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

表 7-1 に示すように、リポジトリは 2 つのエントリ (行) から構成されます。

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

ユーザー名

パスワード

グループ

状態

admin

admin

admin

アクティブ

guest

guest

anonymous

アクティブ

これらの初期エントリにより、管理者が介入しなくても、インストール後直ちに Message Queue ブローカを使用できます。Message Queue ブローカを使用するために、ユーザーやパスワードの初期設定は必要ありません。

たとえばテストの目的で、初期設定された guest ユーザーエントリを使って、クライアントはデフォルトのユーザー名とパスワード guest でブローカインスタンスに接続できます。

初期設定された admin ユーザーエントリでは、デフォルトのユーザー名とパスワード admin で、imqcmd コマンドを使用してブローカを管理できます。この初期エントリを更新して、パスワードを変更する必要があります (「デフォルトの管理者パスワードの変更」を参照)。

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

ユーザーマネージャユーティリティ (imqusermgr)

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

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

imqusermgr の使用の先立ち、次の点に留意してください。

サブコマンド

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

add サブコマンド     add サブコマンドは、ユーザーとそのパスワードを指定した、またはデフォルトのブローカインスタンスリポジトリに追加し、オプションでユーザーグループを指定します。このサブコマンドの構文は次のようになります。

delete サブコマンド     delete サブコマンドは、指定したユーザーを、指定した、またはデフォルトのブローカインスタンスリポジトリから削除します。このサブコマンドの構文は次のようになります。

list サブコマンド     list サブコマンドは、指定した、またはデフォルトのブローカインスタンスリポジトリの指定したユーザーまたはすべてのユーザーに関する情報を表示します。このサブコマンドの構文は次のようになります。

update サブコマンド     update サブコマンドは、指定した、またはデフォルトのブローカインスタンスリポジトリの指定ユーザーのパスワードまたは状態、もしくは両方を更新します。このサブコマンドの構文は次のようになります。

コマンドオプション

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

表 7-2 imqusermgr オプション 

オプション

説明

-a active_state

ユーザーの状態をアクティブにするかどうかを指定します (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 のデフォルトパスワードを自分だけが知っているパスワードに変更する必要があります。この変更を行うには、imqusermgr ツールを使用します。

次のコマンドは、mybroker ブローカインスタンスのデフォルトの管理者パスワードを admin から grandpoobah に変更します。

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

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

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

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

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

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

ブローカでディレクトリサーバーを使用する場合、ブローカインスタンス設定ファイル config.properties で特定のプロパティの値を設定します。これらのプロパティを使用すると、ブローカインスタンスが LDAP サーバーに対してユーザーおよびグループに関する情報をクエリーできるようになります。ブローカは 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 関連のプロパティです。

これらのプロパティの詳細は、「セキュリティマネージャのプロパティ」を参照してください。

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

管理ユーザーを作成するには、アクセス制御プロパティファイルで、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 ファイルを使用できます。

ブローカは、クライアントアプリケーションが次の操作のいずれかを実行するときに ACL ファイルをチェックします。

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

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

ユーザー情報が単層型ファイルのユーザーリポジトリにある場合でも (「単層型ファイルユーザーリポジトリを使用する」を参照) LDAP ユーザーリポジトリにある場合でも (「ユーザーリポジトリに LDAP サーバーを使用する」を参照)、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 コネクションサービスへのアクセス権を付与します。

ファイルベースのユーザーリポジトリを使用している場合、imqusermgr によりデフォルトのグループ 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 は、クライアントが既知の信頼されたサーバーと通信することを前提に、ネットワーク上のデータを保護することを目的としています。

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

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

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

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

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


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


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:port -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. 次の節の説明に従って、クライアントの truststore に署名 CA の root 証明書をインストールします。

truststore へのクライアントの設定方法は 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 にインストールしています。

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


passfile の使用

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

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

コマンド

目的

パスワードの目的

imqbrokerd

ブローカを起動

プラグイン持続データストア、SSL 証明書キーストア、または LDAP ユーザーリポジトリにアクセスします

imqcmd

ブローカを管理

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

imqdbmgr

プラグインデータストアを管理

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

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

セキュリティ上の問題

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

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

パスファイルの内容

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

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

表 7-7 passfile のパスワード 

パスワード

影響を受けるコマンド

説明

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 が含まれています。

imq.audit.enabled プロパティの詳細は、「セキュリティマネージャのプロパティ」を参照してください。



前へ      目次      索引      次へ     


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