次の方法で共有


セキュリティの管理 (Service Broker)

適用対象:SQL ServerAzure SQL Managed Instance

Service Broker は、アプリケーションをセキュリティで保護するのに役立つ柔軟なセキュリティ フレームワークを提供します。 このトピックでは、Service Broker のセキュリティの管理に関する注意事項について説明します。

セキュリティを計画する

アプリケーションごとに固有のセキュリティ要件があります。 アプリケーションの要件を慎重に計画することも、セキュリティ管理の一部です。 SQL Server には、相互に連携して機能し、アプリケーションのセキュリティ保護を支援するトランスポート セキュリティ、ダイアログ セキュリティ、およびセキュリティ インフラストラクチャが組み込まれています。

すべてのアプリケーションは、SQL Server に組み込まれたセキュリティ インフラストラクチャを使用します。 SQL Server の各操作は、特定のセキュリティ コンテキストにおいて発生します。 通常は、アプリケーション専用の SQL Server データベース プリンシパルを作成します。 これにより、アプリケーションの各ステップが、そのステップに必要な特権だけを持つセキュリティ コンテキストにおいて実行されることを保証できます。 たとえば、内部アクティブ化に対して指定するプリンシパルは、Service Broker がアクティブ化するストアド プロシージャでの実行権限を必要とします。 ストアド プロシージャ自体は、キューに対する RECEIVE 権限を持つユーザーを偽装し、特定のテーブルに対する UPDATE 権限を持つ場合があります。 アプリケーションの各段階で、セキュリティコンテキストが予期しない操作を行う権限を持たないように設計します。

SQL Server インスタンス間でメッセージを送信するアプリケーションでは、トランスポート セキュリティ、ダイアログ セキュリティ、またはその両方を使用できます。 トランスポート セキュリティとダイアログ セキュリティは、明確に異なる保護を提供します。

Service Broker のダイアログ セキュリティは、特定のサービス間のメッセージ交換に対して、エンド ツー エンドの暗号化と承認を提供します。 したがって、ダイアログ セキュリティは、伝送中の読み取りや変更からデータを保護するのに役立ちます。 機密性の高いデータを送信するアプリケーション、または信頼できないネットワークをとおしてメッセージを送信するアプリケーションは、ダイアログ セキュリティを使用する必要があります。 ダイアログ セキュリティは、メッセージ交換の参加者が他の参加者を識別するのに役立ちます。

ダイアログ セキュリティは特定のサービスに対して適用されるので、ダイアログ セキュリティを使用する各サービスに対して、ダイアログ セキュリティを構成する必要があります。 ただし、インスタンスは一部の会話にダイアログ セキュリティを使用し、他の会話を暗号化せずに送信できる場合があります。 たとえば、顧客情報を更新するサービスへの会話ではダイアログ セキュリティが使用される場合があります。一方、単にパーツ番号情報を検索する会話ではダイアログ セキュリティが必要ない場合があります。

Service Broker は、メッセージ交換を開始するデータベースのリモート サービス バインドを使用して、そのメッセージ交換のセキュリティを判別します。 したがって、Service Broker は、サービス名を使用して、サービスのセキュリティを決定します。 同じ対象サービスの複数のインスタンスが存在する場合は、発信側サービスが一致する証明書を含む対象サービスとだけ通信するよう、発信側サービスのルーティングを注意深く管理する必要があります。 同じ名前を持つすべてのサービスは、同じ証明書で構成する必要があります。

Service Broker のトランスポート セキュリティは、Service Broker エンドポイントに対する不正なネットワーク接続を防止し、伝送中のメッセージに対する改ざんを検出し、必要に応じてポイント ツー ポイントの暗号化を提供します。 これは、望ましくないメッセージの受信からデータベースを保護するのに役立ちます。 トランスポート セキュリティは、ネットワーク接続に対して適用されるので、SQL Server インスタンス間のすべてのメッセージ交換に対して自動的に適用されます。 ただし、トランスポート セキュリティはエンドツーエンドの暗号化を提供せず、個々の会話に対する認証も提供しません。

セキュリティの維持

Service Broker アプリケーションのセキュリティの維持は、アプリケーション構成の監査と、アプリケーションが使用する証明書の置き換えという 2 つの主なタスクで構成されます。

アプリケーションを定期的に監査して、セキュリティ構成が変更されておらず、セキュリティ構成がアプリケーションのビジネス ニーズを満たしていることを確認します。

ダイアログ セキュリティは、認証と暗号化のための証明書に依存します。 トランスポート セキュリティでは、証明書が使用される場合もあります。 証明書に対しては、有効期間が指定されています。 証明書は、この時刻が始まる前または有効期限が切れる前に有効ではありません。 Service Broker では、現在有効ではない証明書は使用されません。 さらに、SQL Server には、Service Broker で証明書を使用できるようにするための ACTIVE FOR BEGIN_DIALOG オプションが含まれています。 証明書を更新するには、アクティブな [開始] ダイアログ オプションを OFFに設定して、新しい証明書を作成または読み込みます。 すべての証明書が読み込まれたら、すべてのデータベースの現在の証明書を変更して証明書を Service Broker で使用できないようにしてから、 ACTIVE FOR BEGIN_DIALOG オプションを設定して新しい証明書を変更し、それらの証明書を Service Broker で使用できるようにします。

証明書の詳細については、「証明書と Service Broker」および「CREATE CERTIFICATE」を参照してください。