...

第 4 章 その他の新機能

by user

on
Category: Documents
257

views

Report

Comments

Transcript

第 4 章 その他の新機能
第4章 その他の新機能
¾ チャネル・アクセス制御
¾ その他のセキュリティー
¾リモート・オブジェクトに対するアクセス権限設定
¾Suite B, FIPS対応
¾ マルチキャストPub/Sub
¾ アクティビティー・トレース
¾ チャネルに対するデッドレター・キューの設定
1
チャネル・アクセス制御
2
チャネル・アクセス制御
チャネル認証レコードを使用して、チャネル・レベルで接続システムへのアクセスを制御
接続要求に対するブロックの実施
„接続元の接続情報に応じて、接続をブロックすることが可能
接続条件に応じた特定ユーザーへのマッピングの実施
„接続元の接続情報に応じて、特定の権限ユーザーへのマッピングが可能
„マッピングに利用する権限ユーザーは、以下を指定可能
–
–
–
チャネル認証レコードのMCAUSER属性に指定したユーザー
使用チャネルの接続認証に利用されるユーザー
NOACCESS (設定すると、接続のブロックと同義)
アクセス制御に使用可能な接続情報
„IPアドレス
„ユーザーID(クライアント接続のみ)
„キュー・マネージャー名(サーバー接続のみ)
„SSLまたはTLSのDN
V7.1で新規作成したキュー・マネージャーは、デフォルトでチャネル・アクセス制御が有効
デフォルトで作成されるチャネル認証レコードにより、特権ユーザーでのクライアント接続はブロック
„MQエクスプローラによって使用されるチャネルを除き、全てのSYSTEMチャネルを使用した接続もブロック
„マイグレーションしたキュー・マネージャーは、デフォルトではチャネル・アクセス制御は無効
3
チャネル・アクセス制御
チャネル・アクセス制御の使用可否をキュー・マネージャー属性(CHLAUTH)で指定
ALTER QMGR CHLAUTH (ENABLED)
„V7.1環境で新規作成したキュー・マネージャーはデフォルトで有効
„マイグレーションしたキュー・マネージャーは、デフォルトではCHLAUTH
(DISABLED)
要件に応じ、チャネル認証レコードを作成
SET CHLAUTH(chl_name) TYPE(type) 各パラメータ
„もしくは、PCFコマンド(Set
Channel Authentication Record)
設定するチャネル認証のタイプをTYPEパラメーターで指定
„アクセス制御に使用可能な接続情報と設定可能なチャネル認証レコードのタイプ
使用可能な接続情報
設定可能なチャネル認証レコードのタイプ (TYPE属性で指定)
接続要求をブロックしたい場合
特定ユーザーへマッピングしたい場合
IPアドレス
BLOCKADDR
ADDRESSMAP (*)
ADDRESSMAP
ユーザーID(クライアント接続のみ)
BLOCKUSER
USERMAP (*)
USERMAP
キュー・マネージャー名(サーバー接続のみ)
QMGRMAP (*)
QMGRMAP
SSLまたはTLSのDN名
SSLPEERMAP (*)
SSLPEERMAP
4
(*)のケースではマッピングするユーザーにNOACCESSを指定
チャネル・アクセス制御
SET CHLAUTH コマンドのパラメータ一覧
パラメータ
説明
CHLAUTH
チャネルの認証構成を設定するチャネルまたはチャネル・セットの名前。アスタリスク指定可。
ACTION
チャネル認証レコードで実行する操作。有効値はADD / REPLACE / REMOVE /
REMOVEALL。
ADDRESS
マップまたはブロックするIPアドレス TYPE(ADDRESSMAP)では必須
ADDRLIST
マップまたはブロックするIPアドレスのリスト。最大256個のアドレスを指定可能。
TYPE(BLOCKADDR)でのみ有効。
CLNTUSER
マップまたはブロックするクライアント・ユーザーID。TYPE(USERMAP)でのみ有効。
CMDSCOPE
z/OSのみ有効。キュー共用環境の場合のコマンド実行方法を指定。
DESCR
チャネル認証レコードの情報記述。
MCAUSER
条件に合致した際に使用するユーザーID。
QMNAME
マップまたはブロックするキュー・マネージャー名。
SSLPEER
SSL/TLS識別名の条件判定に指定する値。
TYPE
チャネル認証のタイプ。有効値は、BLOCKUSER / BLOCKADDR / SSLPEERMAP/
ADDRESSMAP / USERMAP / QMGRMAP。
USERLIST
ブロックするユーザーIDのリスト。最大100個のユーザーIDを指定可能。また、*MQADMINなどの
特殊値の使用も可能。TYPE(BLOCKUSER)でのみ有効。
USERSRC
MCAUSERとして使用するユーザーIDの情報。有効値は、MAP / NOACCESS / CHANNEL。
WARN
警告モードで実行するか否か。有効値はYES / NO。
5
※下線がデフォルト設定
チャネル・アクセス制御
TYPE毎の設定可能パラメータ
TYPE
ADDRLIST
BLOCKADDR
○
BLOCKUSER
USERLIST
ADDRESS
CLNTUSER
QMNAME
SSLPEER
USERSRC
MCAUSER
○
○※2
○
○※2
○
○※2
○
○※2
○
ADDRESSMAP
○
USERMAP
○※1
QMGRMAP
○※1
SSLPEERMAP
○※1
○
○
○
※1 設定はオプション
※2 USERSRC(MAP)のときに設定
6
<参考>デフォルトで生成されるチャネル認証レコード
キュー・マネージャー作成時または、既存キュー・マネージャーのマイグレーション時に、自動生成
されるチャネル認証レコード
„クライアント接続での、特権ユーザーによるアクセスをブロック
„MQエクスプローラによって使用されるチャネルを除き、全てのSYSTEMチャネルを使用した接続をブロック
[デフォルトで生成されるチャネル認証レコードの表示結果]
dis chlauth(*)
3 : dis chlauth(*)
AMQ8878: チャネル認証レコードの詳細を表示します。
CHLAUTH(SYSTEM.ADMIN.SVRCONN)
ADDRESS(*)
TYPE(ADDRESSMAP)
USERSRC(CHANNEL)
AMQ8878: チャネル認証レコードの詳細を表示します。
CHLAUTH(SYSTEM.*)
TYPE(ADDRESSMAP)
ADDRESS(*)
USERSRC(NOACCESS)
AMQ8878: チャネル認証レコードの詳細を表示します。
CHLAUTH(*)
TYPE(BLOCKUSER)
USERLIST(*MQADMIN)
„z/OSでは、チャネル認証オブジェクトのデフォルト定義は
HLQ.SCSQPROC(CSQ41NSA)に含まれる
7
チャネル・アクセス制御
定義したチャネル認証レコードの確認
MQSCコマンド: DISPLAY CHLAUTH
PCFコマンド: Inquire Channel Authentication Record
接続条件に合致するチャネル認証レコードの確認も可能
„DISPLAY
CHLAUTHコマンド実行時にMATCH(RUNCHECK)オプション付で実行すると、
コンソール上でのテストが可能
例:特定のIPアドレス(9.123.123.123)からの接続をブロックするチャネル認証レコードの稼動確認を行うケース
dis chlauth(TEST01.SVRCONN.01) MATCH(RUNCHECK)
ADDRESS(9.123.123.123) CLNTUSER('CLNT1')
8 : dis chlauth(TEST01.SVRCONN.01) MATCH(RUNCHECK)
ADDRESS(xxx.xxx.xxx.xxx) CLNTUSER(‘CLNT1')
AMQ8878: チャネル認証レコードの詳細を表示します。
CHLAUTH(*)
TYPE(BLOCKADDR)
チャネル名、IPアドレス、クライアント
ユーザ情報などの接続条件と共に、
RUNCHECKを実行
マッチング対象となるチャネル認証
レコードが表示される
ADDRLIST(9.123.123.123)
WARNINGモードのサポート
接続をブロックせずに、エラーだけ生成することも可能
チャネルの認証レコードはキュー(SYSTEM.CHLAUTH.DATA.QUEUE)に保管
8
MQエクスプローラでのチャネル認証設定
MQエクスプローラーで、チャネル認証レコードを定義することも可能
チャネル->チャネル認証レコード->新規
->チャネル認証レコードを選択
9
IPアドレスによるブロック
特定のIPアドレスからのチャネル接続をブロック
特定のIPアドレスからのアクセスの制御はファイアーウォールの役割
„DoS攻撃などに対し、Firewallのルールを更新するまでの暫定措置などを想定
以下の2つの設定方法
タイプ
設定方法
BLOCKADDR
ADDRLISTに1つ以上の単一アドレス、アドレス範囲、ワイルドカードを含むパ
ターンを指定
ADDRESSMAP
ADDRESSに単一アドレス、アドレス範囲、ワイルドカードを含むパターンを指定
し、USERSRCにNOACCESSを設定(*1)
*1 USERSRC(NOACCESS)はキュー・マネージャーに接続できず、即時切断される設定
MQSCコマンド実行例
set chlauth(*) type(BLOCKADDR) addrlist(xxx.xxx.xxx.xxx)
set chlauth(*) type(ADDRESSMAP) address(xxx.xxx.xxx.xxx) USERSRC(NOACCESS)
type(BLOCKADDR)で設定したケースでのエラー出力例
[サーバー側]
[クライアント側]
AMQ9782: リモート接続がブロックされました。
説明:
IP アドレス 'xxx.xxx.xxx.xxx' からの接続が、アドレス・ブロック規則
'xxx.xxx.xxx.xxx' に一致したため、ブロックされました。
MQCONN ended with reason code 2538
10
※2538は MQRC_HOST_NOT_AVAILABLE
ユーザーIDによるブロック
特定のユーザーからのチャネル接続をブロック
クライアント接続のみ有効
以下の2つの方法
タイプ
設定方法
BLOCKUSR
USERLISTに1つ以上のユーザーを指定
ワイルドカードは使用不可
USERMAP
CLNTUSERにユーザーを指定し(ワイルドカード使用可)、USERSRCに
NOACCESSを設定
MQSCコマンド実行例
set chlauth(SVR.TEST1) type(BLOCKUSER) userlist(‘CLNT1‘, ‘CLNT2’)
set chlauth(SVR.TEST1) type(USERMAP) clntuser(‘CLNT1’) USERSRC(NOACCESS)
type(BLOCKUSR)で設定したケースでのエラー出力例
[クライアント側]
[サーバー側]
AMQ9776: チャネルがユーザー ID によってブロックされました。
説明:
インバウンド・チャネル 'TEST01.SVRCONN.01' がアドレス
‘xxx.xxx.xxx.xxx' からブロックされました。
これは、チャネルのアクティブ値が、ブロックすべき
ユーザー ID にマップされていたためです。チャネルのアクティブ値は
'MCAUSER(CLNT1) CLNTUSER(CLNT1)' でした。
MQCONN ended with reason code 2035
※2035は MQRC_NOT_AUTHORIZED
11
ユーザーIDによるブロック
タイプBLOCKUSRでは特殊値 *MQADMIN の指定が可能
*MQADMINは特権ユーザーまたは管理ユーザーに相当(OSにより異なる)
„Windows:
mqmグループ、Administratorsグループの全てのメンバーとSYSTEM
„UNIX/Linux: mqmグループの全てのメンバー
„IBM i: プロファイル(ユーザー)qmqm と qmqmadm、qmqmadm グループのすべてのメンバー、*ALLOBJ
特殊設定で定義されているすべてのユーザー
„z/OS では、チャネル・イニシエーターとキュー・マネージャーのアドレス・スペースを実行しているユーザー ID
12
キュー・マネージャー名によるブロック
特定のキュー・マネージャーからのチャネル接続をブロック
サーバー間接続のみ有効
以下の方法
タイプ
設定方法
QMGRMAP
単一のキュー・マネージャーまたはワイルドカードを含むパターンを
USERSRC(NOACCESS)に設定
MQSCコマンド実行例
set chlauth(TEST.TEST01) type(QMGRMAP) QMNAME(TEST)
USERSRC(NOACCESS)
type(QMGRMAP)を設定したケースでのエラー出力例
[送信側キュー・マネージャー]
[受信側キュー・マネージャー]
AMQ9777: チャネルがブロックされました。
説明:
インバウンド・チャネル 'TEST.TEST01' がアドレス ‘xxx.xxx.xxx.xxx' から
ブロックされました。これは、チャネルのアクティブ値が、
USERSRC(NOACCESS) を使用して構成したレコードと一致したためです。
チャネルのアクティブ値は 'QMNAME(TEST)' でした。
AMQ9558: リモート・チャネル ‘TEST.TEST01’ は現在使用
できません。
13
SSLまたはTLS DN によるブロック
特定の識別名(DN)を含む、SSLまたはTLS個人証明書を使用したユーザーからのチャ
ネル接続をブロック
以下の方法
タイプ
設定方法
SSLPEERMAP
単一の識別名またはワイルドカードを含むパターンを
USERSRC(NOACCESS)に設定
MQSCコマンド実行例
set chlauth(SVR.TEST1) type(SSLPEERMAP) SSLPEER(‘CN=Test Team,
OU=*,OU=*,OU=Security,DC=*,DC=*U10,DC=Hursley’)
USERSRC(NOACCESS)
14
IPアドレスに応じたMCAUSERマッピング
特定のIPアドレスからの接続時に、特定のMCAUSERを使用するように指定
以下の方法
タイプ
設定方法
ADDRESSMAP
単一のアドレス、アドレス範囲、ワイルドカードを含むパターンを指定可能
MQSCコマンド実行例
set chlauth(SVR.TEST1) type(ADDRESSMAP) address('9.123.123.*')
USERSRC(MAP) MCAUSER(‘MAPUSR')
15
ユーザーIDに応じたMCAUSERマッピング
特定のユーザーIDからの接続時に、特定のMCAUSERを使用するように指定
クライアント接続のみ有効
以下の方法
タイプ
設定方法
USERMAP
ワイルドカードは使用不可
MQSCコマンド実行例
set chlauth(SVR.TEST1) type(USERMAP) CLNTUSER(‘CLNT1')
USERSRC(MAP) MCAUSER(‘MAPUSR')
16
キュー・マネージャー名に応じたMCAUSERマッピング
特定のキュー・マネージャーからの接続時に、特定のMCAUSERを使用するように指定
サーバー間接続のみ有効
以下の方法
タイプ
設定方法
QMGRMAP
単一のキュー・マネージャー、ワイルドカードを含むパターンを指定可能。
ADDRESSパラメータと組み合わせて、特定のIPアドレスにのみ適用も可能。
→正しいQMGRのみ、接続を許可するなど。
MQSCコマンド実行例
set chlauth(TEST.TEST1) type(QMGRMAP) QMNAME(TEST) USERSRC(MAP)
MCAUSER(‘MAPUSR')
17
SSLまたはTLS DN に応じたMCAUSERマッピング
特定の識別名(DN)を含むSSL/TLS個人証明書を使用した接続時に、特定の
MCAUSERを使用するように指定
以下の方法
タイプ
設定方法
SSLPEERMAP
単一の識別名、ワイルドカードを含むパターンを指定可能
MQSCコマンド実行例
set chlauth(SVR.TEST1) type(SSLPEERMAP) SSLPEER(‘CN=Test Team,
OU=*,OU=WebSphere*,OU=*,OU=Security,DC=*,DC=DE2*,DC=Hursley’)
USERSRC(MAP) MCAUSER(‘MAPUSR')
18
チャネル・アクセス制御の実装例
実装要件例
第三者による情報の盗用を避けるため、特定のキュー・マネージャー、クライアントからの接続は、
指定したIPアドレスからの接続に限定する
実装例
明示的にルールで許可していない接続は、すべてブロック
set chlauth(*) type(ADDRESSMAP) ADDRESS(*) USERSRC(NOACCESS)
„チャネルごとに設定するのであれば、チャネル定義のMCAユーザーにMQ権限のないユーザーを指定しても良
い
alter chl(SVR.TEST1) chltype(SVRCONN) MCAUSER(‘NOAUTH’)
特定のIPアドレスからの接続の場合のみ、許可ユーザーにマップする
set chlauth(SVR.TEST1) type(ADDRESSMAP) ADDRESS(‘9.123.123.*’)
USERSRC(MAP) MCAUSER(‘MAPUSR')
19
考慮点
1つのチャネル定義に、複数の認証レコードを定義可能
1つのチャネル定義に、複数のセキュリティ要件を設定
„BLOCKUSERチャネル認証レコードでブロックされるユーザーIDを使用しているが、特定のチャネルを使用
している場合は許可したいなど
複数のチャネル認証レコードに一致する場合の優先順位
„使用するチャネル認証レコードの選択アルゴリズム
優先度: 高い
チャネル名が明示指定されている
(ワイルドカードを使用していない)
SSL/TLS識別名を使用している
ユーザーID、キュー・マネージャー名を使用している
低い
IPアドレスを使用している
„チャネル名、IPアドレス、キュー・マネージャー名、SSL/TLS
識別名などに、複数のチャネル認証レコードが
合致する場合は、最も具体的に一致するものが使用される
–
ワイルドカードの使用位置などを元に判断
20
チャネル・イベント
チャネルイベントの取得
チャネル・イベントが有効であれば、チャネルの接続ブロック時にチャネル・イベント
(MQRC_CHANNEL_BLOCKED)を発行
„警告モードで実行の場合は、MQRC_CHANNEL_BLOCKED_WARNING
を発行
ブロックの種別に応じて、以下の理由修飾子付でイベントを発行
使用機能
イベントの理由修飾子
IPアドレスによるブロック
MQRQ_CHANNEL_BLOCKED_ADDRESS
ユーザーIDによるブロック
MQRQ_CHANNEL_BLOCKED_USERID
マップ結果がアクセス権限なし
によるブロック
MQRC_CHANNEL_BLOCKED_NOACCESS
出力先イベント・キューはSYSTEM.ADMIN.CHANNEL.EVENT
21
Blank Page
22
その他のセキュリティー
23
リモート・オブジェクトに対するアクセス権限設定の追加
リモートのキューに対するアクセス権限設定
setmqautコマンドにて、ローカルに存在しないキューに対してアクセス権を設定
„接続元キュー・マネージャーでクラスター・キューに対する個別アクセス権限を付与可能
キュー・マネージャー指定でのMQOPENに対する権限設定
setmqautにオブジェクトタイプrqmnameが追加
rqmnameを指定しアクセス権限を付与した場合、任意のリモートのキューに対するアクセスが
許可される
„個別キューへのアクセス権とは別に権限を設定することが必要
実行ユーザー1 ( group1)
MQOPEN
Q = CLQ01
MQOPEN
Q = CLQ02
MQOPEN
Q = LQ01
QM = QMGR_A
キューごとに
アクセス権を設定
OK
MQクラスター
QMGR_1
QMGR_A
NG
NG
OK
CLQ01
CLQ02
LQ01
(非クラスター・キュー)
実行ユーザー2( group2)
MQOPEN
Q = LQ01
QM = QMGR_A
キュー・マネージャー指定での
MQOPENに対するアクセス権
を設定
24
以下のアクセス権のみを付与
・キューCLQ01へのPUT権限をgroup1に付与
・リモート・キューマネージャーQMGR_A指定での
MQOPEN権限(PUT権限)をgroup2に付与
リモート・オブジェクトに対するアクセス権限設定の追加
アクセス権限設定方法
qm.iniファイルのSecurity スタンザで、ClusterQueueAccessControlを設定
Security:
ClusterQueueAccessControl=RQMName | XmitQ
„RQMName:
クラスター・キューへのOPEN権限、キュー・マネージャー指定でのOPEN権限が有効になる
※IBM i プラットフォームでは、MQZAS_VERSIONが6以上であることが前提
„XmitQ(デフォルト):
SYSTEM.CLUSTER.TRANSMIT.QUEUEの権限でアクセス権限が検査される
–MQ V7.0.1までの同様の動作
クラスター・キューに対するアクセス権限設定
„setmqautコマンドにてリモートのクラスター・キューを指定しアクセス権限を設定
–設定例(UNIX) :リモートのクラスター・キュー CLQ01へのPUT権限を付与
setmqaut –m QMGR_1 –t queue –n CLQ01 –g group1 +put
キュー・マネージャー指定でのMQOPENに対する権限設定
„setmqautコマンドにて、MQOPENに指定するリモート・キュー・マネージャーを指定しアクセス権限を設定
–オブジェクトタイプにrqmnameを指定
–設定例(UNIX) :リモート・キュー・マネージャーQMGR_Aへ上のキューへのPUT権限を付与
setmqaut –m QMGR_1 –t rqmname –n QMGR_A –g group2 +put
25
セキュリティー強化
SSLプロバイダーの Suite B (FIPS 186-3) 使用のサポート(UNIX, Linux,
Windows)
Suite B とは、米国国家安全保障局(NSA)が2005年に発表した相互運用が可能な暗号
アルゴリズムのセットで、以下が規定されている
„暗号化アルゴリズム
(AES)
(ECDH (Elliptic Curve Diffie-Hellman))
„デジタル署名アルゴリズム (ECDSA (Elliptic Curve Digital Signature Algorithm))
„ハッシュ・アルゴリズム (SHA-256 または SHA-384)
※NSAのサイト:http://www.nsa.gov/ia/programs/suiteb_cryptography/
„鍵交換アルゴリズム
Suite B 準拠 TLS 1.2 プロファイルに適合するよう WMQ を構成可能
連邦情報処理標準 FIPS 140-2 への準拠(OS共通)
SSL チャネル及び TLS チャネルで暗号化が必要な場合に使用する米国連邦情報・技術局
の連邦情報処理標準(FIPS)の暗号モジュール評価プログラム(140-2)への準拠
メッセージ・チャネルや各クライアント・アプリケーションにおいて、以下を満たす接続はFIPS準拠
„インストールされているOSのバージョンおよびH/W
アーキテクチャーにおいて、インストールされている
GSKit ICC バージョンの FIPS 140-2 準拠が認定されている
„キュー・マネージャーの SSLFIPS 属性が YES に設定されている
„-fips オプションが指定された runmqakm などの FIPS 準拠のソフトウェアのみを使用して、すべての鍵
リポジトリーが作成および操作されている
26
セキュリティー強化
SSL 暗号化における CipherSpec とアルゴリズムのサポートの拡大
楕円曲線アルゴリズム(UNIX, Linux, Windows)
„楕円曲線の計算を利用したより強固な暗号化アルゴリズム
セキュア・ハッシュ・アルゴリズム-2(SHA-2)のサポート
„より堅固なレベルのデータの保全性を提供
27
Blank Page
28
マルチキャストPub/Sub
29
マルチキャストPub/Sub
マルチキャストPub/Sub
Pub/Sub メッセージをネットワークのマルチキャスト機能を利用して配信
„マルチキャスト・アドレスに関連付けられたトピックに対するパブリッシュ・メッセージは、
キューマネージャーによる配信ではなく、ネットワークのマルチキャスト機能で配信される
„キューマネージャーやN/Wへの負荷が軽減され、クライアントの増加がパフォーマンスに大きく影響しない
„マルチキャストに関連付けられていないトピックへのパブリッシュは従来どおりキューマネージャーが配信
キューマネージャー障害のときでもPub/Subメッセージの配信が可能
„ただし、MQ
V7.0.1からのクライアント自動再接続機能によって再接続している間のみ配信可能
–再接続期間内に接続できないと、次回接続するまで配信/受信は不可
新しいオブジェクトCOMMINFO(Communication Information)の追加
„マルチキャストで利用するマルチキャスト・グループ・アドレスを指定
–マルチキャスト・アドレスは、224.0.0.0~239.255.255.255
–ただし、一部予約済みであるため、239.0.0.0~239.255.255.255の利用を推奨
„トピック・オブジェクトにCOMMINFOを指定することでマルチキャスト機能が利用可能となる
キューマネージャー
パブリッシャ
サブスクライバ
サブスクライバ
Network
Multicast
30
サブスクライバ
マルチキャストPub/Sub
マルチキャスト機能の制約
Pub/Subメッセージングのみ利用できる
„キューを利用したメッセージングには利用できない
非永続(Non-Durable)サブスクリプションのみサポート
„サブスクライバーが接続していない間にパブリッシュされたメッセージをキューに格納しておく永続(Durable)
サブスクリプションは利用不可
–トピック・オブジェクトの設定によって動作は異なる(後述)
管理対象(Managed)サブスクリプションのみ利用できる
„ユーザーが事前にサブスクリプションを作成し、任意のサブスクライバー・キューを指定する非管理対象
(Provided)サブスクリプションは利用できない
–トピック・オブジェクトの設定によってサブスクライブ登録時の動作は異なる(後述)
トピック・ストリングは255文字以内
トランザクション処理、同期点処理は不可
グループ・メッセージ/セグメント・メッセージは不可
MQ for z/OSはサポートしない
31
マルチキャストPub/Sub
設定方法(キューマネージャー側)
COMMINFOオブジェクトを作成し、利用するマルチキャスト・アドレスを指定
„設定例
DEFINE COMMINFO(MC1) GRPADDR(139.0.0.0) PORT(1717)
„GRPADDR属性にマルチキャスト・アドレスを指定
„PORT属性に指定した番号がマルチキャスト配信で使用されるUDPの宛先ポート番号となる
トピック・オブジェクトにCOMMINFOオブジェクトを指定
„設定例
DEFINE TOPIC(ALLSPORTS) TOPICSTR(‘/sports/soccer') COMMINFO(MC1) MCAST(ENABLED)
„COMMINFO属性に作成したCOMMINFOオブジェクトの名前を指定
„MCAST属性には、「ENABLED」もしくは「ONLY」を設定(両者の違いは後述)
–親トピックがマルチキャスト有効になっている場合は、「ASPARENT」(デフォルト値)でも可
–「DISABLED」の場合、マルチキャスト不可
„TOPICSTR属性に指定したトピック以下のパブリケーション・メッセージがマルチキャスト配信となる
–それ以外のトピックに対するパブリケーションは通常通りキューマネージャーが配信
–マルチキャスト指定したトピックの配下に別のマルチキャスト・アドレスのCOMMINFOを指定することは不可(後述)
32
マルチキャストPub/Sub
設定方法(アプリケーション側)
mqclient.ini にマルチキャスト配信に使用するネットワーク・インターフェースを指定
„設定例
Multicast:
Interface=9.189.208.141
„MulticastスタンザのInterface属性にローカルのN/Wインターフェースを指定
アプリケーション・コーディングでマルチキャストを意識する必要はない
„ただし、マルチキャストに使用できる機能には制約あり(前述)
„アプリケーション側でマルチキャストを使用しないように指定することは可能
–MQOPENのオプションMQOO_NO_MULTICAST
–MQSUBのオプションMQSO_NO_MULTICAST
・・・パブリッシュ・アプリケーション
・・・サブスクライブ・アプリケーション
33
マルチキャストPub/Sub
<参考>
COMMINFOオブジェクトの作成コマンド構文
DEFINE COMMINFO( comminfo_name )
[ TYPE( MULTICAST ) ]
[ BRIDGE( DISABLED | ENABLED ) ]
[ CCSID( ASPUB | integer ) ]
[ COMMEV( DISABLED | ENABLED | EXCEPTION ) ]
[ DESCR( string ) ]
[ ENCODING( ASPUB | NORMAL | REVERSED | S390 | TNS | integer ) ]
[ GRPADDR( string ) ]
[ MCHBINT( integer ) ]
[ MCPROP( REPLY | USER | COMPAT | NONE | ALL ) ]
[ MONINT( integer ) ]
[ MSGHIST( integer ) ]
[ PORT( integer ) ]
[ NSUBHIST( NONE | ALL ) ]
[ LIKE( comminfo_name ) ]
[ REPLACE | NOREPLACE ]
※下線はデフォルト設定値
<プロパティの説明>
BRIDGE
:マルチキャストを利用しないアプリケーションからのパブリケーションをマルチキャストを利用するアプリケーションに配信するかを指定。
デフォルト(ENABLED)では配信を行う。
CCSID
:配信メッセージのCCSIDを指定。デフォルト(ASPUB)は、パブリッシュされたメッセージのCCSIDを引き継いで配信。
COMMEV
:マルチキャスト・ハンドルが作成されたときにイベント・メッセージを生成するかを指定。デフォルト(DISABLED)は生成しない。
ENCODING
:配信メッセージのEncodingを指定。デフォルト(ASPUB)は、パブリッシュされたメッセージのEncodingを引き継いで配信。
GRPADDR
:マルチキャストに使用するアドレスを指定。
MCHBINT
:ハートビート間隔を指定(ミリ秒単位)。デフォルトは2000ミリ秒。
MCPROP
:MQMDとユーザ・プロパティのどのプロパティをメッセージとともに配信するかを指定。
MONINT
:モニター情報の更新間隔を指定(秒単位)。デフォルトは60秒。
MSGHIST
:システムでキープしておくメッセージ履歴のサイズを指定(KB単位)。デフォルトは100KB。
NSUBHIST
:新規に参加してきたサブスクライバーがそのタイミングで入手可能なパブリケーションを受信できるか、
参加以降のパブリケーションのみを受信できるかを指定。
PORT
:マルチキャスト・メッセージを配信するポートを指定。デフォルトは1414.
34
マルチキャストPub/Sub
<参考>
TOPICオブジェクトのマルチキャスト関連プロパティ
DEFINE TOPIC( topic name )
[ COMMINFO( string ) ]
[ MCAST( ASPARENT | ENABLED | DISABLED | OLNY ) ]
※下線はデフォルト設定値
※マルチキャスト関連以外のプロパティは省略
<プロパティの説明>
COMMINFO :マルチキャスト・アドレスを指定したCOMMINFOオブジェクトを指定。
MCAST
:マルチキャスト配信の可否を指定。
デフォルトのASPARENTの場合は、親トピックの設定を引き継ぐ。
ENABLEDの場合は、マルチキャスト配信可能。
DISABLEDの場合は、マルチキャスト配信不可。
ONLYの場合は、マルチキャスト可能な(※)クライアントのみサブスクライブ可能。
※マルチキャスト可能かどうかは、サブスクライブ要求の内容に依存。
ONLYを設定している場合、マルチキャストがサポートされない永続サブスクリプション要求および
非管理対象サブスクリプション要求に対しては、エラーを返す。
ONLY以外の場合、マルチキャストがサポートされないサブスクライブ要求に対しては
非マルチキャスト・サブスクリプションを作成する。
35
マルチキャストPub/Sub
トピック・トポロジー
マルチキャスト配信を行うトピック・ツリーの一番上位のトピックにCOMMINFOを設定
COMMINFOが設定されたトピックのサブ・トピックに別のCOMMINFOを設定することは不可
同レベルのトピックに別のCOMMINFOを設定することは可
トピック・ツリー
COMMINFO A
GRPADDR=139.0.0.1
soccer
下位のトピックに別の
COMMINFOを指定することは
できない
COMMINFO B
GRPADDR=139.0.0.2
sports
teams
games
139.0.0.1のアドレスで
マルチキャスト
baseball
teams
games
139.0.0.2のアドレスで
マルチキャスト
※上記設定の場合、/sportsトピックに対するパブリケーションはマルチキャスト対象外
36
マルチキャストPub/Sub
マルチキャスト・メッセージのサイズ制御
メッセージと共に送信するMQMDとユーザー・プロパティの項目を指定できる
„伝送負荷を抑えるための仕組み
COMMINFOオブジェクトのMCPROP属性で指定
„ALL
„REPLY
„USER
„NONE
„COMPAT
:全てのプロパティを送信
:ユーザー・プロパティと以下のMQMDフィールドのみ送信
MsgType、MessageId、CorrelId、ReplyToQ、ReplyToQmgr
:ユーザー・プロパティのみ送信
:MQMD、ユーザー・プロパティとも送信しない
:RMMとの互換モードで送信
RMM=reliable multicast messaging
„属性が送信されない場合、受信側はデフォルト値を適用
–ここでのデフォルト値は、MQMD_DEFAULT値とは異なる ⇒次ページ参照
37
マルチキャストPub/Sub
<参考>
„マルチキャスト・メッセージのMQMDデフォルト値
属性
デフォルト値
属性
デフォルト値
StrucId
N/A
UserIdentifier
ブランク
Version
N/A
AccountingToken
NULL
Report
0
PutAppIType
MQAT_JAVA
MsgType
MQMT_DATAGRAM
PutAppIName
ブランク
Expiry
0
PutDate
ブランク
Feedback
0
PutTime
ブランク
Encoding
MQENC_NORMAL(equiv)
ApplOriginData
ブランク
CodedCharSetId
1208
GroupID
N/A
Format
MQRFH2
MsgSeqNumber
N/A
Priority
4
Offset
N/A
Expiry
MQPER_NOT_PERSISTENT
MsgFlags
N/A
MsgId
NULL
OriginalLength
N/A
CorrelId
NULL
BackoutCount
0
ReplyToQ
ブランク
ReplyToQMgr
ブランク
38
アクティビティー・トレース
39
アクティビティー・トレース
アプリケーションのアクティビティーに関するレポートを作成可能
アプリケーションが発行したMQI の順序やオプション、メッセージの内容などをレポート
MQアプリケーションの詳細な動作をモニターしたい場合に有用
パフォーマンスへの影響があるため、一時的な利用が現実的
アクティビティー・トレースはPCFフォーマットのメッセージとして生成される
出力先は、SYSTEM.ADMIN.TRACE.ACTIVITY.QUEUE キュー
基本はアプリケーション切断(DISCONNECT)後に出力される
„出力のタイミングをインターバル時間やMQI発行回数で指定することも可
アクティビティー・トレース・メッセージを解析するプログラムの実装が必要
サンプルとして、amqsact コマンド(amqsact.c)を提供
キューマネージャー
アプリケーション
MQI 処理
解析プログラム
解析
アクティビティー・
トレース・メッセージ
SYSTEM.ADMIN.TRACE.ACTIVITY.QUEUE
40
ファイル/DB
など
アクティビティー・トレース
アクティビティー・トレースの設定方法
キュー・マネージャー・レベルで設定する場合
„キュー・マネージャー属性ACTVTRC
パラメータ
ACTVTRC
で指定
値(デフォルト)
説明
アクティビティー・トレース情報収集の有無
ON / OFF
„設定後に接続した全てのアプリケーションに有効
アプリケーション・レベルで設定する場合
„アプリケーションの
MQCONNX オプションで指定
–MQCNO_ ACTIVITY_ TRACE_ENABLED
–MQCNO_ ACTIVITY_ TRACE_DISABLED
„キューマネージャーのACTVCONO属性が「ENABLED」の場合のみ、アプリケーションの設定が有効
–ACTVCONO属性が「DISABLED」の場合は、キューマネージャーのACTVTRC設定に従う
詳細な設定はアクティビティー・トレース構成ファイル(mqat.ini)で指定
41
アクティビティー・トレース
アクティビティー・トレース構成ファイル(mqat.ini)
アクティビティー・トレースの詳細な内容を設定
キューマネージャー構成ディレクトリに配置
„qm.iniと同じ場所
2つのスタンザを用意
„AllActivityTrace
„ApplicationTrace
主なパラメータ
:全てのアプリケーションに有効な設定
:特定のアプリケーションに有効な設定(AllActivityTraceの設定を上書)
値(デフォルト)
説明
Trace
ON / OFF
ApplicationTraceスタンザのみ有効
特定のアプリケーションのアクティビティ・トレースを有効とするかを指定
ActivityInterval
0-99999999
トレース・メッセージが生成される間隔を指定(秒単位)
ActivityCount
0-99999999
トレース・メッセージが生成されるまでのMQI操作回数を指定
TraceLevel
LOW / MEDIUM /
HIGH
取得するトレースのレベルを指定
TraceMessageData
0- 104,857,600(100MB)
トレースに収集されるメッセージ・データのサイズ(バイト単位)
ApplName
文字列
ApplicationTraceスタンザのみ有効
アプリケーション名を指定(アスタリスク指定可)
ApplFunction
文字列
(IBM i のみ) ApplicationTraceスタンザのみ有効
ApplClass
USER / MCA /
INTERNAL / ALL
アプリケーションのクラスを指定
USERの場合、ユーザー・アプリケーションのみがトレース取得の対象となる
42
アクティビティー・トレースの構成ファイルの例
デフォルトで提供されているアクティビティー・トレース構成ファイル(mqat.ini)
AllActivityTrace:
ActivityInterval=1
ActivityCount=100
TraceLevel=MEDIUM
TraceMessageData=0
StopOnGetTraceMsg=ON
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
Global settings stanza
Time interval between trace messages
Values: 0-99999999 (0=off)
Default: 0
Number of operations between trace msgs
Values: 0-99999999 (0=off)
Default: 0
Amount of data traced for each operation
Values: LOW | MEDIUM | HIGH
Default: MEDIUM
Amount of message data traced
Values: 0-104857600
Default: 0
Stop trace on get of activity trace message
Values: ON | OFF
Default: ON
(次ページへ)
43
アクティビティー・トレースの構成ファイルの例
(続き)
ApplicationTrace:
ApplClass=ALL
ApplName=amqsact*
Trace=OFF
ActivityInterval=0
ActivityCount=0
TraceLevel=MEDIUM
TraceMessageData=0
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
Application specific settings stanza
Application type
Values: (USER | MCA | ALL)
Default: USER
Application name (may be wildcarded)
(matched to app name without path)
Default: *
Activity trace switch for application
Values: ( ON | OFF )
Default: OFF
Time interval between trace messages
Values: 0-99999999 (0=off)
Default: 0
Number of operations between trace msgs
Values: 0-99999999 (0=off)
Default: 0
Amount of data traced for each operation
Values: LOW | MEDIUM | HIGH
Default: MEDIUM
Amount of message data traced
Values: 0-104857600
Default: 0
44
アクティビティー・トレースのレポート例
amqsactコマンドによるアクティビティー・トレースのレポート例(amqsputコマンド実行時)
MonitoringType: MQI Activity Trace
Correl_id:
00000000: 414D 5143 3731 514D 3120 2020 2020 2020 'AMQC71QM1
'
00000010: C7D0 4A4F 2000 1E01
'ヌミJO ...
'
QueueManager: '71QM1'
Host Name: 'AHxxxxx'
IntervalStartDate: '2012-02-27'
IntervalStartTime: '09:39:40'
IntervalEndDate: '2012-02-27'
IntervalEndTime: '09:39:44'
CommandLevel: 710
SeqNumber: 0
ApplicationName: 'ls¥c¥Samples¥Bin¥amqsput.exe'
Application Type: MQAT_WINDOWS_NT
ApplicationPid: 6740
UserId: 'shoheim'
API Caller Type: MQXACT_EXTERNAL
API Environment: MQXE_OTHER
Application Function: ''
Appl Function Type: MQFUN_TYPE_UNKNOWN
Trace Detail Level: 1
Trace Data Length: 100
Pointer size: 4
Platform: MQPL_WINDOWS_NT
=============================================================================
Tid Date
Time
Operation
CompCode
MQRC HObj (ObjName)
001 2012-02-27 09:39:40 MQXF_CONN
MQCC_OK
0000 001 2012-02-27 09:39:40 MQXF_OPEN
MQCC_OK
0000 15773800 (Q1)
001 2012-02-27 09:39:43 MQXF_PUT
MQCC_OK
0000 15773800
001 2012-02-27 09:39:44 MQXF_CLOSE
MQCC_OK
0000 15773800
001 2012-02-27 09:39:44 MQXF_DISC
MQCC_OK
0000 =============================================================================
45
Blank Page
46
チャネルに対するデッドレターキューの
設定
47
チャネルおよびトピックにDLQキュー使用可否設定が追加
チャネル/トピックにDLQ (Dead Letter Queue) 使用可否設定が追加
キュー・マネージャーのDEADQ属性にDLQを設定した後、各オブジェクトで使用可否を設定可能
„USEDLQ属性にて使用可否を設定
–チャネルではSVRCONN/CLNTCONNを除くすべてのチャネルタイプにUSEDLQ属性が追加
„V7.0.1以前は、個々のオブジェクトでDLQ使用を制御することができなかった
チャネルでDLQ使用可否設定を分ける例
使用するチャネルごとにメッセージの順序保証要件が異なるケース
„チャネルAでは順序保証が不要、チャネルBは順序保証が必要な場合(パーシステント・メッセージ使用)
„チャネルAはDLQ有効、チャネルBはDLQ無効に設定
„宛先キューがPUT不可の場合、チャネルAはDLQにメッセージを破棄し転送を継続、チャネルBは異常終了
キュー・マネージャー
宛先キューにPUTできない場合、
メッセージはDEADQに入り、
チャネルは処理を継続
DLQ有効
チャネルA
USEDLQ=YES
DLQ無効
チャネルB
USEDLQ=NO
宛先キューにPUTできない場合、
チャネル異常終了し、後続の転送を停止
48
DEADQ
キュー・マネージャーに
DEADQを設定
チャネルおよびトピックにDLQキュー使用可否設定が追加
DLQキュー使用可否設定方法
キュー・マネージャーのDEADQ属性にDLQを設定後、各オブジェクトで使用可否を設定
チャネルでのUSEDLQ設定
ALTER CHANNEL(CHANNEL_NAME) CHLTYPE(CHANNEL_TYPE) USEDLQ(YES|NO)
トピックでのUSEDLQ設定
ALTER TOPIC(TOPIC_NAME) USEDLQ(ASPARENT|YES|NO)
パラメータ説明
„YES(チャネルデフォルト):
DLQ設定が有効(MQ V7.0.1までと同様の動作)
–キュー・マネージャーのDEADQ属性に指定されているキューがDLQとして使用される
–DEADQ属性に指定がない場合は、NOと同じ動作
キュー・マネージャーのDEADQ属性にかかわらずDLQ設定が無効
„ASPARENT (トピックデフォルト) : トピック・ツリー内の上位トピック・オブジェクトの設定を引き継ぐ
„NO:
–トピックのみ
49
Blank Page
50
Fly UP