監査でOracleデータベースのセキュリティ管理:ORACLE MASTER Silver DBA講座(13)
ORACLE MASTER資格の中級に位置付けられ、取得すればOracle技術者としてグローバルに認定される「ORACLE MASTER Silver Oracle Database 10g」。例題を利用してポイントを押さえ、確実な合格を目指そう!
前回の「パスワード管理で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コマンドによる監査オプションの構成が必要です。
- 値ベース監査(データベーストリガー使用)
データベーストリガーを使用して、DMLによるデータの変更を独自の監査証跡に格納することができます。
- ファイングレイン監査(FGA)
ファイングレイン監査を使用すると、列や行を限定した監査が行えます。監査対象となるSQL文は、SELECT、INSERT、UPDATE、DELETEです。結果となる監査証跡は、集中監査証跡(FGA_AUDIT_TRAIL)だけでなく、独自のプロシージャを設定することで独自の監査証跡に格納することも可能です。
問題
問題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)します。これらを満たす正解の選択肢はbとdです。
そのほかの選択肢の不正解の理由は次のとおりです。
●選択肢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関連の資格をテーマとして取り上げています。「無料お試し版」もありますので、記事と併せてご覧ください。
- リカバリ機能でOracleデータベースを復活させる
- Oracleデータベースのバックアップを取得する
- Oracleのバックアップ/リカバリの仕組みとは?
- Oracleでの問題発生を予防する
- Oracleのパフォーマンスを最適化する
- ロックでOracleのデータを守り、競合を防ぐ
- UNDO管理でOracleのデータを守る
- Oracle共有サーバ接続を利用する
- Oracleのネットワークのクライアント側構成を知る
- Oracleのネットワークのサーバ側構成とは?
- 監査でOracleデータベースのセキュリティ管理
- パスワード管理でOracleデータベースを守る
- PL/SQLを使いこなしてデータベース管理
- Data PumpとSQL*Loaderによるデータのロード
- SQLでのデータ操作方法を覚えよう
- Oracleデータベースのオブジェクトを管理する
- 権限とロールで効果的なユーザー管理を
- Oracleユーザーを作成してみよう
- Oracleデータベースの記憶域はどうなっている?
- Oracleデータベースの起動と停止を押さえよう
- Oracleデータベースの制御ツールを使い倒す
- 便利なツールでOracleデータベース作成
- Oracleを適切にインストールするには
Copyright © ITmedia, Inc. All Rights Reserved.