次の方法で共有


トランスポート セキュリティを使用したメッセージのセキュリティ保護

このセクションでは、キューに送信されたメッセージをセキュリティで保護するために使用できるメッセージ キュー (MSMQ) トランスポート セキュリティについて説明します。

このトピックを読む前に、 セキュリティの概念を読むことをお勧めします。

次の図は、Windows Communication Foundation (WCF) を使用したキュー通信の概念モデルを示しています。 この図と用語は、トランスポート セキュリティの概念を説明するために使用されます。

キューに登録されたアプリケーション ダイアグラム

NetMsmqBindingで WCF を使用してキューに登録されたメッセージを送信する場合、WCF メッセージは MSMQ メッセージの本文として添付されます。 トランスポート セキュリティは、MSMQ メッセージ全体 (MSMQ メッセージ ヘッダーまたはプロパティとメッセージ本文) をセキュリティで保護します。 MSMQ メッセージの本文であるため、トランスポート セキュリティを使用すると、WCF メッセージもセキュリティで保護されます。

トランスポート セキュリティの背後にある重要な概念は、クライアントがターゲット キューにメッセージを取得するためにセキュリティ要件を満たす必要があるということです。 これはメッセージ セキュリティとは異なり、メッセージを受信するアプリケーションに対してメッセージがセキュリティで保護されます。

NetMsmqBindingMsmqIntegrationBindingを使用したトランスポート セキュリティは、MSMQ メッセージが伝送キューとターゲット キューの間で転送中にセキュリティで保護される方法に影響します。この場合、セキュリティで保護されたメッセージは次のことを意味します。

  • メッセージに署名して、改ざんされないようにします。

  • メッセージを暗号化して、メッセージを表示または改ざんできないようにします。 これは推奨されますが、省略可能です。

  • 否認不可のメッセージの送信者を識別するターゲット キュー マネージャー。

MSMQ では、認証とは無関係に、ターゲット キューにアクセス制御リスト (ACL) があり、クライアントがターゲット キューにメッセージを送信するアクセス許可を持っているかどうかを確認します。 受信側アプリケーションは、ターゲット キューからメッセージを受信するアクセス許可もチェックされます。

WCF MSMQ トランスポート セキュリティ プロパティ

MSMQ では、認証に Windows セキュリティが使用されます。 Windows セキュリティ識別子 (SID) を使用してクライアントを識別し、クライアントの認証時に証明機関として Active Directory ディレクトリ サービスを使用します。 そのためには、MSMQ を Active Directory 統合と共にインストールする必要があります。 Windows ドメイン SID はクライアントを識別するために使用されるため、このセキュリティ オプションは、クライアントとサービスの両方が同じ Windows ドメインの一部である場合にのみ意味があります。

MSMQ には、Active Directory に登録されていないメッセージを証明書に添付する機能も用意されています。 この場合、添付された証明書を使用してメッセージが署名されたことを確認します。

WCF には、MSMQ トランスポート セキュリティの一部としてこれらのオプションの両方が用意されており、これらはトランスポート セキュリティの重要なピボットです。

既定では、トランスポート セキュリティが有効になっています。

これらの基本を考えると、次のセクションでは、 NetMsmqBindingMsmqIntegrationBindingにバンドルされているトランスポート セキュリティ プロパティについて詳しく説明します。

MSMQ 認証モード

MsmqAuthenticationModeでは、Windows ドメイン セキュリティと外部証明書ベースのセキュリティのどちらを使用してメッセージをセキュリティで保護するかを指定します。 どちらの認証モードでも、WCF キューに登録されたトランスポート チャネルは、サービス構成で指定された CertificateValidationMode を使用します。 証明書検証モードでは、証明書の有効性を確認するために使用されるメカニズムを指定します。

トランスポート セキュリティが有効になっている場合、既定の設定は WindowsDomain

Windows ドメイン認証モード

Windows セキュリティを使用する選択には、Active Directory 統合が必要です。 WindowsDomain は既定のトランスポート セキュリティ モードです。 これを設定すると、WCF チャネルは Windows SID を MSMQ メッセージにアタッチし、Active Directory から取得した内部証明書を使用します。 MSMQ では、この内部証明書を使用してメッセージをセキュリティで保護します。 受信側キュー マネージャーは、Active Directory を使用して、クライアントを認証するために一致する証明書を検索して検索し、SID がクライアントの証明書とも一致することを確認します。 この認証手順は、 WindowsDomain 認証モードの場合に内部で生成された証明書、または Certificate 認証モードの場合に外部で生成された証明書が、ターゲット キューに認証が必要とマークされていない場合でもメッセージにアタッチされている場合に実行されます。

キューを作成するときに、キューを認証済みキューとしてマークして、キューにメッセージを送信するクライアントの認証が必要であることを示すことができます。 これにより、認証されていないメッセージがキューで受け入れられないことが保証されます。

メッセージと共にアタッチされた SID は、クライアントがキューにメッセージを送信する権限を持っていることを確認するために、ターゲット キューの ACL に対するチェックにも使用されます。

証明書認証モード

証明書認証モードを使用する選択では、Active Directory 統合は必要ありません。 実際には、MSMQ がワークグループ モード (Active Directory 統合なし) でインストールされている場合や、SOAP Reliable Messaging Protocol (SRMP) 転送プロトコルを使用してキューにメッセージを送信する場合など、 Certificate のみが機能します。

Certificateを使用して WCF メッセージを送信する場合、WCF チャネルは MSMQ メッセージに Windows SID をアタッチしません。 そのため、ターゲット キュー ACL では、 Anonymous ユーザー アクセスがキューに送信できるようにする必要があります。 受信側キュー・マネージャーは、MSMQ メッセージが証明書で署名されたが、認証を実行していないかどうかを確認します。

要求と ID 情報を含む証明書は、WCF キューに登録されたトランスポート チャネルによって ServiceSecurityContext に設定されます。 サービスはこの情報を使用して、送信者の独自の認証を実行できます。

MSMQ 保護レベル

保護レベルでは、MSMQ メッセージを保護して改ざんされないようにする方法が決まります。 MsmqProtectionLevel プロパティで指定します。 既定値は Sign です。

署名の保護レベル

MSMQ メッセージは、 WindowsDomain 認証モードを使用する場合は内部で生成された証明書を使用して署名され、認証モードを使用する場合は外部で生成された証明書 Certificate 署名されます。

署名と暗号化の保護レベル

MSMQ メッセージは、 WindowsDomain 認証モードを使用する場合は内部で生成された証明書を使用して署名され、認証モードを使用する場合は外部で生成された証明書 Certificate 署名されます。

メッセージの署名に加えて、MSMQ メッセージは、ターゲット キューをホストする受信キュー マネージャーに属する Active Directory から取得した証明書の公開キーを使用して暗号化されます。 送信側キュー・マネージャーは、MSMQ メッセージが転送中に暗号化されることを保証します。 受信側キュー・マネージャーは、内部証明書の秘密キーを使用して MSMQ メッセージの暗号化を解除し、メッセージをキューに (認証および承認されている場合) クリア・テキストで保管します。

メッセージを暗号化するには、Active Directory アクセスが必要であり (UseActiveDirectoryのプロパティNetMsmqBindingtrueに設定する必要があります)、CertificateWindowsDomainの両方で使用できます。

保護レベルなし

これは、 MsmqProtectionLevelNone に設定されている場合に暗黙的に指定されます。 これは、他の認証モードで有効な値にすることはできません。

MSMQ メッセージが署名されている場合、MSMQ は、キューの状態 (つまり、認証済みキュー) とは無関係に、添付証明書 (内部または外部) でメッセージが署名されているかどうかを確認します。

MSMQ 暗号化アルゴリズム

暗号化アルゴリズムは、ネットワーク上の MSMQ メッセージの暗号化に使用するアルゴリズムを指定します。 このプロパティは、 MsmqProtectionLevelEncryptAndSign に設定されている場合にのみ使用されます。

サポートされているアルゴリズムは RC4Stream され、 AES され、既定値は RC4Stream

AES アルゴリズムは、送信側に MSMQ 4.0 がインストールされている場合にのみ使用できます。 さらに、ターゲット キューも MSMQ 4.0 でホストされている必要があります。

MSMQ ハッシュ アルゴリズム

ハッシュ アルゴリズムは、MSMQ メッセージのデジタル署名の作成に使用されるアルゴリズムを指定します。 受信側キュー・マネージャーは、この同じアルゴリズムを使用して MSMQ メッセージを認証します。 このプロパティは、 MsmqProtectionLevelSign または EncryptAndSign に設定されている場合にのみ使用されます。

サポートされているアルゴリズムは、 MD5SHA1SHA256、および SHA512です。 既定値は SHA1です。

MD5/SHA1 の競合の問題のため、Microsoft では SHA256 以上をお勧めします。

こちらも参照ください