プライマリ・コンテンツに移動
Oracle® Database 2日でセキュリティ・ガイド
12c リリース2 (12.1)
B71287-07
目次へ移動
目次
索引へ移動
索引

前
次

9 データベース・アクティビティの監査

データベース・アクティビティの監査のために統合監査を使用すると、データベースでのユーザーの行動を監査するポリシーを様々な方法で作成できます。

トピック:

関連項目:

  • ユーザーおよびデータベース・アクティビティを監査する他の方法については、『Oracle Databaseセキュリティ・ガイド』を参照してください。

  • 監査ポリシーの作成に関する重要なガイドラインは、『Oracle Databaseセキュリティ・ガイド』を参照してください。

  • 拡張監査機能の詳細は、『Oracle Audit Vault and Database Firewall管理者ガイド』を参照してください。

監査の概要

監査は選択したユーザーのデータベース・アクションの監視と記録です。

監査を行うには、適切なシステム権限が付与されている必要があります。職務分掌を推進するために、次の2つのデフォルト・ロールが用意されています。

  • AUDIT_ADMINロール。監査の構成、および統合監査ポリシーとファイングレイン監査ポリシーの両方の管理を行えます。監査データの表示と分析も行えます。通常、セキュリティ管理者にこのロールが付与されます。

  • AUDIT_VIEWERロール。監査データの表示と分析のみ行えます。通常、外部監査者にこのロールが付与されます。

この項では、次の場所から監査レコードを取得する統合監査の概要を示します。

  • 統合監査ポリシーおよびAUDIT設定による監査レコード(SYS監査レコードを含む)

  • DBMS_FGA PL/SQLパッケージによるファイングレイン監査レコード

  • Oracle Real Application Security監査レコード

  • Oracle Recovery Manager監査レコード

  • Oracle Database Vault監査レコード

  • Oracle Label Security監査レコード

Oracle Databaseによって、これらのレコードが1つの場所に1つの形式で統合されます。単一データベース・インスタンスの場合はUNIFIED_AUDIT_TRAILビューから、Oracle Real Application Clusters環境の場合はGV$UNIFIED_AUDIT_TRAILから参照できます。

データベースを現在のリリースにアップグレードする場合、統合監査を使用するには手動で移行する必要があります。アップグレードしたデータベースでの移行の完了後も、以前のリリースの監査レコードは使用可能です。これらの古い監査証跡のアーカイブおよびパージを行います。その後、新規監査レコードは統合監査証跡に書き込まれます。

新たに作成するデータベースの場合、Oracle Databaseで混合モードに対応した監査が提供され、新旧両方の監査機能を同時に実行できます。

統合監査ポリシーを作成し、有効にすると、このポリシーでただちに監査レコードの収集が開始されます。以前のリリースでは必要だった初期化パラメータを設定しなくても、監査全体が有効になります。ポリシーは、1ユーザーのアクティビティの監査のような単純なものにすることも、条件を使用した複雑な監査ポリシーを作成することもできます。1つのデータベースで同時に複数の監査ポリシーを有効にできます。監査ポリシーには、システム全体の監査オプションとオブジェクト固有の監査オプションの両方を含めることができます。一般的なアクティビティに対する監査の大半(標準監査を含む)に、監査ポリシーを使用する必要があります。

監査の別タイプとして、ファイングレイン監査もあります。ファイングレイン監査では、統合監査の監査機能のほとんどと次の機能が提供されます。

  • 特定の列の監査。給与や社会保障番号など、機密情報が格納されている特定の関連する列を監査できます。

  • イベント・ハンドラの使用。たとえば、夜中に変更されないようにする必要がある監査対象の列が更新された場合に、セキュリティ管理者に電子メール・アラートを送信する関数を作成できます。

Oracleには、よく使用されるセキュリティ関連の監査設定を対象とする、あらかじめ定義された監査ポリシーが3つあります。これらのポリシーは、強力な内部統制を実施して、コンプライアンス要件を満たすための効果的な方法となるように設計されています。

関連項目:

  • 統合監査への移行および混合モード監査の詳細は、『Oracle Databaseアップグレード・ガイド』を参照してください。

  • 監査証跡のアーカイブとパージの詳細は、『Oracle Databaseセキュリティ・ガイド』を参照してください。

  • ファイングレイン監査の詳細は、『Oracle Databaseセキュリティ・ガイド』を参照してください。

  • 事前定義された監査ポリシーの詳細は、『Oracle Databaseセキュリティ・ガイド』を参照してください。

監査を使用する理由

通常、監査は、ユーザー・アカウンタビリティの有効化、不適切なユーザー・アクションの抑止、不審なアクティビティの調査などの業務を実行するために使用されます。

監査を使用する理由は、次のとおりです。

  • アクションに対するアカウンタビリティの有効化。特定のスキーマ、表または行に対して実行されるアクション、あるいは特定の内容に影響を与えるアクションなどがあります。

  • アカウンタビリティに基づいて不審なユーザーによる不適切なアクションを阻止します。

  • 不審なアクティビティを調査します。たとえば、ユーザーが表からデータを削除しようとした場合、セキュリティ管理者は、そのデータベースへのすべての接続と、そのデータベースにあるすべての表からの行の削除(成功および失敗)をすべて監査できます。

  • 認可されていないユーザーによるアクションを監査人に通知します。たとえば、認可されていないユーザーがデータを変更または削除を実行できるなど、予期した以上の権限を持っている場合に、ユーザー認可を再評価できます。

  • 認可またはアクセス制御の実装に関する問題の検出。たとえば、データは他の方法で保護されているため、監査レコードは生成されないと予測される監査ポリシーを作成できます。しかし、これらのポリシーで監査レコードが生成された場合は、他のセキュリティ制御が正しく実装されていないことがわかります。

  • コンプライアンスのための監査要件への対処。次のような法規に、監査に関連する一般的な要件が含まれています。

    • サーベンス・オクスリー法

    • 米国の医療保険の相互運用性と説明責任に関する法律(Health Insurance Portability and Accountability Act、HIPAA)

    • 自己資本の測定と基準に関する国際的統一化: 改訂された枠組(バーゼルII)(International Convergence of Capital Measurement and Capital Standards: a Revised Framework、Basel II)

    • 日本の個人情報保護法

    • 欧州連合のプライバシと電子通信に関する指令(European Union Directive on Privacy and Electronic Communications)

  • 特定のデータベース・アクティビティに関するデータの監視と収集。たとえば、データベース管理者は、更新された表、実行された論理I/O操作の回数、ピーク時に接続していた同時実行ユーザーの数などに関する統計を収集できます。

チュートリアル: 統合監査ポリシーの作成

OE.CUSTOMERS表のSELECT文を監査する場合を想定します。このチュートリアルでは、OE.CUSTOMERS表に対するSELECT文を監視する統合監査ポリシーを作成します。

トピック:

手順1: 統合監査の有効化(必要に応じて)

この手順では、統合監査が有効かどうかをチェックし、有効でない場合は有効にします。

統合監査を有効にするには、次のようにします。

  1. SYSDBA管理権限を使用してユーザーSYSとしてSQL*Plusにログインします。

    sqlplus sys as sysdba
    Enter password: password
    
  2. 次の問合せを実行して、データベースが統合監査を使用するよう移行されているかどうかを確認します。次に示す大/小文字でUnified Auditingと入力します。

    SELECT VALUE FROM V$OPTION WHERE PARAMETER = 'Unified Auditing';
    

    VALUE列の出力がFALSEの場合、この項の残りのステップを実行して統合監査に移行します。出力がTRUEの場合は、統合監査が有効であり、手順2: SEC_ADMINユーザーへのAUDIT_ADMINロールの付与に進むことができます。

  3. データベースを停止します。

    単一インスタンスのインストールの場合、SQL*Plusから次のコマンドを入力します。

    SHUTDOWN IMMEDIATE
    EXIT
    

    Windowsシステムでは、Oracleサービスを停止します。

    net stop OracleService%ORACLE_SID%
    

    Oracle Real Application Clusters (Oracle RAC)インストールの場合、次のようにして各データベース・インスタンスを停止します。

    srvctl stop database -db db_name
    
  4. リスナーを停止します。(Oracle RACおよびGrid Infrastructureリスナーでは、リスナーを停止する必要はありません。)

    lsnrctl stop listener_name
    

    リスナー名は、lsnrctl statusコマンドを実行すると確認できます。この名前は、Alias設定によって示されます。

  5. $ORACLE_HOME/rdbms/libディレクトリに移動します。

  6. 統合監査実行可能ファイルを有効にします。

    • UNIX: 次のコマンドを実行します。

      make -f ins_rdbms.mk uniaud_on ioracle ORACLE_HOME=$ORACLE_HOME
      
    • Windows: %ORACLE_HOME%/bin/orauniaud12.dll.optionファイルの名前を%ORACLE_HOME%/bin/orauniaud12.dllに変更します。

  7. リスナーを再起動します。

    lsnrctl start listener_name
    
  8. データベースを再起動します。SQL*Plusにログインしてから、次のように、STARTUPコマンドを入力します。

    sqlplus sys as sysoper
    Enter password: password
    
    SQL> STARTUP
    

    Windowsシステムでは、Oracleサービスを再度起動します。

    net start OracleService%ORACLE_SID%
    

    Oracle RACインストールの場合は、コマンドラインから次のようにしてデータベースを再起動します。

    srvctl setenv database -db orcl

手順2: SEC_ADMINユーザーへのAUDIT_ADMINロールの付与

統合監査を有効にした後、sec_adminユーザーにAUDIT_ADMINロールを付与し、SEC_ADMINが監査ポリシーを作成できるようにします。

SEC_ADMINユーザーにAUDIT_ADMINロールを付与するには、次のようにします。

  1. ターゲット・データベースのデータベース・ホームページに、SYSDBA管理権限を使用してユーザーSYSとしてアクセスします。

    詳細は、『Oracle Database 2日でデータベース管理者』を参照してください。

  2. 「管理」メニューから、「セキュリティ」を選択し、「ユーザー」を選択します。

  3. SEC_ADMINアカウントを選択し、「編集」をクリックします。

    sec_adminアカウントが存在しない場合、手順2: セキュリティ管理者アカウントを作成するに記載されたsec_adminセキュリティ管理者アカウントの作成方法を参照してください。

  4. ユーザーの編集: SEC_ADMINページで「ロール」タブを選択します。

  5. 「リストの編集」ボタンを選択します。

  6. ロールの変更ページで、「使用可能なロール」リストからAUDIT_ADMINを選択し、「選択したロール」リストに移動します。「OK」をクリックします。

  7. ユーザーの編集: SEC_ADMINページで「オブジェクト権限」タブを選択します。

  8. ユーザーの編集: SEC_ADMINページで「オブジェクト・タイプ」リストから「パッケージ」を選択し、「追加」をクリックします。

  9. 「パッケージオブジェクト権限の追加」ページで、次の手順を実行します。

    1. パッケージ・オブジェクトの選択フィールドにSYS.DBMS_AUDIT_MGMTと入力します。

    2. 「使用可能なパッケージ」で「EXECUTE」を選択し、「移動」をクリックして「選択した権限」リストに送ります。

    3. 「OK」をクリックします。

  10. ユーザーの編集: SEC_ADMINページで「適用」をクリックします。

手順3: 統合監査ポリシーの作成と有効化

Enterprise Managerにsec_adminユーザーとしてログインし、OE.CUSTOMERS表へのSELECT文の統合監査ポリシーを作成できます。

統合監査ポリシーを作成するには、次のようにします。

  1. Enterprise Managerからログアウトし、ユーザーsec_adminとしてログインしなおします。

  2. 「管理」メニューから「セキュリティ」を選択し、「監査設定」を選択します。

  3. 監査設定ページで「作成」をクリックします。

  4. 監査ポリシーの作成: 権限およびロールページで次の設定を入力します。

    • 名前: ポリシー名として select_cust_polと入力します。

    • コメント: Audit policy for SELECT statements on OE.CUSTOMERSと入力します。

  5. 「次」ボタンをクリックします。

  6. 監査ポリシーの作成: コンポーネント・アクションページで「次へ」をクリックします。

  7. 監査ポリシーの作成: オブジェクト・アクションページで「オブジェクトの追加」をクリックします。

  8. 「オブジェクトの追加」ダイアログ・ボックスで次の設定を入力します。

    • スキーマ: OE

    • タイプ: TABLE

    • オブジェクト: CUSTOMERS

    • アクション: SELECT

  9. 「OK」をクリックします。

    次のように「監査ポリシーの作成 : オブジェクト・アクション」ページが表示されます。

  10. 監査ポリシーの作成: オブジェクト・アクションウィンドウで「次へ」をクリックします。

  11. 監査ポリシーの作成: 条件ウィンドウで「次へ」をクリックします。監査ポリシーの作成: 確認ページで「送信」をクリックします。

    監査設定ページが表示され、ポリシーのリストにSELECT_CUST_POLが含まれています。

  12. 「SELECT_CUST_POL」を選択して「有効化」ボタンをクリックします。

  13. 「監査ポリシーの有効化」ダイアログ・ボックスですべてのユーザーに対して監査ポリシーを有効化チェック・ボックスを選択解除します。

    「監査ポリシーの有効化」ダイアログ・ボックスを拡張して特定のユーザーを追加できます。

  14. ユーザーの追加」ボタンをクリックします。

  15. 「ユーザーの追加」ダイアログ・ボックスでOEを検索および入力(「Oracle提供の表示」チェック・ボックスを選択)し、「成功時に監査」および失敗時に監査チェック・ボックスが選択されていることを確認します。

  16. 「OK」をクリックします。

  17. この手順を繰り返して、HRをリストに追加します。

  18. Enterprise Managerを終了しないでください。

手順4: 統合監査ポリシーのテスト

この段階では、監査が有効で、OE.CUSTOMERS表で実行されたSELECT文がUNIFIED_AUDIT_TRAIL動的ビューに書き込まれます。次に、監査設定をテストします。

統合監査ポリシーは、監査中のユーザーに対する次のユーザー・セッションで有効となります。したがって、監査記録を取得する前に、ユーザーはポリシーが作成されてからデータベースに接続する必要があります。

監査設定をテストするには、次のようにします。

  1. SQL*Plusで、ユーザーOEとして接続し、OE.CUSTOMERS表に問い合せ、監査証跡用のレコードを生成します。

    connect OE
    Enter password: password
    
    SELECT COUNT(*) FROM CUSTOMERS;
    
    COUNT(*)
    --------
         319
    
  2. ユーザーHRとして接続し、次の問合せを実行します。

    connect HR
    Enter password: password
    
    SELECT COUNT(*) FROM OE.CUSTOMERS;
    
    ERROR at line 1:
    ORA-00942: table or view does not exist
    

    この時点で、監査証跡には2つのレコードが含まれています。1つは、ユーザーOEによる成功した問合せに関するもので、もう1つは、ユーザーHRによる失敗した問合せに関するものです。

  3. ユーザーSHとして接続し、同じ問合せを実行します。

    connect SH
    Enter password: password
    
    SELECT COUNT(*) FROM OE.CUSTOMERS;
    
    ERROR at line 1:
    ORA-00942: table or view does not exist
    

    このユーザーは監査の対象ではないため、このアクションに対する監査レコードはありません。

  4. ユーザーsec_adminとして接続します。

    connect sec_admin
    Enter password: password
    
  5. 次のプロシージャを実行します。

    EXEC SYS.DBMS_AUDIT_MGMT.FLUSH_UNIFIED_AUDIT_TRAIL;
    

    監査証跡モードがQUEUEDの場合、インメモリー・キューが一杯になるまで、監査レコードはディスクに書き込まれません。このコマンドによってキューをディスクに書き出すよう明示的に指示され、UNIFIED_AUDIT_TRAILビューで監査証跡レコードを確認できます。

  6. 次の文を入力して、UNIFIED_AUDIT_TRAILビューに問い合せます。

    col dbusername format a12
    col sql_text format a30
    col event_timestamp format a38
    
    SELECT DBUSERNAME, SQL_TEXT, EVENT_TIMESTAMP
    FROM UNIFIED_AUDIT_TRAIL 
    WHERE SQL_TEXT LIKE 'SELECT %';
    

    このSELECT文では、ユーザーOEHRおよびSHとしてSELECT文を入力したときと同じ大/小文字を使用して、SQL_TEXT列のテキスト('SELECT %')を入力します。つまり、SELECT文を小文字で入力した場合は、'SELECT %'ではなく、'select %'と入力してDBA_AUDIT_TRAILビューを問い合せます。

    次のような出力が表示されます。

    DBUSERNAME SQL_TEXT                          EVENT_TIMESTAMP
    ---------- --------------------------------- --------------------------------
    OE         SELECT COUNT(*) FROM CUSTOMERS    04-JAN-13 03.39.02.468963 PM 
    HR         SELECT COUNT(*) FROM OE.CUSTOMERS 04-JAN-13 03.38.05.974127 PM 
    

    監査ポリシーはユーザーOEおよびHRのみに適用されているため、ユーザーSHのアクションに関するレコードはありません。

手順5: このチュートリアルで使用したコンポーネントを削除する(オプション)

不要になった場合は、このチュートリアルのコンポーネントを削除できます。

このチュートリアルで使用した監査設定を削除するには、次のようにします。

  1. Enterprise Managerで、sec_adminユーザーとしてログインしていることを確認します。

  2. 「管理」を選択し、「セキュリティ」、「監査設定」の順に選択して監査設定ページを表示します。

  3. SELECT_CUST_POLポリシーを選択して「無効化」をクリックし、「確認」ダイアログ・ボックスで「はい」を選択します。

  4. SELECT_CUST_POLポリシーを再度選択して「削除」をクリックし、「確認」ダイアログ・ボックスで「はい」を選択します。「はい」を再度クリックします。

  5. Enterprise Managerからログアウトし、SYSDBA管理権限を使用してユーザーSYSとして再度ログインします。

  6. 「管理」メニューから「セキュリティ」を選択し、「ユーザー」を選択します。

  7. SEC_ADMINユーザーを選択し、「編集」をクリックします。

  8. ユーザーの編集: SEC_ADMINページで「ロール」を選択します。

  9. 「リストの編集」ボタンを選択します。

  10. ロールの変更ページで、AUDIT_ADMINロールを「使用可能なロール」リストに移動し、「OK」をクリックします。

  11. ユーザーの編集: SEC_ADMINページで「オブジェクト権限」タブを選択します。

  12. DBMS_AUDIT_MGMTパッケージのEXECUTE権限を選択し、「削除」をクリックします。

  13. 「適用」をクリックします。

手順6: SEC_ADMINセキュリティ管理者アカウントの削除(オプション)

これは、このガイドの最後の例です。sec_admin管理者アカウントが不要になった場合は、このアカウントを削除する必要があります。

sec_adminセキュリティ管理者アカウントを削除するには、次のようにします。

  1. SYSTEMユーザーとしてデータベースにログインします。

  2. データベースのホームページで、「管理」「セキュリティ」「ユーザー」の順に選択します。

  3. ユーザーsec_adminを選択します。

  4. 「削除」をクリックします。

  5. 確認ページで「はい」を選択します。

  6. Enterprise Managerを終了します。