IBM Cloud Docs
キュー・マネージャー Advanced Message Security (AMS) の有効化

キュー・マネージャー Advanced Message Security (AMS) の有効化

IBM MQ Advanced Message Security とは

IBM® MQ Advanced Message Security は、IBM MQ セキュリティー・サービスを拡張して「メッセージ」レベルで暗号化を提供し、重要データ (高価値の金融機関トランザクションや個人情報など) を保護します。 IBM MQ AMS には、アプリケーション AMS およびキュー・マネージャー AMS という 2 つのアプローチがあります。 このチュートリアルでは、キュー・マネージャー AMS に焦点を当てます。

キュー・マネージャー AMS は、以下の機能を提供します。

  • 複雑なセキュリティー・コードを作成することも、既存アプリケーションの変更または再コンパイルを行うこともない、包括的なセキュリティー
  • メッセージの暗号化およびデジタル署名のサポート
  • メッセージの認証、許可、機密性、およびデータ保全性のサービスを提供する Public Key Infrastructure (PKI) テクノロジー

チュートリアルの概要

キュー・マネージャー AMS を使用して暗号化される、キュー・マネージャーのキューに保管されたメッセージを示すイメージ

図: キュー・マネージャー AMS は、キューに入ったメッセージ・データが取り出されるまでに変更されないことを確実化します。

このチュートリアルでは、ネットワークを介して平文のメッセージをキュー・マネージャーに渡します。 実動システムでは、転送中のメッセージを保護するために TLS 対応チャネルを使用することをお勧めします。

このチュートリアルでは、IBM Cloud キュー・マネージャーの IBM MQ キューでの暗号化のためにキュー・マネージャー AMS を構成する手順について説明します。 まず、平文のメッセージを put して get し、メッセージが平文としてキューに置かれることを確認します。 次に、キュー・マネージャー AMS 暗号化を有効にして、キューのメッセージが確実に暗号化されるようにします。 その後、キューのメッセージが暗号化され、無許可のユーザーまたはアプリケーションがメッセージ・データにアクセスしたり変更したりできないようになります。

前提条件

このチュートリアルを進めるには、以下の前提条件を満たしていることが重要です。

  1. IBM MQ on Cloud キュー・マネージャー

    IBM MQ on Cloud キュー・マネージャーがまだない場合は、以下のガイド付きツアーに従って作成できます。

    IBM MQ on Cloud の概説

    • : キュー・マネージャーでは、まだ TLS が有効になっていません

    ガイド・ツアー、または同じページに記載されている手動ステップに従って、以下のものを用意している必要があります。

    • MQ on Cloud キュー・マネージャー
    • connection_info.txt ファイルとしてダウンロードされた接続の詳細
      • このファイルがない場合は、このチュートリアルの最後にある付録 1 を参照してください。
    • platformApiKey.json ファイルとしてダウンロードされた管理ユーザー名と API キー
      • このファイルがない場合は、このチュートリアルの最後にある付録 2 を参照してください。
    • apiKey.json ファイルにダウンロードされたアプリケーション・ユーザー名と API キー
      • このファイルがない場合は、このチュートリアルの最後にある付録 3 を参照してください。
  2. IBM MQ Client

    このチュートリアルを完了するには、IBM MQ コマンド・ライン・ツール「runmqsc」と IBM MQ サンプル・アプリケーション「amqsputc」および「amqsgetc」が PATH にインストールされている必要があります。 これらのコマンドがない場合は、IBM MQ Client をインストールすることによって入手できます。 このチュートリアルの最後にある付録 4 では、これを行う方法を詳しく説明しています。

    • : IBM MQ Client は、Windows および Linux でのみ使用可能です。

端末環境のセットアップ

  1. 2 つの端末ウィンドウを開きます。

    • 1 つの端末は、キュー・マネージャーの管理に使用される管理端末になります。
    • もう 1 つの端末は、キュー・マネージャーに接続し、メッセージの「put」および「get」操作を実行するアプリケーションを表すアプリ端末になります。
  2. 管理端末でキュー・マネージャーの詳細を指定します。

    後で使用する runmqsc コマンドのために、接続先のリモート・キュー・マネージャーを識別するように環境変数を設定することが必要になります。 管理端末で、次のコマンドを使用して、MQSERVER 変数をエクスポートします。

    • export MQSERVER="CLOUD.ADMIN.SVRCONN/TCP/<HOSTNAME>(<PORT>)"
      • <HOSTNAME> - これは connection_info.txt ファイル内の「hostname」です。
      • <PORT> - これは connection_info.txt ファイル内の「listenerPort」です。
  3. アプリ端末でキュー・マネージャーの詳細を指定します。

    後で使用する amqsputc コマンドおよび amqsgetc コマンドのためにも、接続先のリモート・キュー・マネージャーを識別するように環境変数を設定することが必要になります。 アプリ端末で以下のコマンドを使用して、MQSERVER 変数をエクスポートします。 アプリ端末で以下のコマンドを使用して、MQSERVER 変数をエクスポートします。

    • export MQSERVER="CLOUD.APP.SVRCONN/TCP/<HOSTNAME>(<PORT>)"
      • <HOSTNAME> - これは connection_info.txt ファイル内の「hostname」です。
      • <PORT> - これは connection_info.txt ファイル内の「listenerPort」です。
  4. アプリ・ユーザー名を指定します。

    amqsputc コマンドおよび amqsgetc コマンドのために、使用する特定のユーザー名を環境変数に設定することも必要になります。 アプリ端末で、次のコマンドを使用して、MQSAMP_USER_ID 変数をエクスポートします。

    • export MQSAMP_USER_ID="<APP_MQ_USER>"
      • <APP_MQ_USER> - これは apiKey.json ファイル内の「mqUsername」です。
  5. アプリ端末のアプリケーション AMS を無効にします。

    このチュートリアルでは、キュー・マネージャー AMS を有効にします。 したがって、アプリケーション AMS (クライアント AMS と呼ばれることもある) を無効にして、キュー・マネージャーのみが AMS の暗号化と復号を実行し、クライアントは実行しないようにする必要があります。 アプリ端末で以下を実行します。

    • IBM MQ Client 7.5:
      • export AMQ_DISABLE_CLIENT_AMS=TRUE
    • IBM MQ Client 8.0 以降:
      • export MQS_DISABLE_ALL_INTERCEPT=TRUE

デフォルト・キューをターゲットとする別名キューの作成

このセクションでは、デフォルト・キューをターゲットとする別名キューを作成します。 QM AMS が有効になると、デフォルト・キューで「put」または「get」が実行されたときに AMS インターセプターが起動します。 したがって、メッセージは、キューでは暗号化される一方、取得時には平文として読み取り可能になります。 メッセージが暗号化されていることを示すために、別名キューを使用できます。 別名キューを介してメッセージを取得すると、デフォルト・キューによってインターセプターがトリガーされず、メッセージは復号されずにそのまま取得されるため、メッセージが平文であるか暗号化されているかを正確に把握できます。

  1. 管理端末に切り替えます。
  2. runmqsc を実行して、リモート・キュー・マネージャーに接続します。
  • runmqsc -c -u <ADMIN_MQ_USER> -w60 <QUEUE_MANAGER_NAME>
    • <ADMIN_MQ_USER> - これは platformApiKey.json ファイル内の「mqUsername」です。
    • <QUEUE_MANAGER_NAME> - これは connection_info.txt ファイル内の「queueManagerName」です。
    • -c は、MQSERVER 変数を使用してリモート・キュー・マネージャーに接続するように runmqsc に通知します。
  1. 端末でパスワードの入力が求められます。
    • これは platformApiKey.json ファイル内の <ADMIN_API_KEY> = 'apiKey' です。
  2. 端末は入力待ちになります。
  3. デフォルト・キューをターゲットとする別名キューを作成します。
  • DEFINE QALIAS (DEV.ALIAS.QUEUE.1) TARGET (DEV.QUEUE.1)
    • DEV.ALIAS.QUEUE.1 は別名キューの名前です。
    • DEV.QUEUE.1 は、このチュートリアルで使用するデフォルト・キューです。

「runmqsc」、その後のパスワード入力、およびデフォルト・キューをターゲットとする別名キューを作成する「DEFINE QALIAS」コマンドを示すイメージ

キュー・マネージャー AMS を有効にする前の別名キューのテスト

別名キューが正しく機能し、メッセージが現在平文でデフォルト・キューにあることを示すために、デフォルト・キューに対してメッセージの「put」を実行し、別名キューに対してメッセージの「get」を実行します。

  1. アプリ端末に切り替えます。
  2. amqsputc を実行して、デフォルト・キューにメッセージを入れます。
    • amqsputc DEV.QUEUE.1
  3. 端末でパスワードの入力が求められます。
    • これは apiKey.json ファイル内の <APP_API_KEY> = 'apiKey' です。
  4. 端末は入力待ちになります。 メッセージを入力してください。
    • Enter キーを 2 回押して amqsputc を終了します「amqsputc」、その後のパスワード入力、およびデフォルト・キューのメッセージ入力を示すイメージ
  5. 別名キューに対して amqsgetc を実行し、デフォルト・キューからメッセージを取得します。
    • amqsgetc DEV.ALIAS.QUEUE.1
    • DEV.ALIAS.QUEUE.1 は別名キューの名前です。
  6. 端末でパスワードの入力が求められます。
    • これは apiKey.json ファイル内の <APP_API_KEY> = 'apiKey' です。
  7. 端末にデフォルト・キューからのメッセージが出力されます。

「amqsgetc」、その後のパスワード入力、およびデフォルト・キューをターゲットとする別名キューでのメッセージの取得を示すイメージ

  • メッセージが平文で返されることに注意してください。これは、デフォルト・キューではメッセージが平文で保管されるためです。

AMS 暗号化に使用する証明書の選択

メッセージを暗号化するようにキュー・マネージャー・チャネルを構成する必要があります。 MQ on Cloud には、Let's Encrypt によって提供されるデフォルトの証明書が付属しており、これを使用してメッセージを暗号化します。 キュー・マネージャー AMS のキュー・マネージャー・チャネルを構成するには、以下のステップに従います。

  1. IBM Cloud (http://Cloud.IBM.com/) で、ガイド付きツアーの一環として作成した IBM MQ on Cloud キュー・マネージャーを見つけます。 キュー・マネージャーのリストを示すイメージ
  2. **「鍵ストア」**タブを選択します。キュー・マネージャーの「鍵ストア」タブを示すイメージ
  3. デフォルトの証明書の 3 点メニューをクリックします。鍵ストアのデフォルトの証明書の 3 点メニューを示すイメージ
  4. **「管理」**をクリックします。鍵ストアのデフォルトの証明書の「管理」タブを示すイメージ
  5. **「この証明書をキュー・マネージャー AMS 用に使用」**を有効にします。キュー・マネージャー AMS のデフォルトの証明書を有効にするトグルを示すイメージ
  6. アプリ・チャネル CLOUD.APP.SVRCONN を選択します。AMS 対応のデフォルトの証明書の「チャネルの選択」を示すイメージAMS 対応になるように選択されたデフォルトのアプリ・チャネルを示すイメージ
  7. **「次へ」**をクリックします。AMS 対応のデフォルトの証明書用に選択された 1 つのチャネルを示すイメージ
  8. 警告を読み、**「了解」をクリックし、「保存」**をクリックします。証明書を使用する既存のチャネルが上書きされることを受け入れるチェック・ボックスを示すイメージこれで、暗号化に使用するために選択したチャネルおよび証明書のキュー・マネージャー AMS が有効になりました。AMS シンボルが有効になっていることを示すイメージ
  9. **「詳細のコピー」**をクリックして、任意のテキスト・エディターに貼り付けます。 後で DN フィールドの内容が必要になるため、これを default_cert.txt として保存します。 AMS シンボルが有効になっていることを示すイメージ

AMS 暗号化を有効にするポリシーの作成

ここでは、AMS を有効にするために、個々のキューでセキュリティー・ポリシーを構成します。 暗号化を実行するが署名は実行しないことを指定します。 関連するキューにセキュリティー・ポリシーが構成されるまで、暗号化や署名は行われません。

  1. 管理端末で以下を実行します。
  2. この端末が runmqsc 内のままである必要があります。 そうでない場合は、上記のように、キュー・マネージャーに対して runmqsc を実行します。
  3. 以下のコマンドを使用して、ポリシーを作成します。
  • SET POLICY (DEV.QUEUE.1) ENCALG (AES256) RECIP ('<SUBJECT_DN>')
    • DEV.QUEUE.1 は、このチュートリアルで使用するデフォルト・キューです。
    • AES256: このチュートリアルで使用する暗号化です。 その他のアルゴリズムについては、こちらを参照してください。
    • <SUBJECT_DN> - これは、*「証明書の選択」*の最後のステップで作成される default_cert.txt ファイル内の「Subject DN」です。
    • 備考。 Subject DN を囲む単一引用符必須です。
  1. 以下のように入力して、runmqsc を終了します。
    • END

コマンド・ラインに入力された、ポリシーを設定するコマンドを示すイメージ

キュー・マネージャー AMS が有効になった時点でのキューのテスト

  1. アプリ端末内で、以下を行います。
  2. amqsputc を実行して、デフォルト・キューにメッセージを入れます。
    • amqsputc DEV.QUEUE.1
  3. 端末でパスワードの入力が求められます。
    • これは apiKey.json ファイル内の <APP_API_KEY> = 'apiKey' です。
  4. 端末は入力待ちになります。 メッセージを入力してください。
    • Enter キーを 2 回押して amqsputc を終了します
  5. 別名キューに対して amqsgetc を実行し、デフォルト・キューからメッセージを取得します。
    • amqsgetc DEV.ALIAS.QUEUE.1
    • DEV.ALIAS.QUEUE.1 は別名キューの名前です。
  6. 端末でパスワードの入力が求められます。
    • これは apiKey.json ファイル内の <APP_API_KEY> = 'apiKey' です。
  7. 端末にデフォルト・キューからの暗号化されたメッセージが出力されます。

このセクションで実行するステップ (デフォルト・キューの暗号化されたメッセージを表示する別名キューの amqsgetc からの出力など) を示すイメージ

  • 注: メッセージは平文で表示されません。 これは、メッセージがデフォルト・キューで暗号化されるためです。

結論

これで、このチュートリアルは完了です。 キューの IBM MQ AMS を有効にし、これによって、指定されたキューに保管されているメッセージが暗号化されることを確認しました。

トラブルシューティング

エラー・コード 2063 の発生を示すイメージ

  • amqsputc が理由コード 2035 を返す
    • これは、export MQS_DISABLE_ALL_INTERCEPT=TRUE を実行していない場合に発生することがあります。
    • 端末環境のセットアップの最後のステップ

エラー・コード 2035 の発生を示すイメージ

付録

付録 1: connection_info.txt

キュー・マネージャー接続の詳細を含む connection_info.txt ファイルを取得するには、次のようにします。

  1. 表に示されている関連サービスをクリックして、IBM Cloud サービス・インスタンスにログインします。サービス・インスタンスを示すイメージ
  2. これにより、「キュー・マネージャー」ビューが開きます。 接続情報の取得元となるキュー・マネージャーを選択します。キュー・マネージャーのリストを示すイメージ
  3. 「接続情報」をクリックします。キュー・マネージャー接続情報のイメージ
  4. このファイルを「JSON テキスト形式」でダウンロードします。

付録 2: platformApiKey.json

管理者 API キーを作成またはリセットするには、以下のようにします。

  1. 表に示されている関連サービスをクリックして、IBM Cloud サービス・インスタンスにログインします。サービス・インスタンスを示すイメージ
  2. これにより、「キュー・マネージャー」ビューが開きます。 接続情報の取得元となるキュー・マネージャーを選択します。キュー・マネージャーのリストを示すイメージ
  3. 次に、**「管理」**タブを選択します。キュー・マネージャーの「管理」タブが強調表示されているイメージ
  4. ここで、**「IBM Cloud API キーの再設定」**をクリックします。
  • 注: この MQ ユーザー名の以前の管理 API キーは無効になります

管理 API キー・リセット・ボタンが強調表示されているイメージ

  • 注: ボタンに **「IBM Cloud API キーの作成」**と表示されている場合は、以前にこの方法で API キーが作成されていません。 **「IBM Cloud API キーの作成」**ボタンをクリックします。
  1. **「ダウンロード」**をクリックして、管理ユーザー名と API キーが含まれた platformApiKey.json をダウンロードします。新しい管理 API キーの「ダウンロード」ボタンが強調表示されているイメージ

付録 3: apiKey.json

新規のアプリケーション API キーを作成するには、以下のようにします。

  1. 表に示されている関連サービスをクリックして、IBM Cloud サービス・インスタンスにログインします。サービス・インスタンスを示すイメージ
  2. これにより、「キュー・マネージャー」ビューが開きます。 **「アプリケーション資格情報」**タブを選択します。アプリケーション権限が丸で囲まれたキュー・マネージャーのリストを示すイメージ
  3. 次に、AMS チュートリアルで使用するアプリケーションの横にある 3 点メニューをクリックします。現在設定されているアプリケーション権限のリストを示すイメージ
  4. **「新規 API キーの追加」**をクリックします。
  • 備考。 既存のアプリ API キーは引き続き機能します。

丸で囲まれた、アプリケーションに対する「新規 API キーの追加」を示すイメージ5. **「ダウンロード」**をクリックして、アプリ・ユーザー名と API キーを含む apiKey.json をダウンロードします。アプリの新規 API キーが強調表示された「ダウンロード」ボタンを示すイメージ

付録 4: IBM MQ C クライアント

IBM MQ Client コマンド・ライン・ツールおよびサンプル (runmqsc、amqsputc、amqsgetc) がない場合は、ここからダウンロードできます。

  1. 次に示す最新のパッケージを選択します。本書の作成時点での最新バージョンは 9.0.5 です。IBM MQ クライアント・バージョンを示すイメージ
  2. 以下に示すように、パッケージの左側にあるボックスにチェック・マークを付けて、「IBM MQC redistributable client for [Your Operating System]」を選択します。 ファイル名には Redist が含まれているはずです。 このチュートリアルは、 Linux Ubuntu オペレーティング・システムを使用して作成されています。オペレーティング・システムと互換性のある再配布可能 MQ C クライアントの選択を示しているイメージ
  3. HTTPS 経由でダウンロードすることを選択します。これにより、次のように、ブラウザーから直接クライアントをダウンロードできます。いくつかのダウンロード・オプションの中から HTTPS が選択されているイメージ
    • : このオプションが表示されていない場合は、別のブラウザーでお試しください。
  4. 「続行」をクリックすると、 次に示す画面にリダイレクトされます。 赤い円で示したシンボルをクリックして、ダウンロードを開始します。赤い円で示されたイメージをクリック
  5. ダウンロードしたら、任意のディレクトリー <PATH_TO_MQCLIENT_DIR> にファイルを解凍します。
    • tar -xvzf <IBM-MQC-Redist>.tar.gz <PATH_TO_MQCLIENT_DIR>
  6. パスにコマンドを追加します。
    • export PATH=$PATH:<PATH_TO_MQCLIENT_DIR>/bin:<PATH_TO_MQCLIENT_DIR>/samp/bin