SQL Server は、Service Broker ダイアログ セキュリティに関連する監査メッセージを報告する Audit Broker Conversation イベントを作成します。
Audit Broker Conversation イベント クラスのデータ列
| データ列 | タイプ | 説明 | 列番号 | フィルターの適用 |
|---|---|---|---|---|
| ApplicationName | nvarchar | SQL Server のインスタンスへの接続を作成したクライアント アプリケーションの名前。 この列には、プログラムの表示名ではなく、アプリケーションによって渡された値が格納されます。 | 10 | イエス |
| BigintData1 | bigint | メッセージのシーケンス番号。 | 52 | いいえ |
| ClientProcessID | int | クライアント アプリケーションが実行されているプロセスにホスト コンピューターによって割り当てられた ID。 クライアントでクライアント プロセス ID が指定されると、このデータ列が作成されます。 | 9 | イエス |
| DatabaseID | int | USE データベース ステートメントで指定されたデータベースの ID。特定のインスタンスに対して USE データベース ステートメントが発行されていない場合は既定 のデータベース の ID。 SQL Server Profiler では、 ServerName データ列がトレースにキャプチャされ、そのサーバーが利用可能な場合、データベースの名前が表示されます。 データベースに対応する値は、DB_ID 関数を使用して特定します。 | 3 | イエス |
| エラー | int | このイベントでエラーが報告された場合の SQL Server エラー番号。 | 31 | いいえ |
| EventClass | int | キャプチャされたイベント クラスの種類。 監査ブローカーの会話の場合は常に 158。 | 二十七 | いいえ |
| EventSubClass | int | 各イベント クラスに関する詳細情報を提供するイベント サブクラスの型。 次の表に、このイベントのイベント サブクラスの値を示します。 | 21 (二十一) | イエス |
| ファイル名 | nvarchar | ログインエラーの理由。 ログインに成功した場合、この列は空です。 | 36 | いいえ |
| GUID | uniqueidentifier | ダイアログの会話 ID。 この識別子はメッセージの一部として送信され、会話の両側で共有されます。 | 54 | いいえ |
| HostName | nvarchar | クライアントが実行されているコンピューターの名前。 このデータ列には、クライアントがホスト名を指定している場合にデータが格納されます。 ホスト名を確認するには、 HOST_NAME 関数を使用します。 | 8 | イエス |
| IntegerData | int | メッセージのフラグメント番号。 | 二十五 | いいえ |
| NTDomainName | nvarchar | ユーザーが属している Windows ドメイン。 | 7 | イエス |
| NTUserName | nvarchar | このイベントを生成した接続を所有するユーザーの名前。 | 6 | イエス |
| ObjectId | int | ターゲット サービスのユーザー ID。 | 22 | いいえ |
| RoleName | nvarchar | 会話ハンドルの役割。 これは イニシエーター または ターゲットです。 | 三十八 | いいえ |
| ServerName | nvarchar | トレースする SQL Server のインスタンスの名前。 | 26 | いいえ |
| 重症度 | int | このイベントでエラーが報告された場合の SQL Server エラーの重大度。 | 二十九 | いいえ |
| SPID | int | SQL Server によってクライアントに関連付けられているプロセスに割り当てられたサーバー プロセス ID。 | 12 | イエス |
| StartTime | datetime | イベントが開始された時刻 (使用可能な場合)。 | 14 | イエス |
| 状態 | int | イベントを生成した SQL Server ソース コード内の場所を示します。 このイベントを生成する可能性のある各場所には、異なる状態コードがあります。 Microsoft サポート エンジニアは、この状態コードを使用して、イベントが生成された場所を見つけることができます。 | 30 | いいえ |
| TextData | ntext | エラーの場合は、エラーの理由を説明するメッセージが含まれています。 次のいずれかの値を指定します。 証明書が見つかりません。 ダイアログ プロトコル セキュリティ用に指定されたユーザーに証明書がありません。 有効期間外です。 ダイアログ プロトコル セキュリティ用に指定されたユーザーには証明書がありますが、証明書の有効期限が切れています。 証明書が大きすぎてメモリに割り当てできません。 ダイアログ プロトコル セキュリティ用に指定されたユーザーには証明書がありますが、証明書が大きすぎます。 Service Broker でサポートされる証明書の最大サイズは 32,768 バイトです。 秘密キーが見つかりません。 ダイアログ プロトコル セキュリティに指定されたユーザーには証明書がありますが、その証明書に関連付けられている秘密キーはありません。 証明書の秘密キーのサイズは、暗号化プロバイダーと互換性がありません。 証明書の秘密キーには、正常に処理できないキー サイズがあります。 秘密キーのサイズは、64 バイトの倍数である必要があります。 証明書の公開キーのサイズは、暗号化プロバイダーと互換性がありません。 証明書の公開キーには、正常に処理できないキー サイズがあります。 公開キーのサイズは、64 バイトの倍数である必要があります。 証明書の秘密キー のサイズは、暗号化されたキー交換キーと互換性がありません。 キー交換キーで指定されたキー サイズが、証明書の秘密キーのサイズと一致しません。 これは、通常、リモート コンピューター上の証明書がデータベース内の証明書と一致しないことを示します。 証明書の公開キーのサイズは、セキュリティ ヘッダーの署名と互換性がありません。 セキュリティ ヘッダーには、証明書の公開キーでは検証できない署名が含まれています。 これは、通常、リモート コンピューター上の証明書がデータベース内の証明書と一致しないことを示します。 |
1 | イエス |
次の表に、このイベント クラスのサブクラス値を示します。
| 身分証明書 | サブクラス | 説明 |
|---|---|---|
| 1 | セキュリティ ヘッダーなし | セキュリティで保護された会話中に、Service Broker はセッション キーを含まないメッセージを受信しました。 セキュリティで保護された会話が確立されると、ダイアログ プロトコルでは、会話内のすべてのメッセージにセッション キーが含まれている必要があります。 |
| 2 | 証明書なし | Service Broker は、会話の参加者の 1 人に対して使用可能な証明書を見つけることができませんでした。 会話をセキュリティで保護するには、データベースに、会話の送信者と受信者の両方の証明書が含まれている必要があります。 |
| 3 | 無効な署名 | ブローカーは、送信者の証明書の公開キーを使用して、送信者から提供されたメッセージ署名を確認できませんでした。 これは、メッセージが破損していること、メッセージが改ざんされていること、リモート サービスとローカル サービスが同じユーザー証明書で構成されていないこと、または証明書が古くなっていることを示している可能性があります。 |
| 4 | ターゲットとしての実行失敗 | 宛先ユーザーは、宛先キューに対する受信アクセス許可を持っていません。 承認されていないユーザーがメッセージを受信できないようにするために、Service Broker は、開始ユーザーがメッセージをエンキューするアクセス許可を持っているかどうかにかかわらず、キューから受信できない宛先ユーザーとメッセージをエンキューしません。 |