100ノードのクラスタをサポートする最新版Oracle (3/4)

日本オラクル
一志 達也
2005/11/10

Part 3 安全性の進化

 データベースに格納されたデータの安全性は、これまでも必要とされてきましたが、昨今はこれまでになく注目を集めています。Part 1でも触れたように、データの安全性を確保するには、盗難を防ぐ暗号化やID管理と不正の証拠を残す監査が欠かせません。ここではまず、Oracle Database 10g Release 2で大きく進化した暗号化機能について紹介します。

プログラミング不要のデータ暗号化

 データを暗号化して格納するのは、データファイル自身が盗難に遭ったりしても、中のデータを読み取られないようにするためです。これまでのOracleデータベースも、PL/SQLのユーティリティ・パッケージを呼び出すことで、データの暗号化を行えました。データを格納する際に、値を関数に通すことで暗号化し、取り出す際にも同様に関数に通すことで復号していたのです。これでも、データを暗号化して格納するというニーズは満たせましたが、アプリケーションの開発やテストの工数が増大してしまいます。これでは、必要性を感じていても、暗号化を行わなくなってしまうのも仕方がないかもしれません。

 Oracle Database 10g Release 2で実装された、透過的なデータ暗号化(Transparent Data Encryption)ならば、表の定義で暗号化したい列に「encrypt」とキーワードを記述するだけです(リスト1)。データを格納するときにも、取り出すときにも、特別な処理は必要ありません。対象となる列のデータは、Transparent Data Encryption機能によって自動的に暗号化され、自動的に復号されるようになるからです。

Create table orders(
  order id number (12)     not null,
  cust_id number(12)       not null,
  credit_card varchar2(19) encrypt
);

Alter table orders
    ……
リスト1 透過的なデータ暗号化(Transparent Data Encryption)
暗号化の対象となる列に「encrypt」とキーワードを記述するだけで、アプリケーションから透過的にデータを暗号化できる。

 この方法であれば、アプリケーション側で暗号処理について一切意識する必要がありませんから、開発工数を増大させる心配もありません。データベース管理者が、必要なときに、必要だと思う列を暗号化の対象として定義すればいいのです。

 アプリケーション側で意識する必要がないという利点は、既存のデータベースに対して暗号化を行う場合にも、非常に有益な利点となります。データベースを移行するときに、移行先となるデータベースで暗号化列の定義をしておけば、アプリケーションに一切の変更を加えることなく暗号化できるからです。さらに、Transparent Data Encryption機能では、暗号化した列に索引を作れるという特徴があります。これによって、暗号化によるパフォーマンスの劣化は最小限にとどまりますから、アプリケーションのユーザビリティを損なわずに済むでしょう。

 また、REDOログやアーカイブログ、メモリ上にキャッシュされているデータまで、暗号化の対象となる列のデータはすべて暗号化された状態になる点も重要です。いくらデータファイルに格納されるデータを暗号化しても、ログに残される内容が平文のままでは不十分です。Oracle Database 10g Release 2の暗号化機能は、手軽に扱えるだけでなく、極めて高度なセキュリティレベルを実現するのです。

監査の重要性

 ファイルの盗難に備えて暗号化を施し、データへの不正なアクセスを防ぐためにユーザーの権限を厳密に管理する予防措置に加えて、万が一の不正に備えて監査を行うことも安全性の確保に欠かせません。だれがいつ何を行ったのか、監査を行って記録していれば、万が一の場合にも被害を最小限に食い止め、事件の解決に役立つことでしょう。また、監査が行われていることが公表されていれば、犯罪を防ぐ抑止力としても効果を発揮します。

 Oracleデータベースは、以前からDBA監査/OS監査/データベース監査といった監査機能を提供しており、Oracle9i Databaseからは値ベースで監査対象を限定するファイングレイン監査も提供されています。これら4種類の監査機能が提供されているのは、Oracle Database 10g Release 2でも変わりませんが、監査レコードをXML形式で書き出せるようになりました。この進化により、ほかのコンポーネントの監査結果とデータベースの監査結果を統合したり、より効率よく分析したりできるようになります。

 さらに、Linux/UNIXの場合には、SYSLOGへの監査レコードの記録が可能になりました。この進化により、システム管理者あるいはセキュリティ管理者が、データベース管理者の不正を監視できるなど、客観的な監査を実現します。これまでにも、監査レコードをOSのファイルに記録する機能は提供されていましたが、SYSLOGへ統合することで監視ツールとの連携などが容易になるのです。

 こうした暗号化や監査に加えて、OracleではID管理のソリューションも提供しています。昨今主流となっているWebシステムでは、コネクションプーリングを用いることなどから、実際に接続したユーザーで監査を行うのが困難です。その点、OracleのID管理ソリューションであれば、ディレクトリサーバで管理されているユーザー名をデータベース側で取得できるようになります。ここでは、その詳細を紹介できませんが、詳しく知りたい方はOTN-Jに掲載されているドキュメントなどを参考にしてください。(次ページに続く)

3/4

 Index
Oracle Database 10g Release 2 レビュー
  100ノードのクラスタをサポートする最新版Oracle
  Part 1
・Oracle Database 10g Release 2の進化とは
  Part 2
・可用性の進化
Part 3
・安全性の進化
  Part 4
・開発生産性の進化
・まとめ


Oracle Database 10g Release 2 レビュー


Database Expert フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Database Expert 記事ランキング

本日月間