連載
» 2007年05月02日 00時00分 公開

ORACLE MASTER Silver DBA講座(13):監査でOracleデータベースのセキュリティ管理

ORACLE MASTER資格の中級に位置付けられ、取得すればOracle技術者としてグローバルに認定される「ORACLE MASTER Silver Oracle Database 10g」。例題を利用してポイントを押さえ、確実な合格を目指そう!

[有限会社 G.F.インフィニティ (Project - ∞)]

 前回の「パスワード管理でOracleデータベースを守る」に引き続き、Oracleデータベースのセキュリティについて学びます。

Oracle Databaseのセキュリティ:監査

ポイント

 Oracleサーバにおける認証関連のセキュリティと監査処理が対象となります。データベース監査、データベーストリガーを使用した監査、ファイングレイン監査で何ができるのかを確認しておきましょう。

権限最小化原則

 Oracleサーバのセキュリティを向上させるためには、操作に必要な権限のみをユーザーに対して与える必要があります。関連する保護機能には次のものがあります。

  • データディクショナリの保護
    O7_DICTIONARY_ACCESSIBILITY初期化パラメータで制御できます。デフォルトのFALSEにしておくことで、SELECT ANY TABLEシステム権限があってもデータディクショナリにアクセスできなくなります。データディクショナリへのアクセスには、個別のオブジェクト権限かSELECT ANY DICTIONARYシステム権限が必要です。また、FALSEの場合、SYSユーザーでのログオンは、SYSDBAまたはSYSOPERとしての接続が必要となります。
  • PUBLICからの不要な権限の取り消し
    Oracleサーバでは、いくつかのビルトインパッケージに関して、PUBLICにEXECUTE権限が付与されています。使用方法を誤ると危険と考えられるパッケージのEXECUTE権限はPUBLICから取り消し、個別のユーザーまたはロールに付与するようにします。

 現在、PUBLICに付与されている権限を確認するには、次のデータディクショナリを使用します。

オブジェクト権限 BA_TAB_PRIVS
システム権限 DBA_SYS_PRIVS
ロール DBA_ROLE_PRIVS
  • SYSDBA、SYSOPER権限の管理
    データベースの起動や停止、リカバリといった特別な操作を行うことのできるSYSDBA、SYSOPER権限は、必要なユーザーのみに付与します。データベース管理に必要な操作は、ロールや個別のシステム権限、オブジェクト権限の付与にて対応するべきです。

 現在、SYSDBA、SYSOPER権限がどのユーザーに付与されているかは、次の方法で確認します。

OS認証 OSのOSDBAグループ(UNIXはdba、WindowsはORA_DBA)に属しているかどうか
パスワードファイル認証 V$PWFILE_USERSで確認
SQL> SELECT * FROM v$pwfile_users;
USERNAME                       SYSDB SYSOP
------------------------------ ----- -----
SYS                            TRUE  TRUE

監査

 疑わしい操作が発生したかどうかを確認するためには、監査機能の組み込みが重要です。Oracleサーバで提供される監査機能には次のものがあります。

  標準監査 値ベース監査 ファイングレイン監査
監査対象 権限の使用 DMLによる値変更 特定の列、行へのアクセス(SQL)
監査証跡 集中監査証跡
(DBA_AUDIT_TRAIL)
独自に定義 集中監査証跡
(DBA_FGA_AUDIT_TRAIL)オプションで独自に定義
  • 標準監査
    標準監査を行うには、AUDIT_TRAIL初期化パラメータの調整とAUDITコマンドによる監査オプションの構成が必要です。
図1 標準監査 図1 標準監査
  • 値ベース監査(データベーストリガー使用)
    データベーストリガーを使用して、DMLによるデータの変更を独自の監査証跡に格納することができます。
図2 値ベース監査 図2 値ベース監査
  • ファイングレイン監査(FGA)
    ファイングレイン監査を使用すると、列や行を限定した監査が行えます。監査対象となるSQL文は、SELECT、INSERT、UPDATE、DELETEです。結果となる監査証跡は、集中監査証跡(FGA_AUDIT_TRAIL)だけでなく、独自のプロシージャを設定することで独自の監査証跡に格納することも可能です。
図3 ファイングレイン監査 図3 ファイングレイン監査

問題

問題1

次の初期化パラメータが設定されているときの動作を選択しなさい。

REMOTE_OS_AUTHENT=TRUE

a.リモートクライアントからのOS認証は拒否する
b.リモートクライアントからのOracleデータベースへの接続でOS認証が使用される
c.リモートクライアントに対し、OS認証で接続できる
d.リモートシステムのオペレーティングシステムの変更が許可される

正解:b

解説

 前回、宿題とした問題です。

 REMOTE_OS_AUTHENT初期化パラメータは、リモートからの接続時にOS認証を使用できるかどうかを制御する初期化パラメータです(正解b)。この値がTRUEの場合、OS認証を使用した「connect /@ネットサービス名」のような接続が可能になります。

 そのほかの選択肢の不正解の理由は次のとおりです。

選択肢a:REMOTE_OS_AUTHENT初期化パラメータがFALSE(デフォルト値)の場合の動作です。

選択肢c、d:Oracleサーバからのリモートクライアントへの接続やリモートサーバのOS変更は、OracleサーバではなくOS側で行うべき制御事項です。

問題2

DBA_OBJ_AUDIT_OPTSデータディクショナリビューを確認したところ、次のような結果が表示されました。

OBJECT_NAME     INS   UPD   DEL
--------------- ----- ----- -----
DEPARTMENTS     -/-   A/S   -/-
EMPLOYEES       A/-   -/-   A/S

この設定に関する説明として正しいものを2つ選択しなさい。

a.DEPARTMENTS表では、UPDATE文が成功した場合はそのセッションで1度だけ監査レコードが収集され、失敗した場合はアクセス別に監査レコードが収集される
b.DEPARTMENTS表では、UPDATE文が失敗した場合はそのセッションで1度だけ監査レコードが収集され、成功した場合はアクセス別に監査レコードが収集される
c.EMPLOYEES表では、INSERT文が失敗した場合はアクセス別に監査レコードが収集され、成功した場合は監査しない。DELETE文が成功した場合はそのセッションで1度だけ監査レコードが収集され、失敗した場合はアクセス別に監査レコードが収集される
d.EMPLOYEES表では、INSERT文が成功した場合はアクセス別に監査レコードが収集され、失敗した場合は監査しない。DELETE文が失敗した場合はそのセッションで1度だけ監査レコードが収集され、成功した場合はアクセス別に監査レコードが収集される

正解:b、d

解説

 DBA_OBJ_AUDIT_OPTSデータディクショナリビューは、オブジェクト監査に関する設定を確認するビューです。各列は個別のオブジェクト権限を表し、-(監査なし)、A(アクセスごとに監査)、S(セッションで1度だけ監査)の値を成功時と失敗時の設定別に表しています。

  • 「/」の左側: 成功時の監査設定
  • 「/」の右側: 失敗時の監査設定

 DEPARTMENTSレコードはUPD列のみに値があるため、UPDATE時の監査であることが分かります。「A/S」ですから、成功時はアクセスごとに(A)、失敗時はセッションで1度だけ監査(S)します。

 EMPLOYEESレコードは、INS列(INSERT時)が「A/-」のため、成功時はアクセスごと(A)、失敗時は監査なし(-)です。DEL列(DELETE時)は「A/S」のため、成功時はアクセスごと(A)、失敗時はセッションで1度だけ監査(S)します。これらを満たす正解の選択肢はbdです。

 そのほかの選択肢の不正解の理由は次のとおりです。

選択肢a:DEPARTMENTSレコードのUPD列が「S/A」の場合の説明です。

選択肢c:EMPLOYEESレコードのINS列が「-/A」、DEL列が「S/A」の場合の説明です。

問題3

表に対するSELECTを監視することのできる機能を選択しなさい。

a.ファイングレイン監査(FGA)
b.ファイングレインアクセスコントロール(FGAC)
c.データベーストリガー
d.ファンクション

正解:a

解説

 SELECT文を監視するには、標準監査(AUDIT)か、ファイングレイン監査(FGA)を使用します(正解a)。権限の使用に関して監査する場合は標準監査を使用し、指定した列と行へのアクセスを監査する場合はFGAを使用します。

 Oracle Database 10gのFGAは、SELECT文だけでなく、DML文の監査を行うこともできます。

 そのほかの選択肢の不正解の理由は次のとおりです。

選択肢b:ファイングレインアクセスコントロールは、アクセスする行を制限するための機能です。ユーザーが処理を行うとき、自動的に述語(WHERE句)を追加することで行を制限します。結果的に、複数のユーザーが同じ表にアクセスしても、そのユーザーがアクセスできる行のみが処理の対象となります。

選択肢c:データベーストリガーを使用した監査では、トリガーが起動するイベントで監査が行われます。DML文であればトリガーイベントになりますが、SELECT文はトリガーイベントにならないため、不正解です。

選択肢d:ファンクションは、ユーザー定義の関数を作成するために使用するものです。明示的に呼び出す必要があるため、ファンクションだけでは監査設定にはなりません。

宿題

 次回から2回にわたって、Oracle Netの構成方法を確認します。次の宿題を解いておいてください。

問題

ホスト名とリスナー名が分かれば、どのユーザーもリスナーの停止やリスナー状態のチェックが可能です。この動作を制限する方法として適切なものを選択しなさい。

a.listener.oraファイルの保存場所を変更する
b.リスナーを隠す
c.リスナーにパスワードを設定する
d.デフォルトのリスナー名を使用しない

IT資格試験の模擬問題をWebベースで学習できる@IT自分戦略研究所の新サービス「@IT資格攻略」では、「Silver DBA(Oracle10g)」をはじめOracle関連の資格をテーマとして取り上げています。「無料お試し版」もありますので、記事と併せてご覧ください。



Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。