Oracleマスター Silver 12ｃ Oracle Database監査の実装

※用語はなるべく、Oracle® Databaseリファレンス　12c リリース1 (12.1) より抜粋しております。
【太字】：試験最重要ポイント
【青色】：試験問題を解くために必要な理解
【赤字】：最低限押さえておきたい知識
出題例：正解のみ掲載しています

###■公式チェックリストより出題範囲
Oracle Database監査の実装
・標準的なデータベース監査と統合監査を有効にする

■試験内容　チェックリストから除外されたトピック
　－セキュリティと監査に関するDBAの職責について説明する
職責の分離：SYSDBA、SYSOPER、SYSBACKUP、SYSDG、SYSKM、SYSASMの管理権限についての詳細
11ｇ白本の監査トピックで説明されている、「機密性」「完全性」「可用性」、「権限最小化の原則」あたりが試験から除外されたトピック。


－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－

###要点
監査については重点出題項目というわけではありませんので、Oracle Database 12cからの変更点である「統合監査」を中心にポイントを押さえておけばよいでしょう。

11ｇ白本しか使わないよって方は、この統合監査は12ｃからの変更点なので要注意。
パスワードファイルに関する問題は出題範囲ですので注意しましょう。

－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－
###パスワードファイル
SYSDBA、SYSOPERｍSYSASM権限を持つユーザーは、データベースに対して強力な操作を行えるため、常に認証を受ける必要があります。
これらの権限を持つユーザーを「特権ユーザー」といい、このユーザーのアカウントを「特権アカウント」といいます。

リモートで接続している場合は、特権ユーザーの認証は**パスワードファイル**によって行われます。
パスワードファイルはデータベースの作成時に自動的に作成されますが「orapwd」というユーティリティを使用して手動で作成することも可能です。
`$ orapwd file=$ORACLE_HOME/dbs/orapworacle entries=5 ignorecase=N`
file パスワードファイルの名前
entries パスワードファイルに登録できるユーザー数
<font color="Red">ignorecase</font>　パスワードの大文字小文字を区別するか。（Y：区別しない、N：区別する）
デフォルトでは、「区別する」になっています。

####初期化パラメータ
パスワードファイル認証でリモートから接続する場合は、初期化パラメータ**remote_login_passwordfile**を確認する。
デフォルトでは、リモートからの接続を許可する「EXCLUSIVE」となっている。許可しない場合は「NONE」に変更する

###コンプライアンスの監視
　適切なユーザーが適切な操作を行っているか、データベースに対する操作を監視するだけでも、不正侵入や不正操作を減らすことができます。
　Oracleでは次の監査を提供しています。

●**必須監査**
　常に取得される監査情報。管理者権限による**インスタンスへの接続や、データベースの起動／停止のたびに**OSユーザー、そのユーザーの端末識別子、タイムスタンプなどを監査レコードとしてOSファイルやイベントビューアに出力します

●**値ベース監査**
　<FONT COLOR=red>列の値に対する変更を記録する。</FONT>
　データの変更を監査するには値ベースの監査を使用します。監査対象の**イベントだけではなく、<FONT COLOR=red>変更された実際の値も取得</FONT>します。値ベース監査は**データベーストリガーを使用**して実装します。そのためデータベースに対する負荷が高くなり、パフォーマンスの劣化の原因になりやすいので慎重に定義します。

●**ファイングレイン監査**
SQL（SELECT、INSERT、UPDATE、DELETE）を監査し、**特定の列や行を対象**にした監査を行います。
　SQLを監査するには、ファイングレイン監査を使用します。FGAはデータベース監査を拡張したもので、発生したアクションだけでなく、<FONT COLOR=red>**実際に発行されたSQLも取得します**</FONT>

●**標準データベース監査**
　監査対象の**イベント**に関して、発生したイベント、時間、イベントを発生させたユーザー、およびユーザーが使用していたクライアントマシンなどの情報を取得します。

－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－

###監査の実装
　OracleDatabase12ｃ以前は、さまざまなソースからの監査レコードが異なる場所に格納されていましたが、12ｃでは**統合監査**がサポートされており、すべての監査レコードは1つの監査表に格納されます。
●必須監査、DBA監査、標準監査、ファイングレイン監査などの監査を1つに統合した監査を行います。
●SQL、DataPump、RecoveryManagerの操作も対象です。
●読取り専用のUNIFIED_AUDIT_TRAILビューで同一の形式で情報が集約され、一元管理、参照が可能になりました。

■標準監査とのパフォーマンスの違い
・標準監査：監査証拠が作成される度にディスクにフラッシュするため、多少の影響
・統合監査：SGAキューに保存し、後からディスクに書き出すため影響はごくわずか

　12ｃでは、以前に使用可能であった監査機能を使用でき、さらに統合監査機能も使用できる「混合モード」の監査が有効になります。
ただし、従来の監査証拠と統合監査証拠の両方に記録するため、オーバーヘッドが生じます。統合監査モードが有効であれば、統合監査証拠のみに記録されます。

混合モード：ORA_SECURECONGFIGによってデフォルトで有効
アップグレードした場合：手動で統合監査に移行する必要がある
格納先：統合監査証拠はSYSAUX表領域に格納されるAUDSYSスキーマの表

■統合監査の有効化
①データベースインスタンスの停止
　SQL > shutdown immediate

②リスナーの停止
　$ lsnrctl stop

③統合監査の実行可能ファイルを有効にします
　\$ cd $ ORACLE_HOME/rdbms/lib

　\$ **make** -f ins_rdbms_mk uniaud_on ioracle ORACLE_HOME = /$ORACLE_HOME

④リスナーを起動します
　$ lsnrctl start

⑤データベースインスタンスを起動します
　SQL > startup

⑥統合監査が有効になっていることを確認します
　SQL > select value from v$option
        where parameter = 'Unified Auditing';
        VALUE
        -----
        TRUE

次に、統合監査ポリシーを作成して有効にし、監査するアクティビティを指定する必要があります。
　ユーザーがコマンドを実行するか、監査ポリシーに定義されているアクティビティを実行すると、監査レコードが生成されます。監査レコードは、**AUDSYSスキーマ**の監査表に書き込まれ、UNIFIED_AUDIT_TRAILビューを問い合わせることで表示できます。

統合監査の操作のデフォルトモードはキュー書込みモード（SGAに書き込まれます）です。SGAキューがオーバーフローすると、バックグラウンドプロセスによって内容が表にフラッシュされます。

■統合監査が有効な場合に、監査ポリシーの構成に関係なく自動で監査されるアクティビティ
**　・データベース起動前の特権ユーザーによる処理**
　・監査ポリシー管理
　・ファイングレイン監査
　・監査証跡管理
**　・Recover Managerによる処理**


####監査に必要なロールの管理
　監査を実行するには、ユーザーに次のいずれかのデフォルトロールが付与されている必要があります
　●AUDIT_ADMIN
　　・監査設定の構成
　　・監査ポリシー（統合およびファイングレイン）の作成と管理
　　・監査データの表示と分析
　●AUTID_VIEWER
　　・監査データの表示と分析

___

###統合監査ポリシー
　統合監査ポリシーには、3つの事前定義ポリシーがあります。

●**ORAC_SECURECONFIG**
　11ｇと同じデフォルトの監査設定が含まれており、統合監査および混合モードの監査環境ではデフォルトで有効です。

●**ORA_DATABASE_PARAMETER**
　ALETER_DATABASE_PARAMETER
　ALTER DATABAS、ALTER SYSTEMおよびCREATE SPFILEに対する監査設定が含まれています。

●**ORA_ACCOUNT_MGNT**
　CREATE USER、ALTER USER、DROP USER、CREATE ROLE、DROP ROLE、ALTER ROLE、SET ROLE、GRANTおよびREVOKEに対する監査設定が含まれております。

**統合監査ポリシー**の作成はCREATE AUDIT POLICY
構文：CREATE AUDIT POLICY 監査ポリシー名 ACTIONS select ON ユーザー名.表名；

システム全体、オブジェクト固有の監査オプションを使用して監査ポリシーを作成することもできます。

　●権限監査オブション：指定されたシステム権限を使用するすべてのイベントを監査する
CREATE AUDIT POLICY audit_syspriv_pol PRIVILAGES select any table;

　●アクション監査オプション：監査するRDBMSアクションを指定する
CREATE AUDIT POLICY audit_act_pol ACTION audit;

　●ロール監査オプション：ロールに直接付与されたすべてのシステム権限およびオブジェクト権限の使用を監査する。
CREATE AUTID POLICY audit_role_pol ROLES rore1;

<FONT COLOR=red>構文を一言一句覚える必要はなく、CREATE AUTID POLICY...[PRIVILAGES | ACTIONS | ROLES]の部分だけ覚えていればいい。</FONT>


###出題例

**出題例**：次のコマンドを実行しました。正しい説明を選択しなさい。
$ orapwd file=$ORACLE_HOME/dbs/orapworacle entries=5 ignorecase=N

→パスワードファイルを手動で作成するコマンドである。
→リモートからデータベースを管理するユーザーの認証に使用される。
→パスワードの大文字・小文字を区別する。

出題例：クリティカルな列を含む表があります。列にアクセスするユーザー、SQL文を保存する必要があります。適切な方法を選択しなさい。
→ファイングレイン監査を実装

出題例：統合監査証拠はどのように書き込まれますか
・統合監査が無効の場合でも記録される
・デフォルトはキュー書込みモード。一度SGAで保存し、GEN0プロセスによって定期的にAUDSYSスキーマの統合監査証拠表に書き込まれる
→GEN0プロセウスは3秒に一度か、キューサイズの85％を超える書込みを自動保存する
・即時に保存するのであれば、DBMS_AUDIT_MGMT.FLUSH_UNIFIED_AUDIT_TRAILを使用して手動フラッシュを行う
・またはDBMS_AUDIT_MGMT.SET_AUDIT_TRAIL_PROPERTYを使用して即時書込みモードに変更する


出題例：監査ポリシーに関する説明を選択しなさい
→文ごと、セッションごと、インスタンスごとに1度、条件を評価することが出来る（WHEN句を使用する）
→成功時と失敗時の監査タイミングを制御できる（WHENEVER句を使用する）
→オブジェクト監査ポリシーの変更は、新規だけでなく現在のセッションにも適用される

**出題例**：`AUDIT POLICY ORA_DATABASE_PARAMETER EXCEPT [USER名]`
監査の有効化
→最後に指定した文のみが有効になります
→EXCEPT句を指定すると、指定したユーザーを除くすべてのユーザーに対してpolicyを有効にできます。
→何も指定しない場合はすべてのユーザーが有効になります