セキュリティ
IBM MQ on Cloud で提供されているセキュリティー機能について説明します。
デフォルトのセキュリティー機能
- MQ チャネルには、アプリケーションおよび管理者からの転送データを TLS 接続を使用して暗号化するオプションがあります。 TLS 機能を有効にするには、お客様がいくつかの構成を適用する必要があります。
- キュー・マネージャーには、Let's Encrypt などの公的な認証局によって署名されたデフォルトの TLS サーバー証明書が構成されます。
- キュー・マネージャー・チャネルには、ユーザー名/パスワードによる認証がデフォルトで構成されます。この認証は、IBM Cloud® Identity and Access Management (IAM) サービスによるユーザーとアプリケーションの管理を基礎としています。
- キュー・マネージャーの永続データ (メッセージ、構成、ログなど) はすべて、ストレージ・ボリュームのフルディスク暗号化によって暗号化された状態で保存されます。
- IBM MQ には、キュー・マネージャー内のキュー/トピックなどの特定のリソースに対するアクセスをきめ細かく制御するための拡張機能が用意されており、お客様のオンプレミスのデプロイ環境と同じように利用できます。
デフォルトの MQ セキュリティー構成
ユーザー
サービス・インスタンス内のキュー・マネージャーに対する管理アクセス権限を付与するには、こちらの手順に従って、ユーザーを「ユーザー許可 (User permissions)」リストに追加する必要があります。
管理アクセス権限を持つユーザーは、任意の MQ 構成の表示と変更、およびメッセージ・データに対する書き込みとアクセスを行えます。 このような理由から、管理アクセス権限は可能な限り制限する必要があります。
ユーザーに許可を与えると、そのユーザーは、そのサービス・インスタンス内の各キュー・マネージャーの mqm
グループのメンバーになります。
デフォルトでは、MQ の「BLOCKUSER」規則が定義されているため、mqm
グループのメンバーは、CLOUD.ADMIN.SVRCONN
チャネルを使用してのみキュー・マネージャーに接続できます。 他のチャネルを使用して接続するには、 ここで説明されているように認証レコードを追加する必要があります。
アプリケーション
サービス・インスタンス内の任意のキュー・マネージャーにアプリケーションが接続して対話できるようにするには、まずは、こちらの手順に従ってアプリケーションを「アプリケーション許可 (Application permissions)」リストに追加する必要があります。
アプリケーション許可の作成時に生成される MQ ユーザー名と API キーを、アプリケーションを MQ に接続するときにユーザー名とパスワードとして使用します。 デフォルトでは、追加した各アプリケーションが以下の権限を持ちます。
- キュー・マネージャーに接続する (接続権限または照会権限を使用)。
- 「DEV.」で始まるキューおよびトピック (例えばキュー・マネージャーで確認できる事前定義されたもの) のメッセージを書き込む、取得する、表示する。
デフォルトでは、MQ の「BLOCKUSER」規則が定義されているため、アプリケーションは、CLOUD.APP.SVRCONN
チャネルを使用してのみキュー・マネージャーに接続できます。 他のチャネルを使用して接続するには、 ここで説明されているように認証レコードを追加する必要があります。
キューおよびトピックの新規作成
アプリケーションで使用する新規のキューまたはトピックを定義した場合、デフォルトでは、それらにアクセスする権限はアプリケーションにありません。 まずは、新規リソースに対するアクセス権限をアプリケーションに付与するための権限レコードを作成する必要があります。 これを行うには、アプリケーション許可を定義したときに生成された MQ ユーザー名を、権限レコードの作成時に使用します。
権限レコードの作成について詳しくは、以下の トピック を参照してください。
クライアント・アプリケーションの接続
バージョン 8.0.0.0 より前の IBM MQ クライアント・ライブラリーを使用して接続するクライアント・アプリケーションは、キュー・マネージャーにユーザー資格情報を提供できないため、接続できません。
Java アプリケーションおよび JMS アプリケーションは、2 つの異なる方法でキュー・マネージャーに資格情報を提供します。この 2 つの方法はcompatibility mode
というスイッチで制御されます。 Java アプリケーションまたは JMS アプリケーションを接続するときには、互換モードを無効にしてユーザー資格情報を提供する必要があります。 クライアント・アプリケーションの構成について詳しくは、ここに記載されているステップを参照してください。
MQ の詳細
MQ 9.2.2r1 のリリース (2021 年 3 月の25th ) 以降、デプロイされたキュー・マネージャーでは、事前定義チャネルで TLS がデフォルトで有効になります。 9.2.2r1より前のバージョンでデプロイされ、 9.2.2r1 以上のバージョンにアップグレードされたキュー・マネージャーでは、デフォルトで TLS が有効になりません。 セキュリティーをさらに向上させるために、すべてのチャネルで有効にすることを強くお勧めします。
デフォルトで、次の 2 つのチャネルが用意されます。
CLOUD.ADMIN.SVRCONN
- 管理者ユーザー用。例えば MQ エクスプローラーや runmqsc を使用して接続する場合に使用するCLOUD.APP.SVRCONN
- アプリケーションが接続してメッセージを送受信するためのもの
どちらのチャネルも、デフォルトで TLS を使用するように構成されています。 MQ クライアント・アプリケーションおよび管理ツール (runmqsc、MQ エクスプローラー) がキュー・マネージャーに接続できるようにするには、追加の構成を行う必要があります。
すべてのユーザー定義チャネルで TLS が使用されるように構成することをお勧めします。そのためには、SSLCAUTH
プロパティーを Optional
に設定し、SSLCIPH
プロパティーを有効な MQ 暗号仕様 (例: ANY_TLS12_OR_HIGHER
) に設定します。
以下の MQSC を使用する 2 つの例では、TLS を使用するように構成されるチャネルの定義と変更の両方を示しています。
DEFINE CHANNEL('EXAMPLE.APP.SVRCONN') CHLTYPE(SVRCONN) SSLCAUTH(OPTIONAL) SSLCIPH(ANY_TLS12_OR_HIGHER) SSLCAUTH(OPTIONAL) SSLCIPH(ANY_TLS12_OR_HIGHER)
...
ALTER CHL('EXAMPLE.ADMIN.SVRCONN') CHLTYPE(SVRCONN) SSLCIPH(ANY_TLS12_OR_HIGHER) SSLCAUTH(REQUIRED)`
デフォルトでは、この 2 つの事前定義チャネルへの着信接続はブロックされます。アクセスできるようにするには、『ユーザー』または『アプリケーション』に記載している手順に従ってください。
上記の 2 つの名前以外のチャネルに対する着信接続要求は、デフォルトの「ADDRESSMAP」規則によってブロックされます。 つまり、独自の MQ チャネル (例えば、別のキュー・マネージャーからの着信接続を受け入れるためのチャネル) を定義する場合、その新しいチャネルへの接続はデフォルトでブロックされるため、その新しいチャネルへの特定の接続を許可する規則を定義する必要があるということになります。
MQ の詳細な許可の構成について詳しくは、 IBM Knowledge Center の以下の トピック を参照してください。
推奨事項
アプリケーションとキュー・マネージャーの間で転送される資格情報とビジネス・データを保護するために、管理接続およびアプリケーション接続に TLS チャネルを使用することを強くお勧めします。 チャネルに TLS を構成する方法について詳しくは、このトピックを参照してください。
高水準の機密データ保護を提供する Advanced Message Security (AMS) 機能を、アプリケーションまたはキュー・マネージャーで使用できます。 アプリケーションとキュー・マネージャーの間、およびシステム全体の機密データの転送を完全に保護するために、アプリケーションで AMS を使用して機密データを暗号化することを強くお勧めします。 クライアント・アプリケーション用の AMS の構成について詳しくは、以下のトピックを参照してください。
キュー・マネージャーのソース IP アドレスは動的であり、キュー・マネージャーが再始動されたり別のホストにフェイルオーバーしたりすると変わります。 ソース IP アドレスは複数のキュー・マネージャーで共有されるため、受信側チャネルで着信接続を認証するための唯一のメカニズムとして使用しないでください。
転送中のデータの保護
MQ on Cloud キュー・マネージャー内の事前定義された管理チャネルおよびアプリケーション・チャネルは、デフォルトで TLS セキュリティーを使用して構成されます。 TLS を有効にすると、管理接続またはアプリケーション接続で会話が暗号化することになるため、機密データと資格情報が保護されます。 以下の資料では、チャネルに TLS がない場合に TLS を有効にする方法と、リモート管理接続およびアプリケーション接続を保護する方法について説明します。
MQ on Cloud における MQ チャネルでの TLS セキュリティーの有効化
前述のように、 MQ バージョン 9.2.2r1 (以上) で作成されたキュー・マネージャーの事前定義チャネルでは、デフォルトで TLS が有効になります。 ただし、 9.2.2r1より前のバージョンでデプロイされ、 9.2.2r1 以上のバージョンにアップグレードされたキュー・マネージャーでは、デフォルトで TLS が有効になりません。 以下の資料では、TLS が設定されていないチャネルで TLS を有効にする方法と、トラステッド鍵ストア・ファイルを作成する方法について説明します。
キュー・マネージャー管理オプション
以下のリンクは、標準の管理ツールを使用して MQ on Cloud キュー・マネージャーを構成および管理する方法についての参照情報を提供します。 希望するツールを選択し、この資料の指示に従ってください。
IBM MQ Web コンソールや IBM MQ エクスプローラーを使用して、または IBM MQ クライアントから runmqsc を使用して、キュー・マネージャーを管理できます。
IBM Web コンソールは、キュー・マネージャーと共に「すぐに使用できる」状態で提供されています。他方、IBM MQ エクスプローラーや IBM MQ クライアントを使用する場合には追加のセットアップが必要です。
リモート管理の保護
必要なチャネルで TLS セキュリティーを構成した後、接続を適切に確立する必要があります。 これは、以下の 2 つの方法で行うことができます。
C MQI プログラムおよび JMS プログラムでのアプリケーション接続
「C MQI」アプリケーションおよび「JMS」アプリケーションを使用して MQ on Cloud キュー・マネージャーに安全に接続するには、以下の資料を参照してください。
クライアントとキュー・マネージャーの間の TLS の有効化
キュー・マネージャーで TLS セキュリティーが有効になっていない場合は、キュー・マネージャーを正しく構成する方法について以下の資料を参照してください。 このウォークスルーでは、「匿名」の片方向 TLS 接続と「相互」の両方向接続がカバーされます。
Advanced Message Security (AMS)
以下の資料では、キュー・マネージャーの Advanced Message Security と、それを有効にする方法、およびアプリケーションの Advanced Message Security について説明します。
AMS を適用するキュー・マネージャーでは、TLS が既に有効になっていてはなりません。
キュー・マネージャーの TLS セキュリティーのリフレッシュ
キュー・マネージャーの鍵ストアまたはトラストストアに対して変更が行われた場合は、TLS セキュリティーのリフレッシュが必要です。そうしないと、変更は有効になりません。 以下の資料は、このプロセスについて説明しています。