佳2006/7/26個人情報保護法に続き日本版SOX法の制定を目前に控え、内部統制という観点からデータベースのセキュリティ対策が注目されている。本記事では、前編においてはデータベース・セキュリティの実装状況の分析、後編ではOracleのセキュリティ機能の実装ポイントを解説する。3--可及的な監査を行うには?前編の「データで分析するDBセキュリティの立ち遅れ原因」では、アシストが開催するセミナー参加者に行ったアンケート結果から、どのようなセキュリティ対策が行われているのかを確認しました。ユーザー認証やアクセス制御、アカウント管理などを優先して対応している状況を確認することができましたが、現時点ではデータベースに対するセキュリティ対策は、サーバやネットワークのセキュリティ対策ほど普及していない状況であることも分かりました。データベース・セキュリティが重要であるということは認識しているものの、ほかのセキュリティ対策を優先したり、実装に当たって影響範囲の広さなど考慮すべき点が多いために、なかなか実装にまでは至っていないケースも多くあることが推測されます。今回は、Oracleデータベースにおけるセキュリティ機能である「格納データの暗号化」と「監査」について、実装するうえでポイントとなる項目やパフォーマンスの検証結果を踏まえた実装時の注意点や特徴などを見ていきます。格納データの暗号化データベースのセキュリティ対策にはいくつかの側面がありますが、「情報漏えい」の観点から対処すべき暗号化について説明します。暗号化には、格納されているデータに対する暗号化と、クライアント(アプリケーションサーバを含む)とデータベースサーバ間のネットワークトラフィックを暗号化する方法があります。クライアントとデータベースサーバ間の通信データは、通常はプレーンテキストの状態で送信されるため、パケットを取得されることで情報漏えいにつながる可能性があります。大量の個人情報を取得する悪意のあるユーザーからすると、通信データからデータを取得する方法は効率的であるとはいえません。対象端末の設置場所を社内ネットワークから隔離することで、そうした行為への対応を施すことができます。一方の格納データを暗号化する場合には、すでに存在するデータを暗号化する必要があるだけでなく暗号鍵の管理も発生するため、メンテナンスのコストや既存アプリケーションの改修にコストを要することになります。このコストをいかに解消していくかがポイントとなっています。格納データの暗号化にはどのような実装方法があるのでしょうか。Encryption(以下、TDE)を利用する方法に大別できます(図1)。5(MD5)ハッシュ・アルゴリズムを使ってデータのハッシュ値を生成します。Cipher4(RC4)といったアルゴリズムを利用できます。1(SHA-1)ハッシュ・アルゴリズムを利用することも可能です。TDETDEは暗号化対象の列を指定し、対象列に値が格納、参照されると自動的に暗号化/復号の処理を実施します。この処理はサーバプロセスが起動して行われるため、アプリケーションへの暗号化ロジックの組み込みや、SQLの修正は必要ありません。Oracleが自動的に表ごとの列暗号鍵自体も暗号化してデータディクショナリに格納するため、アプリケーションで暗号鍵を管理する必要もありません。それぞれ、利用できるバージョンとエディションに違いがある点や、実装可能なデータ型に差がある点に注意が必要です。LOB系の列に対する暗号化を実装したい場合にはTDEでは未対応のため、DBMS_CRYPTパッケージを利用する必要があります。パッケージによる暗号化の場合には、索引のある列に対して実装をした場合、索引走査が行われません。このため、パフォーマンスに影響が出る可能性がある点を考慮する必要があります。(2017/7/26)データベース管理システムの運用でトラブルが発生したらどうするか。DBサポートスペシャリストが現場目線の解決Tipsをお届けします。Server」で発生するトラブルを「どんな方法で」「どのように」解決していくか、正しい対処のためのノウハウを紹介します。(2017/7/21)日本オラクルのデータベーススペシャリストが「DBAがすぐ実践できる即効テクニック」を紹介する本連載。(2017/7/20)本連載では、「データベースセキュリティに必要な対策」を学び、DBMSでの「具体的な実装方法」や「Tips」などを紹介していきます。