ユーザーがブローカへの接続を試みると、ブローカは提供された名前とパスワードを調べて、ユーザーを認証します。ブローカは、その名前とパスワードが、それぞれ参照するように設定されているブローカ固有のユーザーリポジトリにある名前とパスワードに一致した場合に、接続を許可します。
管理者は、ユーザー、ユーザーグループ、およびパスワードのリストをユーザーリポジトリに保持しておく責任があります。ブローカインスタンスごとに異なるユーザーリポジトリを使用できます。この節では、リポジトリの作成、設定、および管理の方法を説明します。
リポジトリは次のいずれかのタイプになります。
Message QueueTM に付属している単層型ファイルリポジトリ
このタイプのユーザーリポジトリは、非常に簡単に扱えます。ユーザーマネージャーユーティリティー (imqusermgr) を使用してリポジトリを設定および管理します。認証を有効にするには、ユーザーリポジトリにユーザー名、パスワード、およびユーザーグループの名前を設定します。
ユーザーリポジトリの設定と管理の詳細については、「単層型ファイルユーザーリポジトリの使用」を参照してください。
LDAP サーバー
このリポジトリは、LDAP v2 または v3 プロトコルを使用する既存または新規の LDAP ディレクトリサーバーです。単層型ファイルリポジトリほど使用方法は簡単ではありませんが、よりスケーラブルなため、本稼動環境に適しています。
LDAP ユーザーリポジトリを使用している場合、LDAP ベンダーから提供されているツールを使用して、ユーザーリポジトリを設定、管理します。詳細は、「ユーザーリポジトリでの LDAP サーバーの使用」を参照してください。
Message Queue には、単層型ファイルユーザーリポジトリ、コマンド行ツール、および単層型ファイルユーザーリポジトリの設定と管理ができるユーザーマネージャーユーティリティー (imqusermgr) が用意されています。次の節では、単層型ファイルユーザーリポジトリと、そのリポジトリを設定し管理するユーザーマネージャーユーティリティーの使用方法について説明します。
単層型ファイルユーザーリポジトリは、インスタンス固有です。起動するブローカインスタンスごとに、passwd という名前のデフォルトのユーザーリポジトリが自動的に作成されます。このユーザーリポジトリは、そのリポジトリが関連付けられているブローカインスタンスの名前によって識別されたディレクトリに置かれます (付録 A 「プラットフォームごとの Message QueueTM データの場所」を参照)。
…/instances/instanceName/etc/passwd
リポジトリは 2 つのエントリから構成されます。表 7–1 の各行にエントリを示します。
表 7–1 ユーザーリポジトリでの初期エントリ
ユーザー名 |
パスワード |
グループ |
状態 |
---|---|---|---|
admin |
admin |
admin |
アクティブ |
guest |
guest |
anonymous |
アクティブ |
これらの初期エントリにより、管理者が介入しなくても、インストール後直ちに Message Queue ブローカを使用できます。
初期設定された guest ユーザーエントリを使って、クライアントはデフォルトの guest ユーザー名とパスワードでブローカインスタンスに接続できます。
初期設定された admin ユーザーエントリでは、デフォルトの admin ユーザー名とパスワードで、imqcmd コマンドを使用してブローカを管理できます。この初期エントリを更新して、パスワードを変更する必要があります (「デフォルトの管理者パスワードの変更」を参照)。
次の節では、単層型ユーザーリポジトリの設定、および管理方法について説明します。
Message Queue ユーザーマネージャーユーティリティー (imqusermgr) を使って、単層型ファイルユーザーリポジトリを編集したり設定したりできます。この節では、ユーザーマネージャーユーティリティーについて説明します。後続の節では、imqusermgr サブコマンドを使用して、特定のタスクを実行する方法について説明します。
imqusermgr コマンドの詳細は、第 13 章「コマンド行のリファレンス」を参照してください。
ユーザーマネージャーの使用に先立ち、次の点に留意してください。
ブローカ固有のユーザーリポジトリが存在していない場合は、それを作成するために該当するブローカインスタンスを起動する必要があります。
imqusermgr コマンドは、ブローカがインストールされているホスト上で実行する必要があります。
リポジトリへの書き込みに関する適切なアクセス権を持つ必要があります。たとえば、Solaris と Linux の場合、root ユーザーまたはブローカインスタンスを最初に作成したユーザーになる必要があります。
次の節の例は、デフォルトのブローカインスタンスを前提としています。
imqusermgr コマンドには、add、delete、list、update といったサブコマンドがあります。
add サブコマンドは、ユーザーとそのパスワードを指定した、またはデフォルトのブローカインスタンスリポジトリに追加し、オプションでユーザーグループを指定します。このサブコマンドの構文は次のようになります。
add [-i instanceName] -u userName -p passwd [-g group] [ -s]
delete サブコマンドは、指定したユーザーを、指定した、またはデフォルトのブローカインスタンスリポジトリから削除します。このサブコマンドの構文は次のようになります。
delete [-i instanceName] -u userName [ -s] [-f]
list サブコマンドは、指定した、またはデフォルトのブローカインスタンスリポジトリの指定したユーザーまたはすべてのユーザーに関する情報を表示します。このサブコマンドの構文は次のようになります。
list [ -i instanceName] [-u userName]
update サブコマンドは、指定した、またはデフォルトのブローカインスタンスリポジトリの指定ユーザーのパスワードまたは状態、もしくは両方を更新します。このサブコマンドの構文は次のようになります。
update [ -i instanceName] -u userName -p passwd [ -a state] [-s] [ -f]
update [-i instanceName] -u userName -a state [-p passwd] [-s] [-f]
表 7–2 に imqusermgr コマンドのオプションを一覧表示します。
表 7–2 imqusermgr オプション
オプション |
説明 |
---|---|
-a activeState |
ユーザーの状態をアクティブにするかどうかを指定します (true/false)。値が true の場合、状態はアクティブです。デフォルト値 は true です。 |
-f |
ユーザーの確認なしで、アクションを実行します。 |
-h |
使用方法に関するヘルプを表示します。コマンド行ではそれ以外のことは実行されません。 |
-i instanceName |
コマンドを適用するブローカインスタンス名を指定します。指定しない場合は、デフォルトのインスタンス名 imqbroker が使用されます。 |
-p passwd |
ユーザーのパスワードを指定します。 |
-g group |
ユーザーグループを指定します。指定できる値は、admin、user、anonymous です。 |
-s |
サイレントモードに設定します。 |
-u userName |
ユーザー名を指定します。 |
-v |
バージョン情報を表示します。コマンド行ではそれ以外のことは実行されません。 |
ブローカインスタンスのユーザーリポジトリにユーザーエントリを追加する場合、事前に定義された 3 つのグループである admin、user、anonymous のいずれかを指定できます。グループが指定されない場合、デフォルトのグループ user が割り当てられます。グループが次のように割り当てられるはずです。
admin グループ: ブローカの管理者用です。このグループに割り当てられたユーザーは、デフォルトでブローカを設定および管理できるようになっています。管理者は、複数のユーザーを admin グループに割り当てることができます。
user グループ: 管理ユーザーでない通常の Message Queue クライアントユーザー用です。ほとんどのクライアントユーザーは user グループに所属します。デフォルトでは、このグループのユーザーはすべてのトピックとキューへのメッセージを生成し、すべてのトピックとキューからのメッセージを消費し、すべてのキューのメッセージを検索することができます。
anonymous グループ: ブローカに認識されているユーザー名を使用しない Message Queue クライアント用です。クライアントアプリケーションが実際に使用するユーザー名を認識していないなどの理由がある場合に使います。このアカウントは、多くの FTP サーバーにある匿名アカウントに似ています。一度に anonymous グループに割り当てられるのは、1 人のユーザーだけです。このグループのアクセス権限を user グループよりも制限したり、配置時にグループからユーザーを削除する必要があります。
ユーザーが属するグループを変更するには、そのユーザーのエントリを削除してから、そのユーザーの別のエントリを追加し、新しいグループを指定します。
このようなシステムで生成されたグループの名前の変更や削除、および新しいグループの作成は行えません。ただし、そのグループのメンバーがどの操作を実行するかを定義するアクセス規則を指定できます。詳細は、「ユーザー承認: アクセス制御プロパティーファイル」を参照してください。
ユーザーをリポジトリに追加した場合、デフォルトのユーザーの状態はアクティブです。ユーザーを非アクティブに変更するには、更新コマンドを使用する必要があります。たとえば、次のコマンドでは、ユーザーの JoeD が非アクティブになります。
imqusermgr update -u JoeD -a false
非アクティブになったユーザーのエントリは、リポジトリに保持されますが、非アクティブのユーザーは、新規接続を開くことはできません。ユーザーが非アクティブのときに、同じ名前を持つ別のユーザーを追加すると、操作に障害が発生します。非アクティブなユーザーのエントリを削除するか、新しいユーザーのユーザー名を変更するか、あるいは新しいユーザーに別のユーザー名を使用する必要があります。このようにして、重複するユーザー名が追加されるのを防ぎます。
ユーザー名にアスタリスク (*)、コンマ (,)、コロン (:)、改行やキャリッジリターン文字を使用することはできません。
ユーザー名やパスワードは、1 文字以上であることが必要です。
ユーザー名やパスワードに空白を入れる場合は、ユーザー名やパスワード全体を引用符で囲みます。
コマンド行で入力可能な最大文字数で、コマンドシェルにより制限されない限り、パスワードやユーザー名の長さに制限はありません。
add サブコマンドを使用して、ユーザーをリポジトリに追加します。たとえば、次のコマンドでは、sesame というパスワードを持つ Katharine というユーザーがデフォルトのブローカインスタンスユーザーリポジトリに追加されます。
imqusermgr add -u Katharine -p sesame -g user
delete サブコマンドを使用して、ユーザーをリポジトリから削除します。たとえば、次のコマンドでは Bob というユーザーが削除されます。
imqusermgr delete -u Bob
update サブコマンドを使用して、ユーザーのパスワードまたは状態を変更します。たとえば、次のコマンドでは、Katharine のパスワードが aladdin に変更されます。
imqusermgr update -u Katharine -p aladdin
1 人またはすべてのユーザーに関する情報を一覧表示するには、list コマンドを使用します。次のコマンドでは、isa という名前のユーザーに関する情報が表示されます。
imqusermgr list -u isa
% imqusermgr list -u isa User repository for broker instance: imqbroker ---------------------------------- User Name Group Active State ---------------------------------- isa admin true |
次のコマンドでは、すべてのユーザーに関する情報が表示されます。
imqusermgr list
% imqusermgr list User repository for broker instance: imqbroker -------------------------------------- User Name Group Active State -------------------------------------- admin admin true guest anonymous true isa admin true testuser1 user true testuser2 user true testuser3 user true testuser4 user false testuser5 user false |
セキュリティーのために、admin のデフォルトパスワードを自分だけが知っているパスワードに変更する必要があります。次のコマンドは、mybroker ブローカインスタンスのデフォルトの管理者パスワードを admin から grandpoobah に変更します。
imqusermgr update mybroker -u admin -p grandpoobah
ブローカインスタンスの実行中に任意のコマンド行ツールを実行すれば、この変更が反映されていることをすぐに確認できます。たとえば、次のコマンドはパスワードの入力が要求されます。
imqcmd list svc mybroker -u admin
新しいパスワード (grandpoobah) は入力可能であり、古いパスワードでは失敗します。
パスワードを変更したあとは、管理コンソールなどのあらゆる Message Queue 管理ツールを使用するときに、新しいパスワードを使用してください。
ユーザーリポジトリに LDAP サーバーを使用する場合、次の作業を実行します。
インスタンス設定ファイルの編集
管理者のアクセス制御の設定
ブローカでディレクトリサーバーを使用する場合、ブローカインスタンス設定ファイル config.properties で特定のプロパティーの値を設定します。これらのプロパティーを使用すると、ユーザーがブローカインスタンスへの接続を試みているか、メッセージング操作を実行しようとしている場合に、ブローカインスタンスが LDAP サーバーに対して、ユーザーやグループに関する情報をクエリーできるようになります。
インスタンス設定ファイルは、ブローカインスタンスディレクトリのディレクトリ内にあります。パスは次のような形式です。
…/instances/instanceName /props/config.properties
オペレーティングシステム別のインスタンスディレクトリの場所については、付録 A 「プラットフォームごとの Message QueueTM データの場所」を参照してください。
次のプロパティーを設定して、LDAP ユーザーリポジトリの使用を指定します。
imq.authentication.basic.user_repository=ldap |
imq.authentication.type プロパティーを設定して、クライアントからブローカへのパスワードの受け渡しに、base64 (basic) 符号化方式を使用するか、MD5 (digest) 符号化方式を使用するかを決定します。LDAP ディレクトリサーバーをユーザーリポジトリに使用する場合、認証タイプに basic を設定する必要があります。たとえば、次のように指定します。
imq.authentication.type=basic |
LDAP へのアクセスを制御するブローカプロパティーを設定する必要もあります。このプロパティーは、ブローカインスタンス設定ファイル内にあります。プロパティーについては、「セキュリティーサービス」で説明し、「セキュリティーのプロパティー」にまとめています。
Message Queue は JNDI API を使用して、LDAP ディレクトリサーバーと対話します。このプロパティーで使用されている構文と用語の詳細については JNDI のドキュメントを参照してください。Message Queue は、Sun JNDI LDAP プロバイダと簡単な認証を使用しています。
Message Queue は LDAP 認証のフェイルオーバーをサポートします。認証が試みられる LDAP ディレクトリサーバーのリストを指定できます (imq.user.repos.ldap.server プロパティーの詳細を参照)。
LDAP ユーザーリポジトリに関連したプロパティーの設定方法の例については、ブローカの config.properties ファイルを参照してください。
必要に応じて、アクセス制御プロパティーファイルにあるユーザーまたはグループ、および規則を編集する必要があります。アクセス制御プロパティーファイルの使用に関する詳細は、「ユーザー承認: アクセス制御プロパティーファイル」を参照してください。
接続の認証やグループ検索の間、ブローカに SSL を使用して LDAP ディレクトリとの通信を行わせる場合、LDAP サーバーの SSL をアクティブにし、ブローカ設定ファイルで次のプロパティーを設定します。
LDAP サーバーが SSL 通信に使用するポートを指定します。たとえば、次のように指定します。
imq.user_repository.ldap.server=myhost:7878 |
ブローカプロパティーの imq.user_repository.ldap.ssl.enabled を true に設定します。
複数の LDAP ディレクトリサーバーを使用している場合は、ldap:// を使用して、追加の各ディレクトリサーバーを指定します。たとえば、次のように指定します。
imq.user_repository.ldap.server = myHost:7878 ldap:// otherHost:7878 …
追加の各ディレクトリサーバーはスペースで区切ります。リスト内のすべてのディレクトリサーバーは、LDAP 関連プロパティーに同じ値を使用する必要があります。
管理ユーザーを作成するには、アクセス制御プロパティーファイルで、ADMIN 接続を作成できるユーザーとグループを指定します。これらのユーザーとグループは、LDAP ディレクトリで事前に定義されている必要があります。
ADMIN 接続を作成できるユーザーまたはグループは、管理コマンドを発行できます。
アクセス制御ファイルの使用を有効にするには、ブローカプロパティー imq.accesscontrol.enabled を、デフォルト値である true に設定します。
imq.accesscontrol.enabled プロパティーにより、アクセス制御ファイルの使用が有効になります。
アクセス制御ファイル accesscontrol.properties を開きます。このファイルの場所については、付録 A 「プラットフォームごとの Message QueueTM データの場所」の一覧を参照してください。
このファイルには、次のようなエントリが収められています。
サービス接続アクセス制御##################################connection.NORMAL.allow.user=*connection.ADMIN.allow.group=admin
上記のエントリは一例です。admin グループはファイルベースのユーザーリポジトリに存在しますが、デフォルトでは LDAP ディレクトリに存在しないことに注意してください。LDAP ディレクトリで定義される、Message Queue 管理者権限を付与するグループの名前は変更する必要があります。
Message Queue 管理者権限をユーザーに付与するには、ユーザー名を次のように入力します。
connection.ADMIN.allow.user= userName[[,userName2] …]
Message Queue 管理者権限をグループに付与するには、グループ名を次のように入力します。
connection.ADMIN.allow.group= groupName[[,groupName2] …]