Comments
Description
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