none
SQL Serverの暗号化について質問です RRS feed

  • 質問

  • SQL Serverの暗号化について質問します。

    SQL Serverの暗号化といっても2つのケースがあると思います。

    ①データベースそのものの暗号化
    ②クライアント/サーバー間での通信の暗号化

    今回は、SQL Serverをインターネットに公開して、WAN経由でアクセスするという構成にしようと思っています。
    しかし、ただ単に公開しただけでは、セキュリティ的に危険だと思うので、クライアント/サーバー間の通信の暗号化をしようと考えています。
    その場合は、SQL Serverの機能で暗号化ができるようなのですが、上記で言えば②になるのでしょうか?
    また、どのような技術で暗号化されるのでしょうか?
    例えばSSLとか?
    とすると、ポートはTCP/1433ではなく、TCP/443を開ける必要があるのでしょうか?

    SQL Serverに関して素人で申し訳ございませんが、なにとぞご教授をお願いします。

    2009年6月22日 5:50

回答

  • SQL Server 2005 or 2008 のどちらを想定されていますか。

    尚、クライアント/サーバー間での通信の暗号化とデータベースの暗号化とは、まったく機能が違います。
    恐らくは、クライアント - アプリケーションサーバー - SQL Server 間のパケット自体を暗号化されたいのだと思うのですが、そうであれば、SQL Serverの機能ではなく、一般的なネットワークの暗号化(SSLなど) 行うことになります。

    データーベースの暗号化とは、物理ファイル自身の暗号化(SQL Server 2008) 、データ自体の暗号化 がございます。
    • 回答としてマーク sk7474 2009年7月9日 9:40
    2009年6月22日 6:52
  • # のんびり書いていたら、NOBTA 様とダブりました。。。

    こんにちは、nagino です。

    クライアント - SQL Server 間の通信は SSL で暗号化できます。
    http://msdn.microsoft.com/ja-jp/library/ms189067.aspx
    http://msdn.microsoft.com/ja-jp/library/ms191192.aspx

    すみませんが、ポートはちょっと覚えていません。

    ただ、そもそも DB との通信のパケットが外部に流れるような構成自体がどうでしょうか。
    Web アプリケーションであれば、Web サーバーと SQL Server 間の通信は閉じたネットワークにするなどして、パケットが外部に流れないようにするほうがお勧めです。
    また、SQL Server に外部から直に接続するのであれば、VPN 経由でしかアクセスできないセグメントに SQL Server を配置するほうがお勧めです。
    あるいはルーターの内側に配置した上で、 Web サービス等の形で機能を公開するほうがお勧めです。
    DB サーバーをルーターの外側に置くような構成は、たとえ通信を保護してもサーバー自体への攻撃が残ります。


    MCITP(Database Developer/Database Administrator)
    2009年6月22日 7:12
  • こんにちは、nagino です。

    通信の暗号化と、ポートの設定とは、それぞれ独立した設定です。
    TCP/1433 で SSL による暗号化を行っている場合は、 TCP/443 が空いていなくても通信できます。

    通信が実際に暗号化されているかどうかは、パケットモニタリング(スニッファ、パケットモニタリング)ツールで確認することになるかと思います。
    SQL Server 2000 の頃の KB ではパケットモニタリングツールを使用した確認方法しかアナウンスされておらず、それ以後更新するような内容が出ていないようです。
    http://support.microsoft.com/kb/276553/ja
    http://support.microsoft.com/kb/316898/ja

    ちなみに TCP/443 は HTTP で SSL を使用した場合(HTTPS)の既定のポート番号です。
    例えばシェルで SSL を使用した場合(SSH)の既定のポート番号は TCP/22、FTP で SSL を使用した場合(FTPS)の既定のポート番号は TCP/989 と TCP/990、といったように、SSL = TCP/443 ではありませんのでご注意下さい。

    MCITP(Database Developer/Database Administrator)
    • 回答としてマーク sk7474 2009年7月9日 9:40
    2009年6月24日 1:31
  • 今回の質問内容とは関係ないのですが、個人的な意見を言わせていただくと、SQL Server をインターネット上の危険なゾーンに公開するのであれば、やはり SQL Server の物理ファイル自体も暗号化されたほうが良いような気がします。 (例えば、バイナリエディタなどで物理データベースファイルを開くと、データを確認される恐れがありますしね。)

    SQL Server 2005 では、物理データベース全体を暗号化する機能は無いので、OSの暗号化機能(エクスプローラ - 該当のファイル - プロパティ - 詳細設定 - 内容を暗号化してデータをセキュリティで保護する) などを実施することになるのですが。

    • 回答としてマーク sk7474 2009年7月9日 9:40
    2009年6月24日 3:30

すべての返信

  • SQL Server 2005 or 2008 のどちらを想定されていますか。

    尚、クライアント/サーバー間での通信の暗号化とデータベースの暗号化とは、まったく機能が違います。
    恐らくは、クライアント - アプリケーションサーバー - SQL Server 間のパケット自体を暗号化されたいのだと思うのですが、そうであれば、SQL Serverの機能ではなく、一般的なネットワークの暗号化(SSLなど) 行うことになります。

    データーベースの暗号化とは、物理ファイル自身の暗号化(SQL Server 2008) 、データ自体の暗号化 がございます。
    • 回答としてマーク sk7474 2009年7月9日 9:40
    2009年6月22日 6:52
  • # のんびり書いていたら、NOBTA 様とダブりました。。。

    こんにちは、nagino です。

    クライアント - SQL Server 間の通信は SSL で暗号化できます。
    http://msdn.microsoft.com/ja-jp/library/ms189067.aspx
    http://msdn.microsoft.com/ja-jp/library/ms191192.aspx

    すみませんが、ポートはちょっと覚えていません。

    ただ、そもそも DB との通信のパケットが外部に流れるような構成自体がどうでしょうか。
    Web アプリケーションであれば、Web サーバーと SQL Server 間の通信は閉じたネットワークにするなどして、パケットが外部に流れないようにするほうがお勧めです。
    また、SQL Server に外部から直に接続するのであれば、VPN 経由でしかアクセスできないセグメントに SQL Server を配置するほうがお勧めです。
    あるいはルーターの内側に配置した上で、 Web サービス等の形で機能を公開するほうがお勧めです。
    DB サーバーをルーターの外側に置くような構成は、たとえ通信を保護してもサーバー自体への攻撃が残ります。


    MCITP(Database Developer/Database Administrator)
    2009年6月22日 7:12
  • ご返信ありがとうございます。

    今回は、SQL Server 2005を想定しています。

    構成としては、①のデータベース自体の暗号化は考えておりません。
    ②のクライアント/サーバー間での通信の暗号化考えております。
    ネットワークの暗号化を行なう場合は、SQL Serverの機能ではないとすると、どこで設定を行なうことになるのでしょうか?
    SQL Serverの設定を調べて、プロトコルのプロパティより、[ForceEncryption]を[はい]にしましたが、普通に接続できています。
    (しかもTCP/443ポートを開けてなくても)

    すみませんが、ご教授よろしくお願いいたします。
    2009年6月22日 7:16
  • こんにちは、nagino です。

    通信の暗号化と、ポートの設定とは、それぞれ独立した設定です。
    TCP/1433 で SSL による暗号化を行っている場合は、 TCP/443 が空いていなくても通信できます。

    通信が実際に暗号化されているかどうかは、パケットモニタリング(スニッファ、パケットモニタリング)ツールで確認することになるかと思います。
    SQL Server 2000 の頃の KB ではパケットモニタリングツールを使用した確認方法しかアナウンスされておらず、それ以後更新するような内容が出ていないようです。
    http://support.microsoft.com/kb/276553/ja
    http://support.microsoft.com/kb/316898/ja

    ちなみに TCP/443 は HTTP で SSL を使用した場合(HTTPS)の既定のポート番号です。
    例えばシェルで SSL を使用した場合(SSH)の既定のポート番号は TCP/22、FTP で SSL を使用した場合(FTPS)の既定のポート番号は TCP/989 と TCP/990、といったように、SSL = TCP/443 ではありませんのでご注意下さい。

    MCITP(Database Developer/Database Administrator)
    • 回答としてマーク sk7474 2009年7月9日 9:40
    2009年6月24日 1:31
  • 今回の質問内容とは関係ないのですが、個人的な意見を言わせていただくと、SQL Server をインターネット上の危険なゾーンに公開するのであれば、やはり SQL Server の物理ファイル自体も暗号化されたほうが良いような気がします。 (例えば、バイナリエディタなどで物理データベースファイルを開くと、データを確認される恐れがありますしね。)

    SQL Server 2005 では、物理データベース全体を暗号化する機能は無いので、OSの暗号化機能(エクスプローラ - 該当のファイル - プロパティ - 詳細設定 - 内容を暗号化してデータをセキュリティで保護する) などを実施することになるのですが。

    • 回答としてマーク sk7474 2009年7月9日 9:40
    2009年6月24日 3:30
  • こんにちは。中川俊輔です。

    NOBTAさん、naginoさん、いつも詳しい回答ありがとうございます。

    sasamasaさん、はじめまして。フォーラムのご利用ありがとうございます。
    その後いかがでしょうか?疑問は解決しましたか?
    有用な情報と思われたため、勝手ながらNOBTAさん、naginoさんの回答へ回答マークをつけさせていただきました。

    今後ともフォーラムをよろしくお願いします。
    それでは!
    マイクロソフト株式会社 フォーラム オペレータ 中川 俊輔
    2009年7月9日 9:42