セキュリティの管理 (Service Broker)
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 オプションが含まれています。証明書を更新するには、ACTIVE FOR BEGIN_DIALOG オプションを OFF に設定して、新しい証明書の作成または読み込みを行います。すべての証明書を読み込んだら、Service Broker で使用できないように、すべてのデータベースの現在の証明書が変更されます。その後、ACTIVE FOR BEGIN_DIALOG オプションを設定して、新しい証明書を変更し、Service Broker でこれらの証明書を使用できるようにします。
証明書の詳細については、「証明書および Service Broker」および「CREATE CERTIFICATE (Transact-SQL)」を参照してください。