次の方法で共有


イベント通知のダイアログ セキュリティの構成

Service Broker ダイアログ セキュリティは、リモート サーバー上のサービス ブローカーにメッセージを送信するイベント通知用に構成する必要があります。 ダイアログ セキュリティは、Service Broker ダイアログの完全セキュリティ モデルに従って手動で構成する必要があります。 完全セキュリティ モデルを使用すると、リモート サーバーとの間で送受信されるメッセージの暗号化と暗号化解除が可能になります。 イベント通知は一方向に送信されますが、エラーなどの他のメッセージも逆方向に返されます。

イベント通知のダイアログ セキュリティの構成

イベント通知のダイアログ セキュリティを実装するために必要なプロセスについては、次の手順で説明します。 これらの手順には、ソース サーバーとターゲット サーバーの両方で実行するアクションが含まれます。 ソース サーバーは、イベント通知が作成されるサーバーです。 ターゲット サーバーは、イベント通知メッセージを受信するサーバーです。 次の手順に進む前に、ソース サーバーとターゲット サーバーの両方について、各手順のアクションを完了する必要があります。

重要

すべての証明書は、有効な開始日と有効期限を使用して作成する必要があります。

手順 1: TCP ポート番号とターゲット サービス名を確立します。

ソース サーバーとターゲット サーバーの両方がメッセージを受信する TCP ポートを確立します。 また、ターゲット サービスの名前も決定する必要があります。

手順 2: データベース レベルの認証用に暗号化と証明書の共有を構成する。

ソース サーバーとターゲット サーバーの両方で次のアクションを実行します。

ソース サーバー ターゲット サーバー
イベント通知とマスター キーを保持するデータベースを選択または作成します。 マスター キーを保持するデータベースを選択または作成します。
ソース データベースのマスター キーが存在しない場合は、 マスター キーを作成します。 それぞれの証明書をセキュリティで保護するには、ソース データベースとターゲット データベースの両方でマスター キーが必要です。 ターゲット データベースのマスター キーが存在しない場合は、マスター キーを作成します。
ソース データベースのログインと対応するユーザーを作成します。 ターゲット データベースのログインと対応するユーザーを作成します。
ソース データベースのユーザーが所有する証明書を作成します。 ターゲット データベースのユーザーが所有する証明書を作成します。
ターゲット サーバーからアクセスできるファイルに証明書をバックアップします。 ソース サーバーからアクセスできるファイルに証明書をバックアップします。
ターゲット データベースのユーザーを指定し、LOGIN なしでユーザーを作成します。 このユーザーは、バックアップ ファイルから作成されるターゲット データベース証明書を所有します。 このユーザーの唯一の目的は、次の手順 3 で作成したターゲット データベース証明書を所有するため、ユーザーをログインにマップする必要はありません。 ソース データベースのユーザーを指定し、LOGIN なしでユーザーを作成します。 このユーザーは、バックアップ ファイルから作成されるソース データベース証明書を所有します。 このユーザーの唯一の目的は、次の手順 3 で作成したソース データベース証明書を所有するため、ユーザーをログインにマップする必要はありません。

手順 3: 証明書を共有し、データベース レベルの認証のアクセス許可を付与する。

ソース サーバーとターゲット サーバーの両方で次のアクションを実行します。

ソース サーバー ターゲット サーバー
ターゲット証明書のバックアップ ファイルから証明書を作成し、ターゲット データベース ユーザーを所有者として指定します。 ソース証明書のバックアップ ファイルから証明書を作成し、ソース データベース ユーザーを所有者として指定します。
ソース データベース ユーザーにイベント通知を作成するアクセス許可を付与します。 このアクセス許可の詳細については、「 CREATE EVENT NOTIFICATION (Transact-SQL)」を参照してください。 既存のイベント通知 Service Broker コントラクト ( https://schemas.microsoft.com/SQL/Notifications/PostEventNotification) に対して、ターゲット データベース ユーザーに REFERENCES 権限を付与します。
ターゲット サービスへのリモート サービス バインドを作成し、ターゲット データベース ユーザーの資格情報を指定します。 リモート サービス バインドでは、ソース データベース ユーザーが所有する証明書の公開キーが、ターゲット サーバーに送信されるメッセージを認証することが保証されます。 付与する ターゲット データベース ユーザーに対して、CREATE QUEUE、CREATE SERVICE、および CREATE SCHEMA の権限。
ターゲット データベース ユーザーとしてデータベースにまだ接続していない場合は、ここで接続します。
イベント通知メッセージを受信するキューを作成し、メッセージを配信するサービスを作成します。
ターゲット サービスに対する SEND アクセス許可をソース データベース ユーザーに付与します。
ソース データベースのサービス ブローカー識別子をターゲット サーバーに提供します。 この識別子は、sys.databases カタログ ビューのservice_broker_guid列に対してクエリを実行することで取得できます。 サーバー レベルのイベント通知には、 msdb の Service Broker 識別子を使用します。 ターゲット データベースのサービス ブローカー識別子をソース サーバーに提供します。

手順 4: ルートを作成し、サーバー レベルの認証を設定する。

ソース サーバーとターゲット サーバーの両方で次のアクションを実行します。

ソース サーバー ターゲット サーバー
ターゲット サービスへのルートを作成し、ターゲット データベースのサービス ブローカー識別子と合意された TCP ポート番号を指定します。 ソース サービスへのルートを作成し、ソース データベースのサービス ブローカー識別子と合意された TCP ポート番号を指定します。 ソース サービスを指定するには、次の指定されたサービスを使用します: https://schemas.microsoft.com/SQL/Notifications/EventNotificationService
マスター データベースに切り替えて、サーバー レベルの認証を構成します。 マスター データベースに切り替えて、サーバー レベルの認証を構成します。
マスター データベースのマスター キーが存在しない場合は、マスター キーを作成します マスター データベースのマスター キーが存在しない場合は、 マスター キーを作成します。
データベースを認証する証明書を作成します。 データベースを認証する証明書を作成します。
ターゲット サーバーからアクセスできるファイルに証明書をバックアップします。 ソース サーバーからアクセスできるファイルに証明書をバックアップします。
エンドポイントを作成し、合意された TCP ポート番号、FOR SERVICE_BROKER (AUTHENTICATION = CERTIFICATE certificate_name)、および認証証明書の名前を指定します。 エンドポイントを作成し、合意された TCP ポート番号、FOR SERVICE_BROKER (AUTHENTICATION = CERTIFICATE certificate_name)、および認証証明書の名前を指定します。
ログインを作成し、ターゲット サーバーのログインを指定します。 ログインを作成し、ソース サーバーのログインを指定します。
エンドポイントへのCONNECT権限を対象の認証者のログインに付与します。 エンドポイントに対する CONNECT アクセス許可をソース認証システム ログインに付与します。
ユーザーを作成し、ターゲット認証システムのログインを指定します。 ユーザーを作成し、ソース認証システムのログインを指定します。

手順 5: サーバー レベルの認証用の証明書を共有し、イベント通知を作成します。

ソース サーバーとターゲット サーバーの両方で次のアクションを実行します。

ソース サーバー ターゲット サーバー
ターゲット認証ユーザーを所有者として指定して、ターゲット証明書のバックアップ ファイルから証明書を作成します。 ソース認証ユーザーを所有者として指定して、ソース証明書のバックアップ ファイルから証明書を作成します。
イベント通知を作成するソース データベースに切り替えます。ソース データベース ユーザーとしてまだ接続していない場合は、ここで行います。 ターゲット データベースに切り替えて、イベント通知メッセージを受信します。
イベント通知を作成し、ブローカー サービスとターゲット データベースの識別子を指定します。

こちらもご覧ください

GRANT (Transact-SQL)
バックアップ証明書 (Transact-SQL)
sys.databases (Transact-SQL)
暗号化階層
イベント通知を実装する
CREATE MASTER KEY (Transact-SQL)
CREATE LOGIN (Transact-SQL)
ユーザーを作成 (Transact-SQL)
証明書を作成する (Transact-SQL)
リモート サービス バインディングの作成 (Transact-SQL)
GRANT (Transact-SQL)
ルートを作成 (Transact-SQL)
キューを作成 (Transact-SQL)
CREATE SERVICE (Transact-SQL)
エンドポイントを作成 (Transact-SQL)
イベント通知を作成 (Transact-SQL)