日曜日 6 19, 2011

追加オプション無しでここまでできる!Oracle Database のセキュリティ対策

当然のことですが、データベースの中には重要なデータが格納されており、
これらのデータは、適切な権限を持つユーザによって、適切なタイミングで参照されるべきものです。
しかしながら、情報漏洩やデータの改ざんなど、大切なデータを脅かす様々な脅威が存在することも事実です。

このような問題は、悪意あるユーザからの意図的な不正アクセスによって引き起こされるものと
考えがちですが、実はアプリケーション開発者やデータベース管理者など、
正当な権限を持ったユーザからのミスオペレーションなどによっても引き起こされる可能性があります。

このため、システム/セキュリティ管理者は、「誰が」「いつ」「どのようなアクションを行ったのか」という点を
常に監視することが重要です。
また、データベースに接続する様々なユーザに対して、過剰に上位の権限を付与しないよう
適切な権限管理を行うことも、セキュアな環境を構築する上で非常に重要です。

とは言っても、セキュリティ管理者が常にデータベースのそばで見張っているわけにもいかないですし、
あまりにも細分化したセキュリティ管理は手順が煩雑になりやすく、管理者自身の作業量が増加してしまう可能性があります。

Oracle Database ではこうした問題に取り組むために、
ユーザ認証を強化するための「パスワードポリシー機能」、
データの参照レベルを制御する「アクセス制御機能」、
格納されているデータを暗号化する「暗号化機能」、
データベース内でのアクティビティを監視する「監査機能」などの機能が
標準機能として用意されています。

せっかく付いているこれらの機能、知らないまま使わないのはもったいない!ということで、
標準機能のみでできるセキュリティ対策の TIPS を今回はご紹介したいと思います。


最初が肝心!ユーザ認証の強化

データベース内のデータにアクセスするためには、データベースインスタンスに接続する必要があります。
Oracle Database では様々な認証方法がありますが、特にパスワード認証でユーザの認証を行っている環境では、
このパスワードを知られてしまうと誰でもインスタンスにログインできてしまいます。

Oracle Database では、プロファイルを使用したパスワードポリシーの強化を行うことができます。
以下がその例です。

FAILED_LOGIN_ATTEMPTS    ログイン試行回数の制限
PASSWORD_LIFE_TIME       パスワード有効期間
PASSWORD_REUSE_TIME      パスワードが再利用できるようにまでの期間
PASSWORD_REUSE_MAX       現行のパスワードを再利用する前に必要なパスワードの変更回数
PASSWORD_LOCK_TIME       ログインが指定された回数連続して失敗した場合、アカウントがロックされる日数
PASSWORD_GRACE_TIME      ログインが許可される猶予期間の日数
PASSWORD_VERIFY_FUNCTION パスワード検証用のファンクションを指定 (*1)

(*1)ファンクションのサンプルが以下に用意されています。

  $ORACLE_HOME/rdbms/admin/utlpwdmg.sql


例えば、サンプルとして用意されている utlpwdmg.sql を使用することで、
パスワード設定時に以下のチェックを行うことができます。

 - ユーザー名と同じかどうかのチェック
 - パスワード長のチェック
 - 簡単な用語でないかのチェック
 - 英文字、数字、記号が入っているかのチェック
 - 過去に使ったパスワードかどうかのチェック

これらを使えば、常にパスワードポリシーに沿ったパスワードのみが設定される
ことになりますので、悪意あるユーザに不正に進入されるリスクが軽減します。


見えてはいけないデータが見えてしまうのを防ぐ!アクセス制御

繰り返しになりますが、データベースの中には大切なデータが格納されています。
アプリケーションのユーザなどが使用するデータベースユーザから、直接本番
データを参照できる権限を与えていませんか?
これらのユーザが SQL*Plus などからデータベースにログインした場合、誤って
データの更新や削除を行ってしまう可能性もあります。
主に参照専用のデータベースユーザであれば、本番データのオブジェクト権限は
参照権限のみとするなど、不用意な更新・削除を未然に防ぐ工夫も必要です。

また、Enterprise Edition を使用している環境のみとなりますが、
Virtual Private Database(VPD) という機能があります。
この機能は仮想プライベートデータベースと呼ばれる機能で、一つの表を参照する複数のユーザに対して、
異なったアクセス制御を行うことが可能となる機能です。
同じ表に対する全件検索でも、ユーザごとにアクセス権限に合致した結果セットを戻すことができるため、
アクセス手段に係わらないアクセス制御を行うことができます。
そのため、アプリケーション側ではアクセス制御のロジックが不要となり、
アプリケーションの開発コストを抑える効果等が期待できます。

本機能の詳細について、技術文書が公開されています。是非参照して下さい。


最悪の事態に備えて、データを暗号化しよう

データベース内のデータはデータファイルに格納されていますが、
このデータファイルを悪意あるユーザに万が一奪われてしまった場合、
クラッキングソフトなどを用いて内容を参照されてしまう可能性があることも否めません。
情報漏えいという最悪の事態を回避するために、データは暗号化した形で格納しておくことで、
よりデータベース環境をセキュアな状態にすることができます。

Oracle Database のデータの暗号化ソリューションとしては、Oracle Advanced Security のオプションが必要となる、
透過的データ暗号化の機能を思い浮かべる方が多いと思いますが、
なんと、DBMS_OBFUSCATION_TOOLKIT や DBMS_CRYPTO といった暗号化/複合化用の PL/SQL パッケージが
実は標準機能として用意されています。
このパッケージをデータの格納時と参照時に使用するだけでデータの暗号化が実現できてしまいます。



問題の特定につながります!監査機能

Oracle Database では、特定のアクティビティを自動で監視する監査の機能を備えています。

デフォルトで用意されている監査機能は、必須監査、DBA 監査、標準監査、ファイングレイン監査の 4 つです。
ファイングレイン監査は Enterprise Editionでのみ使用可能ですが、
必須監査、DBA 監査、標準監査は全エディションで使用可能です。
これらはそれぞれ以下のような特徴があります。

[必須監査]

監査機能の設定に関わらず、デフォルトで以下のアクティビティを監査します。
この監査出力を停止することはできません。
 - インスタンスの起動、停止
 - 管理者権限(SYSOPER, SYSDBA)によるデータベース接続
 - リスナー経由での接続(リスナーログへの記録)

この機能により、管理者権限でのデータベース接続やインスタンスの起動・停止といった
重要なオペレーションが全て確認できるため、不必要なオペレーションが
実施されている時間帯が無いかどうかを確認することができます。

[DBA 監査]

データベース管理者権限(DBA 権限)を持ったユーザが行った全てのデータベース
操作を監査します。この監査機能を有効にするためには、AUDIT_SYS_OPERATIONS
パラメータを TRUE に設定する必要があります。
監査ログは OS 上に出力されるため、システム/セキュリティ管理者がこれを監視することで、
データベース管理者権限で問題のあるオペレーションが行われていないかどうか確認することができます。

[標準監査]

データベースへの一般的な操作を監査します。この監査機能を有効にするために
は、AUDIT_TRAIL パラメータを設定する必要があります。また、標準監査には
以下の種類があります。

 - セッション監査
   ログオン・ログアウトを監査
 - オブジェクト監査
   特定のオブジェクトに対して行われた参照や更新などの操作を管理
 - 権限監査
   特定スキーマからの権限付与を監査
 - SQL 文監査
   特定スキーマから発行された DDL 文などの監査

[ファイングレイン監査]

特定のデータ(列名、条件指定可能)への参照や更新などの操作を監査します。
Enterprise Edition でのみ使用可能です。


監査機能に関連した技術文書も公開されています。


今回は Oracle Database のセキュリティ機能の中でも、基本中の基本の内容をご紹介させて頂きました。
既にこれらの機能をご存知の方も、そうでない方も、セキュリティ対策がしっかりされているかどうか、
今一度お確かめ頂く機会になれば幸いです。

About

日本オラクル カスタマ・サポートのエンジニアがお勧めのサポート情報を紹介します。


本サイトの一部のリンク先へアクセスするには My Oracle Support のアカウントが必要です。
My Oracle Support の概要については http://oracle.co.jp/mos をご参照ください。

Search

Archives
« 4月 2014
  
1
2
3
4
5
6
7
8
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
   
       
Today