Microsoft BizTalk Adapter for SQL Server を使用するアプリケーションを使用または開発するときに、機密データをより完全に保護するために従う必要があるベスト プラクティス。
SQL アダプターと SQL Server データベース間の接続に関するセキュリティのベスト プラクティス
SQL アダプターは、SQL Server データベースとの間の通信をセキュリティで保護するためのサポートを提供しません。 アダプターと SQL Server データベースの間で交換されるデータに対して適切なレベルのセキュリティを確保するためのメカニズムを提供する必要があります。
セキュリティ上の理由から、SQL アダプターでは、接続 URI で SQL Server データベースのユーザー名パスワード資格情報を指定することはできません。 SQL アダプターに資格情報を提供する別の方法については、このトピックの残りの部分を参照してください。
SQL アダプターを使用すると、SQL Server に接続するときに Windows 認証を使用して、Visual Studio または BizTalk Server を介してメタデータを生成し、操作を実行することもできます。 Windows 認証を使用する前に、SQL Server Management Studio で Windows ユーザーをユーザーとして追加する必要があります。 詳細については、「 SQL アダプターで Windows 認証を使用して SQL Server に接続する」を参照してください。
詳細については、「 SQL Server とアダプターの間のセキュリティ」を参照してください。
BizTalk Server で SQL アダプターを使用するためのセキュリティのベスト プラクティス
SQL アダプターでは、接続 URI で SQL Server データベースのユーザー名パスワード資格情報を指定することはできません。
アダプター サービスアドインを使用する場合は、[アダプターの構成] ダイアログ ボックスの [セキュリティ] タブから、SQL Server データベースのユーザー名パスワード資格情報を入力します。
送信ポートで SQL アダプターの BizTalk WCF-Custom アダプターを構成する場合は、[WCF-Custom トランスポートのプロパティ] ダイアログ ボックスの [資格情報] タブから、SQL Server データベースのユーザー名パスワード資格情報を入力します。
受信場所で SQL アダプターの BizTalk WCF-Custom アダプターを構成する場合は、[WCF-Custom トランスポートのプロパティ] ダイアログ ボックスの [その他] タブから、SQL Server データベースのユーザー名パスワード資格情報を入力します。
アダプター サービス アドインを使用してメタデータを生成したり、送信ポートを構成したり、受信ポートを構成したりするときに、Windows 認証を使用することもできます。 Windows 認証を使用する前に、SQL Server Management Studio で Windows ユーザーをユーザーとして追加する必要があります。 詳細については、「 SQL アダプターで Windows 認証を使用して SQL Server に接続する」を参照してください。
詳細については、「 SQL アダプターと BizTalk Server を使用したセキュリティ」を参照してください。
プログラミング ソリューションで SQL アダプターを使用するためのセキュリティのベスト プラクティス
接続 URI で SQL Server データベースのユーザー名パスワード資格情報を指定することが必要な場合があります。ただし、可能であれば、この操作は避ける必要があります。
Add Adapter Service Reference Visual Studio プラグインを使用する場合は、[アダプターの構成] ダイアログ ボックスの [セキュリティ] タブから、SQL Server データベースのユーザー名パスワード資格情報を入力します。
WCF チャネル モデル プログラミングでは、チャネル ファクトリの Credentials プロパティを使用して、SQL Server データベースのユーザー名パスワード資格情報を設定します。
WCF サービス モデル プログラミングでは、WCF クライアントの ClientCredentials プロパティを使用して、SQL Server データベースのユーザー名パスワード資格情報を設定します。
SQL アダプターを使用するアプリケーションが、プロセス境界を越えて機密性の高いデータベース情報を含むメッセージを別のサービスまたはクライアントに送信する場合は、環境内で十分なデータ保護を提供するために、これらのメッセージに十分なセキュリティ対策が適用されていることを確認します。
アダプター サービス参照プラグインの追加または .NET アプリケーションからの SQL Server への接続中に、Windows 認証を使用することもできます。 Windows 認証を使用する前に、SQL Server Management Studio で Windows ユーザーをユーザーとして追加する必要があります。 詳細については、「 SQL アダプターで Windows 認証を使用して SQL Server に接続する」を参照してください。
詳細については、 SQL アダプターを使用したセキュア・プログラミングを参照してください。
IIS で SQL アダプターをホストするためのセキュリティのベスト プラクティス
Web サービスとして Microsoft インターネット インフォメーション サービス (IIS) で SQL アダプターをホストすると、SQL アダプターによって表示される操作が Web クライアントに公開されます。 これらの操作には、インターネット経由での機密データの交換が含まれる場合があるため、このデータが可能な限り安全であることを確認するための対策を講じてください。
WCF には、HTTP トランスポート用の 2 つの標準バインディングが用意されています。 BasicHttpBinding には、セキュリティ メカニズムのない基本的な HTTP トランスポートが用意されています。 WSHttpBinding では、トランスポート レベルとメッセージ レベルの両方のセキュリティ メカニズムがサポートされています。
HTTPS 接続経由で BasicHttpBinding を 使用するか、 WSHttpBinding を 使用してデータを保護できます。 WCF LOB アダプター SDK には、LOB 成果物の WCF サービスを生成するための WCF LOB アダプター サービス開発ウィザードが含まれています。 このウィザードでは、 BasicHttpBinding の使用のみがサポートされます。
カスタム HTTP バインディングを開発して、環境で提供される追加のセキュリティ メカニズムを利用することもできます。 WCF が提供するセキュリティ機能の詳細については、「 サービスとクライアントのセキュリティ保護」を参照してください。
Web サービスとして SQL アダプターをホストする場合、Web 開発者は、ユーザーによって入力された文字列が SQL Server データベースに直接渡されないようにするための対策を講じます。 たとえば、WEB サイトでユーザーが SELECT ステートメントの WHERE 句の一部となる値を入力できる場合は、ステートメントに他のコマンドを追加しないように入力文字列をスキャンする必要があります。
WCF 診断トレースとメッセージ ログのセキュリティのベスト プラクティス
WCF では、診断トレースとメッセージ ログがサポートされています。 診断トレースとメッセージ ログ記録は、構成ファイルまたは Windows Management Instrumentation (WMI) を使用して構成します。 設定した構成オプションに応じて、WCF 診断トレースまたはメッセージ ログは機密情報をログ ファイルに出力できます。この場合、承認されていないユーザーによる監視に公開される可能性があります。
WCF ドキュメントに記載されている推奨事項に従って、これらの機能を有効にすることで公開される潜在的なセキュリティの脅威を軽減します。 少なくとも、診断トレースとメッセージ ログ記録に関する次のベスト プラクティスを確認する必要があります。
運用環境では「詳細」または「情報」トレースを有効にしないでください。 これにより、パフォーマンスが低下する可能性があります。 ただし、運用環境で "警告" と "エラー" トレースを有効にする必要があります。 トレースを有効にする場合は、データを保護するために適切なセキュリティ対策を講じなければなりません。 詳細については、WCF のドキュメントを参照してください。
ログ ファイルと構成ファイルがアクセス制御リスト (ACL) によって保護されていることを確認します。
次の警告は、クライアント アプリケーションと SQL アダプターの間で交換されるメッセージに特に適用されます。
WCF 診断トレースでは、SQL アダプターと交換されたメッセージのヘッダー (本文ではない) をログに記録できます。 メッセージ アクションはメッセージ ヘッダー内にあるため、クライアントによって SQL アダプターで呼び出された操作が表示されます。
WCF メッセージ ログが有効になっていて、
logMessagesAtServiceLevel
がtrue
されている場合は、アダプター クライアントと SQL アダプターの間で交換されたメッセージのメッセージ ヘッダー (ただし、メッセージ本文ではありません) がログに記録されます。 メッセージ アクションはメッセージ ヘッダー内にあるため、これにより、クライアントが SQL アダプターで呼び出した操作が表示されます。logEntireMessage
もtrue
場合は、メッセージ本文がログに記録されます。 これにより、機密性の高いデータベース情報が表示される可能性があります。診断トレースを有効にしたときのセキュリティの向上の詳細については、「 セキュリティの懸念事項とトレースに関する便利なヒント」を参照してください。 メッセージ ログを有効にしたときのセキュリティの向上の詳細については、「メッセージ ログの セキュリティに関する懸念事項」を参照してください。