特集 Windows環境におけるセキュリティ強化のポイント(後編) 4.SQL Server 2000のセキュリティ・ポイントデジタルアドバンテージ2003/02/28 |
![]() |
SQL Server 2000:4つのセキュリティ・ポイント
SQL Server 2000(およびMSDE)のセキュリティ・ポイントとしては、次の4つが挙げられる。
| ポイント | 内容 |
| saパスワード | SQL Serverの管理者権限である「sa」に対しては必ずパスワードを設定する。できればWindows統合認証モードを使用し、saを使わないようにする |
| システムSPの制限 | SQL Serverを管理するためのストアード・プロシージャであるシステムSPへのアクセスを正しく管理する |
| サービス実行アカウント | Local System、Administratorなどの強力なアカウントは使用しない。専用のアカウントを作成し、このアカウントに対して必要最小限の権限を割り当てて使用する |
| SQLインジェクション | SQLインジェクションは、クロスサイト・スクリプティングと同様にして、実行時に別のクエリーを混入させるハッキング技術。文字のエスケープや禁止文字の検出を行い、ハッキングを防止する |
SQL Server 2000のセキュリティ・ポイント(1):saアカウントのパスワード
「sa」とは、SQL Serverを「混合モード」を選択してインストールすると作成されるSQL Server用の管理アカウントである。「Windows統合認証モード」でインストールした場合には作成されない。Windows統合認証モードでは、OS(Windows)の機能を使って認証処理を行う。これに対し混合モードでは、SQL Server自身が認証機能を持ち、これを使ってユーザー認証を行う。これは、Windows以外の環境(UNIX環境など)からもデータベースに接続できるようにするためのモードである。
saは管理者権限のアカウントであり、SQL Serverに対して完全な権限を持つSYSADMINというロール(役割。Windowsのユーザー・グループに相当するもの)が割り当てられている。従ってsaに対するアクセス権制限が突破されると、データベースの削除やデータ改ざんまで、何でも可能になってしまう。
混合モードでSQL Serverをインストールした場合には、OSの管理者アカウントと同様にして、saアカウントを管理しなければならない。まず、パスワードをきちんと設定することだ。OSへの攻撃には危機感を持っていても、SQL Serverへの攻撃となると、むとんちゃくになる管理者がいる。実際、saをパスワードなしの状態で運用しているケースも少なくないようだ(SQLのインストール時に何も設定をしないと、このようになってしまう)。過去には、こうしたパスワードの設定されていないSQL Serverを狙うワーム(SQLSPIDAやCBLAD)が発生したことがある。そして可能であれば、混合モードではなく、Windows統合認証モードを使うことが推奨される。前出のSQLSPIDAは、自身を繁殖させるだけの愉快犯的なワームだったが、その気になればデータベースを消去することも可能だった。
SQL Server 2000のセキュリティ・ポイント(2):システムSPの制限
システムSPは、SQL Server自身を管理するためにデフォルトで提供されるストアード・プロシージャである。機能的には非常に強力で、これを利用すればSQL Serverの管理は容易になるが、機能な強力なだけに、突破されると被害は甚大になる危険がある。
システムSPを実行するにはsysadminロール(管理者権限)が必要なので、通常は実行できない。ただし一部のシステムSPは、publicロール(すべてのデータベース・ユーザーが属している特別なロール)だけで利用もできるものがある。システムSPのデフォルト設定は次のようになっている。
| 機能 | SP | sysadmin |
public |
guest |
| コマンド・シェル | xp_cmdshell | ○ |
||
| アカウントの操作 | sp_addlogin | ○ |
○ |
|
| sp_adduser | ○ |
○ |
||
| sp_addrolemember | ○ |
○ |
||
| sp_addsrvrolemember | ○ |
○ |
||
| 権限の許可 | sp_grantlogin | ○ |
○ |
|
| sp_grantdbaccess | ○ |
○ |
||
| SQL ServerのシステムSP(ストアード・プロシージャ)とロール | ||||
コマンド・シェルはsysadminロールのみ実行可能だが、これを突破されるとハードディスクのフォーマットすら可能になる。特に注意が必要である。
表から分かるとおり、デフォルトでは、アカウント操作や権限の許可などもpublicロール(WindowsでいうEveryoneに相当)で実行可能である。具体的な対応としては、sysadmin以外のロールではこれらのシステムSPを実行できないように、明示的にpublic(WindowsでいうEveryone)やguest(ゲスト・アカウント)でのアクセスを拒否する。拒否は許可よりも優先するので、万一間違って不必要なロールに許可の権限を与えてしまった場合でも、明示的に拒否が設定されていれば、実行できないからだ。
SQL Server 2000のセキュリティ・ポイント(3):サービス実行アカウント
通常、SQL Serverをインストールしたデフォルトの状態では、SQL Serverの処理がOSレベルのドメイン管理者権限やローカル管理者権限(LocalSystem)で実行されるようになっている。しかし外部に公開されるWebサーバでは、このデフォルトの状態のまま使うのではなく、最小限の権限で実行されるようにする必要がある。
具体的には、「SQLAdmin」などといった独自のユーザーを作成して、これに必要最低限のアクセス権を与え、このユーザー権限でSQL Serverの処理を実行するように設定する。またこのユーザーについては、必要となるリソース以外のアクセスを明示的に拒否する。こうしておけば、万一SQL Serverがハッキングを受けて突破された場合でも、OSレベルで処理がブロックされるようになる。
SQL ServerとWindowsサービス実行アカウントに必要なアクセス権の関係については、SQL Server 2000のBooks Online(SQLのヘルプ・ファイル)にある、「Windows サービス アカウントの設定」のページを参照されたい。
![]() |
| 「Windows サービス アカウントの設定」 |
| SQL Serverのアクセス権を設定する場合は、SQLサービス用の独自アカウントを割り当て、必要最小限の権限だけを持たせるようにする。具体的なアクセス権についてはSQL Server 2000付属のBooks Onlineヘルプの「Windows サービス アカウントの設定」を参照のこと。 |
SQL Server 2000のセキュリティ・ポイント(4):SQLインジェクション
「SQLインジェクション」とは、IIS 5.0の項で述べたクロスサイト・スクリプティングと同じような攻撃手法の1つである。外部からの入力データを正しく検査せずに、そのままSQLのクエリーに流し込む構成になっていると、想定外の処理を行うクエリー文字列が送られて、データが盗み出されたり、消去されたりする危険がある。例えば簡単な例を見てみよう。
![]() |
| SQLインジェクションの例 |
| “user”と“password”というフィールドからなるテーブルtableから、特定ユーザーのパスワード情報を取り出すクエリーの例。ユーザーが入力する部分は、青い背景の部分だけであり、その前後は固定的なクエリー文字列になっている。通常は上のようにユーザー名が入力されることを想定しているが、ここに別のSQLクエリーを流し込まれると、予想外の処理が実行されてしまうことになる。 |
仮にいま、“user”と“password”というフィールドからなるテーブルがあったとしよう。そしてWebページでユーザー名を入力させ、このテーブルから対応するパスワード文字列を取り出して処理を行うものと仮定する。図の上側は、入力された“taro”というユーザー名を指定して、対応するパスワードを取り出すSQLクエリーである。青い背景の部分がユーザーが入力した文字列であり(この場合は「taro」と入力している)、そのほかの部分は固定的なクエリー文字列となっている。一方、“taro”の代わりに、SQLクエリー文字列が指定され、それをそのままクエリーに組み込んだものが下側である(ユーザーの入力は「' or user is not NULL or user='」。最初と最後に、文字列を囲むためのシングルクォート記号が置かれていることに注意)。ご覧のとおり、これは「userがNULL(=何もない)か、またはNULLでないか(つまり何らかの文字が格納されているか)、またはNULLか」というクエリーになる。これを実行すると、ユーザー名がNULLでないレコード、つまりテーブルのすべてのレコードが処理対象となってしまう。クエリーの結果をユーザーに表示していたとすると、全ユーザーの情報が表示されてしまうことになる。
クロスサイト・スクリプティングと同様、SQLインジェクションを防止するには、外部から入力されたデータをそのままクエリーに挿入せず、文字のエスケープや禁止文字を検出することだ。またアプリケーションから、アドホックに(場当たり的に)クエリーを実行するのではなく(このようなクエリーは「アドホック・クエリー」と呼ばれる)、できるだけストアード・プロシージャを利用するようにする。そしてSQL Serverのロールに対して、そのストアード・プロシージャの実行だけを許可すると有効である。
現場の担当者だけでなく、経営者やマネージャもセキュリティへの理解を深める必要がある
以上、インターネット向けのサービスを提供するWebサイトを想定した、セキュリティのチェック・ポイントについてまとめた。いまに始まったことではなく、安全なシステムを構築し、運用するためには、システムに精通した管理者が初期設定をきちんと行い、またその後の運用に携わるべきだ。しかし.NETによるアプリケーション連携など、今後も情報システムは機能性の向上に伴って複雑化を増すだろう。もはやボランタリー・ベースで少数の管理者が努力するというレベルではない。情報システムを安全に運用するには、予算決定権を持つ経営層も含めて、情報セキュリティに対する認識を新たにする必要がある。システムの安全性をどれだけ高めても、それを運用する人間側がきちんとしなければ何の意味もない。
最後に小野寺氏は、「運用が最後の要。どんなセキュリティ設定を行っても、運用が適切でなければシステムは脆弱になってしまう。人間こそが一番の脆弱性であり脅威だ」と締めくくった。![]()
| INDEX | ||
| [特集] Windowsセキュリティセミナー・レポート | ||
| Windows環境におけるセキュリティ強化のポイント | ||
| 1.Windows 2000 Serverのセキュリティポイント(1) | ||
| 2.Windows 2000 Serverのセキュリティポイント(2) | ||
| 3.IISのセキュリティ・ポイント | ||
| 4.SQL Server 2000のセキュリティ・ポイント | ||
| 特集 |
ホワイトペーパー(TechTargetジャパン)
- WindowsTIPS (2010/3/19)
− [シャットダウン]ボタンの設定を変更する
− WINSサーバをインストールする
− WINSサーバをnetshコマンドで管理する - Windows 7のファイアウォール機能 (2010/3/18)
Win 7のファイアウォールの概要解説。ルールセットを切り替えるプロファイル機能が強化され、ドメインでもVPNでも、適切なルールが自動選択される - 第212話 プリンタ用紙 (2010/3/16)
致命的なディスク・クラッシュが起きる確率は、クラッシュによってもたらされる被害の大きさに比例する… - WindowsTIPS (2010/3/12)
− 不要なアドオンを無効化してIE8の起動を高速化する
− IE8のソース表示エディタを変更する
− RRASのNATでポートマッピングを定義する
|
|
スキルアップ/キャリアアップ(JOB@IT)
スポンサーからのお知らせ
- - PR -
| 「いつかは壊れるサーバ」そんな故障に 迅速で安価に手軽に対応する方法とは? New! |
| 「特権ユーザー」の事件を防げ! 万能権限を持つユーザーの管理方法とは? New! |
| 仮想環境の構築とデータ保護の特効薬?! 実績と信頼性の高いパッケージで安心運用 |
| 仮想環境のバックアップもこれまでどおり 「まるごと取ってまるごと戻す」簡単運用 |
| おばかアプリ選手権、第4弾開催中!! ムダにカッコよくてくだらない作品求ム! |
| 社内ファイルサーバを“クラウド”に統合 VPN直結「クラウド型ストレージ」を紹介 |
| その数、なんと400台以上! グループ内 サーバの「統合管理」によるメリットは? |
| 美人!? まあまあ? 気になる いやし系!! PV急増で「美人時計」がとった手段とは? |
| 進化を続ける富士通ストレージETERNUS DX 製品開発者の自信を裏付けるものとは何か |
| 運用管理の課題を“2つの観点”から分析 ユーザー満足度の高い「仮想環境」とは? |
- - PR -
お勧め求人情報

**先週の人気講座ランキング**
〜CCNA編〜
| ◆ | TomcatやJBossなどAPサーバ環境に関する 情報を集約! “業務”用APサーバ大百科 New! |
| ◆ | 一気に解説! 最新のクラスタストレージ 「RAIDを超えたストレージ基準」……など New! |
| ◆ | クラウド的ユーザー体験の変化は脅威か? 仮想化技術を使いこなす運用管理術を紹介 New! |

| ◆ | 上司や部下、部署内メンバーとの情報共有 を“ガラッ”と変えるコラボツールとは? New! |
| ◆ | おばかアプリ選手権、第4弾開催中!! ムダにカッコよくてくだらない作品求ム! |
| ◆ | 社内ファイルサーバを“クラウド”に統合 VPN直結「クラウド型ストレージ」を紹介 |

| ◆ | Twitterのアカウントはなぜ突破された? メールによる新手の攻撃手法とその対策 |
| ◆ | もう仮想化のお試しフェイズは終わりだ! Hyper-V 2.0が基幹システムも仮想化 |
| ◆ | 美人!? まあまあ? 気になる いやし系!! PV急増で「美人時計」がとった手段とは? |

| ◆ | クライアント企業から求められる人材 ⇒IT技術と経営戦略を併せ持つ「戦略家」 |
| ◆ | .NET編集長が実践する「技術情報検索術」 サンプル・コードを簡単に探す“技”は? |
| ◆ | 業務効率と情報セキュリティ対策を両立! 手間なく確実に機密情報を守る方法とは? |

| ◆ | 進化を続ける富士通ストレージETERNUS DX 製品開発者の自信を裏付けるものとは何か |
| ◆ | 運用管理の課題を“2つの観点”から分析 ユーザー満足度の高い「仮想環境」とは? |

| ◆ | 【CTC事例】約30の基幹システムを統合! 膨大なバッジジョブを制御した方法は? |
| ◆ | 仮想化すればコストは削減できるか? 仮想化に必要な「3つの視点」を解説する |
| ◆ | その数、なんと400台以上! グループ内 サーバの「統合管理」によるメリットは? |









