Ask Tomのトムカイトがデータベースのセキュリティを語る
トム・カイト氏は、米国オラクル・コーポレーションの数少ないアーキテクトの1人。同社の主力製品であるデータベースの仕様を決めるといった、重要な仕事を担うエンジニアだ。
こういったアーキテクトは、オラクルの中でもほんの一握りの存在であり、さらに彼は"Ask Tom"というサイトを10年以上の長きにわたり運営していることでも有名だ。
Ask Tomは、世界中から寄せられるOracleに関する技術的な質問に、カイト氏自らが回答するというもの。そのため、彼の存在は、Oracleに携わる世界中のエンジニアからもよく知られている。
そんなカイト氏が来日し、国内のORACLE MASTER Platinum資格を有するエンジニア向けに、特別セミナーが開催された。その中の1つが、データベースを取り巻くセキュリティの話題だ。
カイト氏がオラクルに入社したのは、1993年、このころセキュリティはあまり重要ではなかったと言う。当時はインターネットもまだ普及しておらず、データベースにアクセスするには、マシンが置いてあるビルに行かなければならなかった。つまり、外部からクラッキングする方法そのものが、ほとんど存在しなかったのだ。
2011年になると、セキュリティはデータベースにおいてもトッププライオリティになる。1993年当時は100GBもあれば大規模なデータベースだったが、いまでは100TBあってもそれほど強大ではない。データベース容量が大きくなった分だけ、「センシティブな情報がよりたくさんデータベースに格納されている」(カイト氏)。そして、実際にそれらを狙った攻撃も増えているという。
SQLインジェクションは、攻撃の中でも「一番簡単なもの」(カイト氏)だという。アプリケーションの弱みを攻撃し、結果的にはデータベースから重要なデータを盗む。ここ最近の「情報が盗まれた犯罪のほとんどで、SQLインジェクションが使われている」(カイト氏)。
SQLインジェクションによる攻撃は、データベースのレイヤではセキュリティ対策が施されていないことが前提だ。アプリケーションからデータベースに接続さえできれば、そのアプリケーションのユーザーIDを使ってデータベースにさまざまなコントロールができてしまう。
「防衛方法が、アプリケーションレイヤにしか施されていないと、アプリケーションが突破されればデータベースに対し何でもできてしまう」とカイト氏。とはいえ、このSQLインジェクションをアプリケーションで感知するのは難しい。そして、アプリケーションを書いているエンジニアの多くが、構築したアプリケーションでSQLインジェクションが可能となっていることを知らないとのこと。
また、SQLインジェクションのような外部からの脅威に加え、最近では内部の脅威が取りざたされている。「iPodに数GBのデータをデータベースからダウンロードし持ち出すといったことが簡単に行え、そういうことが起こってもわからないケースも多々ある」(カイト氏)。
DBAの権限を持っていれば、直接データベースに接続できてしまうというわけだ。
カイト氏によれば、外部、内部の脅威に対応するには多層防御の策が必要だという。1つの対策を突破され侵入されても大丈夫なよう、複数の対策を施すべしというわけだ。そして、データを暗号化しておけば、たとえ盗まれてもそのデータが使えないようにできる。