Microsoft SQL Server 2005 は、他のマイクロソフト製品と同様、「デフォルト セキュア」(Secure By Default) を掲げ、デフォルト (既定) では、セキュリティが最も厳しい状態 (安全性が最も高い状態) でセットアップされています。このため、ネットワーク接続や SQLCLR (CLR 統合)、xp_cmdshell、データベース メール、サービス ブローカ、HTTP エンドポイントなど、正しく運用しないと危険性のある機能は、デフォルトで無効になっています。必要に応じて、利用したい機能だけを有効にし、その機能の危険性を正しく認識および対応することで、安全に運用することができます。 トピックデフォルトではネットワーク接続が無効!SQL Server 2005 は、デフォルトでは、ネットワーク接続が無効に設定されています。これは、悪意のある攻撃者がネットワークを介して SQL Server へ簡単に侵入できないようにするための処置です。したがって、デフォルトでは、SQL Server 2005 はスタンドアロン (同じマシン内) での利用に限定され、ネットワークを介してアクセスすることはできません。これは次のような状況です。 このようにデフォルトでは、リモートのアプリケーション (Visual Basic、C#、Java など) や、リモートの Internet Information Services (ASP、ASP.NET アプリケーション) から SQL Server 2005 へアクセスすることはできません。アクセスしようとしても、次のようなエラー メッセージが通達されます。 [リモート アプリケーションが Visual Studio 2005 (VB、C#、ASP.NET 2.0) の場合]サーバーへの接続を確立しているときにエラーが発生しました。SQL Server 2005 に接続しているときにこのエラーが発生した場合は、SQL Server の既定の設定がリモート接続を許可しないようになっていることがエラーの原因である可能性があります。 (provider: 名前付きパイププロバイダ, error: 40 - SQL Server への接続を開けませんでした) |
[リモート アプリケーションが VB 6.0、ASP または Visual Studio .NET 2002/2003 (ASP.NET 1.x) の場合]SQL Server が存在しないか、アクセスが拒否されました。 |
ネットワーク接続を有効化するには?ネットワーク接続を有効化するには、「SQL Server セキュリティ構成」ツールを利用します。このツールは、SQL Server 2005 メニューの [構成ツール] サブメニューから起動できます。セキュリティ構成ツールを起動すると、次の画面が表示されます。 ![リモート接続を有効化するには、[サービスと接続のセキュリティ構成] をクリックします。](/contents/022/722/894.mime4) リモート接続を有効化するには、[サービスと接続のセキュリティ構成] をクリックします。 拡大図を見る  ![[データベース エンジン] を展開して [リモート接続] をクリックし、[ローカル接続およびリモート接続] をチェックします。[TCP/IP のみを使用する] がチェックされていることを確認し、[適用] ボタンをクリックします。](/contents/022/722/896.mime4) [データベース エンジン] を展開して [リモート接続] をクリックし、[ローカル接続およびリモート接続] をチェックします。[TCP/IP のみを使用する] がチェックされていることを確認し、[適用] ボタンをクリックします。 拡大図を見る  ![警告ボックスが表示され、データベース エンジン (SQL Server) サービスを再起動するまで設定が有効にならないことが促されるので、[データベース エンジン] の [サービス] をクリックして、SQL Server サービスを再起動します ([停止] ボタンをクリックして SQL Server 2005 を停止した後、[開始] ボタンで起動します)。これで、ネットワーク接続が有効になります (TCP/IP ソケットを利用)。](http://img.microsoft.com/library/media/1041/japan/sql/images/ssj/tips01_06_300.jpg) 警告ボックスが表示され、データベース エンジン (SQL Server) サービスを再起動するまで設定が有効にならないことが促されるので、[データベース エンジン] の [サービス] をクリックして、SQL Server サービスを再起動します ([停止] ボタンをクリックして SQL Server 2005 を停止した後、[開始] ボタンで起動します)。これで、ネットワーク接続が有効になります (TCP/IP ソケットを利用)。 拡大図を見る 使用するポートは TCP 1433ネットワーク接続を有効にすると、SQL Server 2005 (既定のインスタンス) は、デフォルトで TCP ポート 1433 番で待ち受け (LISTENING) をします。このポート番号は、SQL Server 2005 メニューの [構成ツール] サブメニューにある [SQL Server Configuration Manager] ツールを利用して、確認、変更することができます。 また、[コマンド プロンプト] ツールから、netstat コマンドを次のように実行し、LISTENING しているポート番号を確認することもできます。
netstat -an
ネットワーク接続を有効にすると、インターネット経由で侵入されてしまうのではないかと不安になる方もおられることでしょう。しかし、心配は無用です。ファイアウォールで TCP 1433 をブロックしておけば、侵入されることはありません。  ファイアウォールで TCP 1433 をブロック 拡大図を見る なお、名前付きインスタンスの場合は、待ち受けポートが動的に設定され、TCP 1433 は利用しません。動的に設定されたポート番号 (1122、1141、1582 など) は、SQL Server Configuration Manager で確認できます。そのポート番号は、ファイアウォールで確実にブロックしておくようにしましょう。また、後述する UDP ポート 1434 番も SQL Server 2005 が利用するポートなので、ファイアウォールでブロックしておくようにしましょう。 Windows XP SP2 の場合開発時は、Windows XP にインストールした SQL Server 2005 に対してネットワーク接続をしたい場合もあるでしょう。しかし、Windows XP の Service Pack 2 (SP2) では、デフォルトで「ローカルのファイアウォール機能」が有効になるため、TCP 1433 がブロックされます。この状態では、ネットワーク接続をしようとしても、前述と同じエラーが発生してしまいます。 したがって、Windows XP SP2 にインストールした SQL Server 2005 へネットワーク接続したい場合は、コントロールパネルの [Windows ファイアウォール] ツールを使って、[例外] を追加する必要があります。 ![Windows XP SP2 のローカル ファイアウォールに [例外] を追加する方法](/contents/022/722/898.mime4) Windows XP SP2 のローカルファイアウォールに [例外] を追加する方法 [例外] タブで [ポートの追加] ボタンをクリックし、[TCP] をチェックして [ポート番号] に“1433”と入力します。[名前] は“1433tcp”など任意の名前を付けられます。 拡大図を見る [ホスト名解決も必要]SQL Server 2005 への接続には、「ホスト名解決」も必要になります。たとえば、“KAILASH”という名前の SQL Server 2005 に接続するには、KAILASH マシンのホスト名から IP アドレスを解決 (ホスト名解決) できなければ、接続できません。ホスト名解決に失敗した場合は、同じエラー メッセージが通達されます。 ホスト名解決には、hosts ファイルまたは DNS サーバーが利用されますが、この 2 つで解決できない場合は NetBIOS 名前解決 (ブロードキャスト、WINS、LMHOSTS) が利用されます。[Windows ファイアウォール] ツールの [例外] タブで [ファイルとプリンタの共有] をチェックしている場合は、ブロードキャストによる NetBIOS 名前解決が利用できます。 なお、名前解決が利用できない環境では、IP アドレスを直接入力する方法もあります。たとえば、ADO や ADO.NET であれば接続文字列に“Data Source=192.168.1.13”のように IP アドレスを直接指定すれば、ホスト名解決は不要になります。 [名前付きインスタンスは動的ポートと UDP 1434 も例外へ追加]前述したように、名前付きインスタンスの場合は、利用するポートが動的に決まります。したがって、ファイアウォールの [例外] タブでは、TCP ポート 1433 ではなく、SQL Server Configuration Manager ツールで確認した、動的に割り当てられた TCP ポート番号を例外に追加しなければなりません。また、クライアント アプリケーションは、名前付きインスタンスが利用している動的ポートを調べるために、「UDP ポート 1434 番」を利用します。したがって、[例外] タブでは、UDP 1434 も追加しておく必要があります。 なお、ADO や ADO.NET であれば、接続文字列に“Data Source=マシン名\インスタンス名,1122”のように動的ポート番号 (1122 の場合) を直接記述することもできます。こうすると、UDP 1434 を利用した問い合わせが不要になるので、[例外] タブで UDP 1434 を追加する必要がなくなります。 [ダイヤルアップおよび ISDN 接続時には注意]上記のようにファイアウォールの例外を設定した Windows XP をダイヤルアップ回線や ISDN 回線を利用してインターネットへ直接接続する場合は、インターネットを介して SQL Server 2005 へ侵入/攻撃可能であることに注意してください。インターネットへ直接接続するときは、例外設定を外すようにしましょう。
|