web-dev-qa-db-ja.com

MS-SQL Serverへの暗号化された接続は本当に安全ですか?

簡単な紹介:小さな会社、非常に限られたリソース。私はコーヒーを含むほとんどすべてを行います。私はプログラマーであり、セキュリティ担当者ではありません。それが私があなたに尋ねる理由です...

サーバーで実行されているMS-SQL 2008データベースと、次のような接続文字列を使用してデータベースに直接接続するいくつかのC#アプリケーションがあります。

"Server=example.org; Database=SomeDatabase; User Id=dbUser; password=**secret**; Encrypt=YES"

アプリケーションはサーバー上で実行されないため、データベースインスタンスは外界に面しています。このセットアップはうまく実行されていますが、いくつかの懸念があります。

1)Encrypt=YESは正確にどういう意味ですか?接続全体(ログオンなどを含む)は安全ですか(誰も接続文字列を取得しないと仮定)。それとも私は深刻な懸念を抱くべきですか?これらの懸念は何ですか(キーワードは高く評価されます)?

2)接続文字列を配布するための良い戦略は何ですか?

2番目の質問を説明します。直接接続するだけで非常に快適です。接続文字列の配布は、データベースへのすべての呼び出しを別のより安全なチャネルにラップするよりも簡単に置き換えることができます...

13

SQL Serverへの「暗号化された接続」 SSLを使用 。それはあなたが得ることができるのと同じくらい良いです。ただし、SSLが保護するのは接続、つまり、クライアントとSQL Serverの間で転送されるデータのみであることを忘れないでください。サーバーにデータが保存される方法については何もしません。また、接続されているクライアントを互いに分離することについても何もしません。その部分は完全にSQL Serverに依存します。

「接続文字列」では、passwordはもちろん機密部分です。各クライアントには独自のユーザーアカウントとパスワードが必要です。そのため、1つのパスワードが危険にさらされた場合(残念ながら長期的には起こり得るイベント)、他のユーザーに影響を与えることなく、特定のパスワードをリセットできます。パスワードの配布については、インターネットを介してクリアテキストとして送信しないでください!つまり、メールはありません。 Webのように行う場合は、HTTPではなくHTTPSを使用します。状況によっては、電話でパスワードを交換するのが妥当な場合があります。

10
Tom Leek