SQL Azure での暗号化接続(SSL によるネットワーク データの暗号化)

@IT での Windows Azure Community の山本さんの以下の記事

SQL Azureを実際に活用する
http://www.atmarkit.co.jp/fdotnet/dnfuture/winazureplatform_03/winazureplatform_03_02.html

で、暗号化接続について詳しく説明されていて、ハッとさせられました。
暗号化はとっても重要ですね。山本さんすばらしい!


SQL Azure への暗号化接続(SSL:Secure Sockets Layer によるネットワーク データの暗号化)をまとめると、

■ Management Studio の場合(SQL Server 2008/SQL Server 2008 R2 共通)
Management Studio の場合は、[データベース エンジンへの接続]ダイアログで[オブション]ボタンをクリックして、[接続プロパティ]タブで「暗号化接続」をチェックします。


■ sqlcmd ユーティリティの場合(SQL Server 2008 R2 のみ)
sqlcmd ユーティリティは、/N オプションを利用します。

ただし、このオプションは、SQL Server 2008 R2 からの新機能なので、SQL Server 2008 の sqlcmd ユーティリティを利用する場合は、利用することができません(暗号化接続を行うことができません)。


■ Integration Services のインポート/エクスポート ウィザードの場合
Integration Services の場合は、次のように「Encrypt」を「True」へ設定します。


bcp コマンドの場合
bcp コマンドは、残念ながら暗号化接続に対応していないので、セキュアなデータ転送を行いたい場合には、Integration Services を利用するようにします。


ADO.NET の場合
ADO.NET の場合は、次のように接続文字列へ「Encrypt=True;」を追加します。

Dim cnstr As String = "Server=サーバー名.database.windows.net;" _
                    & "Database=データベース名;" _
                    & "User ID=アカウント名@サーバー名;" _
                    & "Password=パスワード;" _
                    & "Encrypt=True;"
Using cn As New SqlConnection(cnstr)


JDBC の場合
JDBC の場合は、次のように接続文字列へ「TrustServerCertificate=true;」と「encrypt=true;」を追加します。

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); 
String url = "jdbc:sqlserver://サーバー名.database.windows.net:1433;" +
	  "databaseName=データベース名;" +
	  "TrustServerCertificate=true;encrypt=true;";
String user = "ユーザー名@サーバー名";
String password = "パスワード";
Connection cn = DriverManager.getConnection(url, user, password);


SQL Azure の具体的な利用方法については、弊社執筆の SQL Server 2008 R2 自習書シリーズの「SQL Azure 入門」編を参考にしてみてください(下記 URL の右下のリンク)。
http://www.microsoft.com/japan/sqlserver/2008/r2/prodinfo/default.mspx