MQ 虎の巻 : 10. セキュリティ

 View Only
Tue December 28, 2021 01:22 AM

10. セキュリティ

10-1 MQのセキュリティについて

今回は、WebSphere MQシステムのセキュリティについて説明します。
WebSphere MQシステムを構成する際には、以下つのセキュリティについて検討する必要があります。

  • MQシステムの管理権限
    キューマネージャーの作成/削除や起動/停止、MQオブジェクト(キューやチャネルなど)の作成/削除/参照など、MQシステムを管理するための権限をどのユーザに付与するか検討します。
  • MQオブジェクトへのアクセス権限
    MQIを使用してMQオブジェクトにアクセスするアプリケーションに対して、どういった処理(MQCONN、MQOPEN、MQPUT、MQGETなど)の実施を許可するか検討します。

  • MQチャネルのセキュリティ
    キューマネージャー間の送信/受信チャネル、およびクライアント/サーバ接続チャネルによってネットワーク上で転送されるメッセージのセキュリティについて検討します。

10-3 MQシステムの管理権限


MQシステムの管理者
MQシステムを構築する際には、MQの管理者とするオペレーティング・システム上のユーザを決定し、各種操作の実行権限を付与します。
MQの管理者は、制御コマンドやMQエクスプローラーを利用して以下の操作が実行できます。

  • キューマネージャーの作成/削除/起動/停止
  • MQSCコマンド(runmqsc)によるMQオブジェクトの各種操作
  • MQオブジェクトへのアクセス権限の設定
  • リスナーの起動/停止
  • トレースの設定
  • メディア・イメージの取得/リストア

など

  • z/OSでは以下の操作も含まれます。
  • 操作と制御パネルの使用
  • MQ ユーティリティー・プログラムCSQUTILの使用
  • キュー・マネージャーのデータ・セットへのアクセス

権限の付与
UNIXおよびWindows環境では、ユーザをmqmグループ(*1)に所属させることで、上記操作の実行権限が付与され、MQ管理者となります。
*1 mqmグループはMQを導入する際に必須となるグループです。
UNIXシステムでは、導入時にmqmグループとともにmqmユーザを定義し、MQ管理者とする必要があります。
Windowsシステムでは、Administratorsグループに所属しているユーザに操作権限が付与され、MQ管理者となります。

i5/OSおよびz/OS環境における権限付与の方法は

をご参照ください。


10.3   MQオブジェクトへのアクセス権限

MQでは、MQIを使用してMQオブジェクトにアクセスするアプリケーションに対して、キューマネージャー側で適切な権限が設定されているか確認します。
従って、アクセスを許可するアプリケーションには使用するMQIに対応した適切な権限を付与しておく必要があります。

MQのアクセス制御
MQのアクセス制御は、キューマネージャーの1コンポーネントであるオブジェクト権限マネージャー(OAM)が行います。
OAMは、アプリケーションに関連付けられたユーザ(アクセスユーザ)、もしくはそのユーザが所属するグループ(*1)に対して
MQIの処理権限が設定されているか確認します。
OAMでは、オブジェクト毎にどのユーザ/グループがどの処理権限を保持しているかという情報をアクセス制御リスト(ACL)として保持しています。

*1 UNIXシステムではグループでのアクセス制御のみ可能です。

なお、mqmグループには予め全ての権限が付与されているため、mqmグループに所属するユーザ(MQ管理者)は全てのMQI処理を実行可能です。


アクセスユーザ
OAMによる権限チェックの対象となるアクセスユーザは、通常、アプリケーションを起動したユーザになります。
クライアント・アプリケーションの場合、サーバ接続チャネルのMCAUSER属性にユーザIDが設定しているとそのユーザIDがアクセスユーザになります。


アクセス権限の設定
MQの制御コマンドsetmqaut を使用して、ACLの設定を行います。
※当コマンドは、MQの管理者によってキューマネージャー稼動時に実行する必要があります。

このコマンドでは、主に以下のオプションを指定して、オブジェクト毎のACLを作成/変更します。

-m キューマネージャー名 :対象のキューマネージャー名を指定
-n オブジェクト名(*2) :対象のオブジェクト名を指定(キューマネージャーを対象とする場合は省略)
-t オブジェクト・タイプ :オブジェクトのタイプ(qmgr、queue、channel、listenerなど)
-p ユーザID(*3) :ユーザID(-gでグループIDを指定するときは省略)
-g グループID :グループID(-pでユーザIDを指定するときは省略)
処理項目 :権限設定するMQIによる処理を指定

*2 オブジェクト名には、「?(疑問符)」や「*(アスタリスク)」のワイルドカードが使用できます。
  ?(疑問符):任意文字
  *(アスタリスク):任意1文字以上の文字列


*3 UNIXシステムでは、-p によるユーザIDの指定はできません。-g によるグループIDの指定のみ可能です。

処理項目は以下の文字列で指定します(複数指定可)。権限を付与する場合は文字列の前に「+」、削除する場合は「-」を付けます。

UNIX処理項目の以下の文字列


以下は、ユーザuser1に対し、キューマネージャーQM1のキューQ1への全てのMQI処理を許可する設定例です。
setmqaut -m QM1 -t queue -n Q1 -p user1 +allmqi

以下は、グループgroup1に対し、キューマネージャーQM1のキューQ2へのブラウズ権限とPUT権限を付与し、GET権限を削除する例です。
setmqaut -m QM1 -t queue -n Q2 -g group1 +browse -get +put

コマンドの詳細は下記をご参照ください。
http://publib.boulder.ibm.com/infocenter/wmqv7/v7r0/topic/com.ibm.mq.amqzag.doc/fa15980_.htm

設定確認
現在のACL設定を表示するコマンドとして、dspmqautおよびdmpmqautが提供されています。

10.4   MQチャネルのセキュリティ

MQのSSL、TLSサポート

MQではすべてのチャネル・タイプでSecure Sockets Layer(SSL)プロトコルとTransport Layer Security(TLS)プロトコルの両方をサポートしています。

※プラットフォーム毎にSSL/TLSサポートの前提ソフトウェアがあります。MQサポートページから各プラットフォーム別にご確認ください。

MQのSSL/TLSサポートでは、関連する以下のオプション機能もサポートしています。

  • SSLクライアント認証のサポート
    SSLハンドシェイク時のクライアント認証をサポートしています。
    接続を開始するチャネルがSSLクライアントとなります。
SSLクライアント認証のサポート*1 サーバーチャネルから接続を開始した場合は、サーバ・チャネルがSSLクライアントになります。
  • 識別名(DN)によるフィルタリング
    証明書のDNをもとに接続の許可/拒否を制御することができます。

  • 失効した証明書の検査
    OCSP(Online Certificate Status Protocol)を使用するか、LDAP(Lightweight Directory Access Protocol) サーバー上のCRL(*2)/ARL(*3)を使用して、証明書の有効性を検査することができます。
    ただし、z/OS、i5/OS、Java/JMSクライアントではLDAP上のCRL/ARLのみを使用することができ、OCSPは使用できません。

*2 CRL(証明書失効リスト):取り消された個人用証明書を公開
*3 ARL(権限失効リスト):取り消されたCA証明書を公開


i5/OSおよびz/OS では、オペレーティング・システムが暗号ハードウェアのサポートを提供します。

セットアップ概要

SSL/TLSを利用したチャネル接続を行うための主なセットアップ項目を以下に挙げます。
セットアップの詳細についてはInfoCenterのSSL 通信またはTLS 通信のセットアップをご参照ください。

  • 鍵リポジトリー
    SSLクライアント/サーバーの両側のシステムに証明書および秘密鍵を保管するため鍵リポジトリーを用意します。
    用意した鍵リポジトリーはキューマネージャーのSSLKEYR属性に指定します。
    MQクライアント・アプリケーションの場合は、MQSSLKEYR環境変数もしくはMQCONNXのオプションで指定します。

  • 個人用証明書
    SSLサーバー側のシステムに個人用の証明書を用意し鍵リポジトリーに追加します。
    SSLクライアント認証を行う場合には、SSLクライアント側にも必要になります。
    通常、個人用証明書は認証局(CA)から取得しますが、UNIX、Windows、z/OSでは、テスト用として自己署名個人用証明書を作成し使用することもできます。

  • 接続相手認証用のCA証明書
    SSLハンドシェイク時にSSLサーバー側から送付される個人用証明書を認証するため、SSLクライアント側の鍵リポジトリーにCA証明書を用意しておきます。
    SSLクライアント認証を行う場合には、SSLサーバー側にも必要です。
    接続相手が自己署名証明書を利用している場合は、相手側の自己署名証明書を用意します。

  • Cipher Specの指定
    送信側と受信側の両チャネルのSSLCIPH属性に同じCipher Spec(暗号アルゴリズムとハッシュ方式の組み合わせ)を指定します。サポートしているCipher SpecについてはInfoCenterのCipherSpec の取り扱いでご確認ください。

  • その他SSL関連の属性やオブジェクトの設定
    上記オプション機能の使用に応じて関連する属性/オブジェクトを設定します。