SQL Server 2005 の“はまりがち”なトピックを、毎月 1 つずつ取り上げて具体的に解説する「SQL Server 2005 Tips and Tips」。忙しい人でも気軽に読めるビジュアルな解説を、松本美穂と松本崇博のコンビでお届けします。
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) の場合]
[リモート アプリケーションが VB 6.0、ASP または Visual Studio .NET 2002/2003 (ASP.NET 1.x) の場合]
ネットワーク接続を有効化するには?ネットワーク接続を有効化するには、「SQL Server セキュリティ構成」ツールを利用します。このツールは、SQL Server 2005 メニューの [構成ツール] サブメニューから起動できます。セキュリティ構成ツールを起動すると、次の画面が表示されます。 ![]() ![]() [データベース エンジン] を展開して [リモート接続] をクリックし、[ローカル接続およびリモート接続] をチェックします。[TCP/IP のみを使用する] がチェックされていることを確認し、[適用] ボタンをクリックします。 ![]() ![]() 警告ボックスが表示され、データベース エンジン (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 -an ネットワーク接続を有効にすると、インターネット経由で侵入されてしまうのではないかと不安になる方もおられることでしょう。しかし、心配は無用です。ファイアウォールで 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 への接続には、「ホスト名解決」も必要になります。たとえば、“KAILASH”という名前の SQL Server 2005 に接続するには、KAILASH マシンのホスト名から IP アドレスを解決 (ホスト名解決) できなければ、接続できません。ホスト名解決に失敗した場合は、同じエラー メッセージが通達されます。 [名前付きインスタンスは動的ポートと UDP 1434 も例外へ追加]前述したように、名前付きインスタンスの場合は、利用するポートが動的に決まります。したがって、ファイアウォールの [例外] タブでは、TCP ポート 1433 ではなく、SQL Server Configuration Manager ツールで確認した、動的に割り当てられた TCP ポート番号を例外に追加しなければなりません。また、クライアント アプリケーションは、名前付きインスタンスが利用している動的ポートを調べるために、「UDP ポート 1434 番」を利用します。したがって、[例外] タブでは、UDP 1434 も追加しておく必要があります。 [ダイヤルアップおよび ISDN 接続時には注意]上記のようにファイアウォールの例外を設定した Windows XP をダイヤルアップ回線や ISDN 回線を利用してインターネットへ直接接続する場合は、インターネットを介して SQL Server 2005 へ侵入/攻撃可能であることに注意してください。インターネットへ直接接続するときは、例外設定を外すようにしましょう。 関連情報
| 目次 |