Oracle Database Security Assessment Toolについて

Oracle Database Security Assessment Tool (Oracle DBSAT)は、データベース構成、ユーザーとその権限、セキュリティ・ポリシーを分析し、機密データが存在する場所を特定し、組織内のセキュリティ上のリスクを明らかにしてOracle Databaseのセキュリティ状態を向上させます。

Oracle Database Security Assessment Toolを使用する利点

Oracle DBSATを使用すると、次のことが可能です。

  • 現在のセキュリティ状況を短時間で簡単に評価し、Oracle Database内の機密データを特定する。

  • 実績のあるOracle Databaseセキュリティに関するベスト・プラクティス、CISベンチマークの推奨事項およびSTIGのルールを使用してリスク・エクスポージャを減らす。

  • セキュリティ結果を利用して、EU GDPRなどの規制の順守を加速させる。

  • Oracle Databasesのセキュリティ状態を向上させ、セキュリティに関するベスト・プラクティスを推進する。

ノート:

DBSATは、測定できるような形でシステム・パフォーマンスを低下させることのない軽量なユーティリティです。

Oracle DBSATレポート結果は、次の目的で使用できます。

  • 短期リスクの即時修正

  • 包括的なセキュリティ戦略の実施

  • 規制コンプライアンス・プログラムのサポート

  • セキュリティに関するベスト・プラクティスの推進

Oracle Database Security Assessment Toolのコンポーネント

Oracle DBSATは、次のコンポーネントで構成されています。

  • Collector:

    Collectorは、SQL問合せを実行し、オペレーティング・システム・コマンドを実行して評価対象となるシステムからデータを収集します。これは、主にデータベース・ディクショナリ・ビューに問い合せることで実行されます。収集されたデータは、分析フェーズでDBSAT Reporterによって使用されるJSONファイルに書き込まれます。

  • Reporter:

    Reporterは、収集されたデータを分析し、Oracle Database Security AssessmentレポートをHTML、Excel、JSONおよびテキスト形式で生成します。Reporterは、任意のマシン(PC、ラップトップ、サーバー)で稼働できます。Reporterの実行は、データベース・サーバーや、Collectorと同じマシンに限定されません。

  • Discoverer:

    Discovererは、SQL問合せを実行して、構成ファイルで指定された設定に基づいて評価対象となるシステムからデータを収集します。これは、主にデータベース・ディクショナリ・ビューに問い合せることで実行されます。その後、収集されたデータは、Oracle Database Sensitive Data AssessmentレポートをHTMLおよびCSV形式で生成するために使用されます。Discovererは、任意のマシン(PC、ラップトップ、サーバー)で稼働できます。Discovererの実行は、データベース・サーバーや、CollectorまたはReporterと同じマシンに限定されません。

次の図に、Oracle Database Security Assessment Toolのコンポーネント、ソースおよびレポーを示します。

図 - Oracle DBSATのコンポーネント、ソースおよびレポート


「図 - Oracle DBSATのコンポーネント、ソースおよびレポート」の説明

Collector、ReporterおよびDiscovererの詳細は、CollectorおよびReporterの使用を参照してください。

前提条件

次の各項では、Oracle Database Security Assessment Toolの前提条件について概説します。

サポートされているオペレーティング・システム

データベース構成収集問合せは、サポートされているほとんどのOracle Databaseプラットフォームで実行されます。ただし、現在OSデータ収集はWindowsプラットフォームではスキップされます。

Oracle DBSATの動作対象は、次のとおりです。

  • Solaris x64およびSolaris SPARC64

  • Linux x86-64

  • Windows x64

  • HP-UX IA (64ビット)

  • IBM AIX (64ビット)およびLinux on zSeries (64ビット)

サポートされているデータベース・バージョン

DBSATツールは、オンプレミスまたはクラウド、Oracle Database Standard Edition 2およびOracle Database Enterprise Edition上のOracle Database 10.2.0.5以降のリリースで実行できます。また、Oracle DBSATはOracle Cloud DBCS (PaaS)およびAutonomous Databaseでも実行できます。

ノート:

Oracle Database Standard Edition 2は、Oracle Database 12cリリース1 (12.1.0.2)以降で使用可能です。12.1.0.1では、Oracle Database Standard Edition OneおよびOracle Database Standard Editionが使用可能です。

参照: https://docs.oracle.com/database/121/DBLIC/editions.htm#DBLIC109

セキュリティ要件

Oracle DBSAT出力ファイルは、データベースのセキュリティ状態の脆弱性が明らかになる可能性があるため、慎重に扱う必要があります。このようなファイルへの不正アクセスを防止するために、次のセキュリティ・ガイドラインを実施する必要があります。
  • このようなファイルを格納するディレクトリが適切な権限で保護されるようにする。

  • このようなファイルが対象となる推奨事項を実施した後、ファイルを安全に削除する。

  • 他のユーザーとは(デフォルトで)暗号化された形式で共有する。

  • Oracle DBSATユーザーにユーザー権限を短期的に付与し、不要となったら取り消す。

    Oracle DBSATユーザー権限の詳細は、Collectorの前提条件を参照してください。

注意:

このツールは、システムの潜在的な機密データおよび脆弱性の特定を支援することを目的としています。さらに、このツールによって生成された出力には、潜在的に機密性の高いシステム構成データや、熟練した攻撃者がシステムへの侵入に使用する可能性がある情報が含まれる場合があります。生成されたレポートを含め、このツールの出力が自社のポリシーに従って処理されることを確実に実行する全責任があります。

Oracle Database Security Assessment Toolの前提条件

DBSATでは、UNIX/Linuxシステムにbashシェルをインストールしておく必要があります。

Bashシェルの前提条件

Oracle DBSATでは、UNIX/Linuxシステムにbashシェルをインストールしておく必要があります。

ZipおよびUnZip

Oracle DBSATは、生成されたファイルをZipおよびUnzipを使用して圧縮または圧縮解除します。Oracle DBSATは、次に示すデフォルトの場所でZipおよびUnzipユーティリティを検索します。他のZipおよびUnzipユーティリティを使用するには、関連するスクリプトの次の行を更新します。

Windows (dbsat.batスクリプト):

SET ZIP_CMD=%ORACLE_HOME%\bin\zip.exe 
SET UNZIP_CMD=%ORACLE_HOME%\bin\unzip.exe

ノート:

UnzipユーティリティはOracle Database 12.2以上に含まれていません。WinZipまたはWinRarなどのユーティリティをインストールし、そのユーティリティへのパスをSET UNZIP_CMDパラメータに追加したことを確認してください。

その他すべてのプラットフォーム(dbsatスクリプト):

ZIP=/usr/bin/zip 
UNZIP=/usr/bin/unzip 
DBZIP=${ORACLE_HOME}/bin/zip

Oracle Database Security Assessment Toolのコンポーネントに関する前提条件は次のとおりです。

Collectorの前提条件

完全なデータを収集するために、Oracle DBSAT Collectorはデータベースが存在するサーバーで実行する必要がありますが、これは、なんらかのオペレーティング・システム・コマンドを実行して、データベースから取得できないプロセスおよびファイル・システム情報を収集するためです。また、OSコマンド使用してファイル・システム・データを収集して処理するために、ORACLE_HOME内にあるファイルおよびディレクトリに対して読取り権限を持つOSユーザーとしてOracle DBSAT Collectorを実行する必要があります。

Oracle DBSAT Collectorは、データベース・ビューに問い合せることで、ほとんどのデータを収集します。これらのビューから選択するのに十分な権限を持つユーザーとしてデータベースに接続する必要があります。DBSATユーザーに次の権限を付与します。

  • CREATE SESSION

  • SYS.REGISTRY$HISTORYに対するREADまたはSELECT

  • ロールSELECT_CATALOG_ROLE

  • ロールDV_SECANALYST (Database Vaultが有効な場合、またはDatabase Vault Operations Controlが有効な場合)

  • ロールAUDIT_VIEWER (12c以降)

  • ロールCAPTURE_ADMIN (12c以降)

  • SYS.DBA_USERS_WITH_DEFPWD (11g以降)に対するREADまたはSELECT

ノート:

Collectorコンポーネントのみを実行する予定の場合は、次の権限のみを割り当てることができます。

  • CREATE SESSION

  • ロールSELECT_CATALOG_ROLE

Database Vault保護環境でDatabase Vaultの情報を正常に収集するには、DV_SECANALYSTロールを持つSYS以外のユーザーとして接続する必要があります。

Reporterの前提条件

Reporterはプラットフォームに依存しないPythonプログラムであり、実行にはPython 2.6以降が必要です。

Discovererの前提条件

DiscovererはJavaプログラムであり、実行にはJava Runtime Environment (JRE) 1.8 (jdk8-u172)以降が必要です。

Discovererは、データベース・ディクショナリ・ビューからメタデータを収集し、機密データを検出するために指定されたパターンと照合します。Discovererは、これらのビューから選択するのに十分な権限を持つユーザーとしてデータベースに接続する必要があります。DBSATユーザー権限の詳細は、Collectorの前提条件を参照してください。

ノート:

Discovererは、行数を取得する場合、表の統計情報に依存します。正確な行数の結果を取得するには、DBSATユーザーがDiscovererを実行する前に、データベース管理者がDBMS_STATSを実行する必要があります。

Oracle Database Security Assessment Toolのインストール

Oracle DBSATをインストールするには、次のようにします。
  1. データベース・サーバーにログインします。
  2. dbsatディレクトリを作成します。

    mkdir –p /home/oracle/dbsat

  3. dbsat.zipファイルをデータベース・サーバーにダウンロードまたはコピーし、ファイルを解凍します。
    unzip dbsat.zip –d /home/oracle/dbsat

    -dはディレクトリ・パスを指します。

これらのコマンドはLinux/Unix用です。Windowsでインストールを行う場合は、Windows用の同等のコマンドを使用します。

Oracle DBSATがデータベース・サーバーにインストールされます。

Collector、ReporterおよびDiscovererは、/home/oracle/dbsatディレクトリから実行できます。

また、このディレクトリをPATHに追加し、ツールを実行するたびにディレクトリに移動するステップを省くこともできます。

CollectorおよびReporterの使用

Collector、ReporterおよびDiscovererコンポーネントを使用して、Oracle Database Security AssessmentレポートおよびOracle Database Sensitive Data Assessmentレポートを生成できます。

Oracle Database Security Assessmentレポート

CollectorおよびReporterコンポーネントを使用して、Oracle Database Security Assessmentレポートを生成します。

次の図に、CollectorおよびReporterのコンポーネントとアーキテクチャを示します。

図 - CollectorおよびReporterのコンポーネントとアーキテクチャ

図の説明が続きます
「図 - CollectorおよびReporterのコンポーネントとアーキテクチャ」の説明

Collectorの実行

Collectorは、データベースに問い合せて、Reporterによって分析されるデータを収集します。

ノート:

Collectorはデータベースに接続します。Collectorを実行する前に、ターゲット・データベースおよびリスナーが稼働していることを確認してください。
Collectorを実行するには、次のようにします。
  1. Collectorを実行するための引数を指定します。
    $ dbsat collect <database_connect_string> <output_file>

    dbsat collectコマンドには、次のオプションおよび引数があります。

    • database_connect_string

      データベースに接続するための接続文字列を指定します。

      例: system@ORCL

    • output_file

      データベース・セキュリティ評価レポートの場所およびファイル名を指定します。拡張子を追加しないでください。

      例: /home/oracle/dbsat/output_ORCL

  2. Collectorを実行します。
    $ ./dbsat collect system@ORCL output_ORCL

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

    Connecting to the target Oracle database...
    
    SQL*Plus: Release 19.0.0.0.0 - Production on Thu Nov 14 10:02:09 2019
    Version 19.3.0.0.0
    
    Copyright (c) 1982, 2019, Oracle.  All rights reserved.
    
    
    Connected to:
    Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
    Version 19.3.0.0.0
    
    Setup complete.
    SQL queries complete.
    OS commands complete.
    Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
    Version 19.3.0.0.0
    DBSAT Collector completed successfully.
    
    Calling /u01/app/oracle/product/version/db_1/bin/zip to encrypt output_ORCL.json...
    
    Enter password:
    Verify password:
      adding: output_ORCL.json (deflated 88%)
    zip completed successfully.
    $

    ノート:

    ファイルを暗号化しない場合は、-nオプションを指定して、dbsat collectスクリプトを起動します。これはお薦めしません。

    マルチテナント・コンテナ・データベースのルート・コンテナでCollectorを実行すると、ルート・コンテナ固有のデータを収集し、プラガブル・データベースからは収集しません。特定のプラガブル・データベースにアクセスする必要がある場合は、そのようなプラガブル・データベースについて個別にCollectorを実行する必要があります。

Reporterの実行

Reporterは、Collectorによって収集されたデータを分析し、データベースのセキュリティを改善するための推奨事項を作成します。

Reporterは、dbsat reportを使用して起動できます。
Reporterを実行するには、次のようにします。
  1. Pythonのバージョンが2.6以降であり、インストールされていることを確認します。
    $ python -V

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

    Python 2.7.11rc1

  2. Reporterを実行するための引数を指定します。
    $ dbsat report [-a] [-n] [-g] [-x <section>] <input_file>

    引数input_fileは、Oracle DBSAT Collectorによって生成されるデータ・ファイルdb04へのフルパスまたは相対パスを表します。このファイルがデータ収集時に暗号化されている場合は、Reporterから要求されたときに暗号化パスワードを指定する必要があります。

    Reporterでは、次のコマンドライン・オプションがサポートされています。

    • -a

      すべてのデータベース・アカウントについてレポートを実行します。

    • -n

      出力に暗号化を指定しません。

      ノート:

      セキュリティ上の理由から、これはお薦めしません。
    • -g

      プラガブル・データベースの共通の権限付与を含むすべての権限付与が表示されます。

    • -x

      レポートからセクションを除外します。

      有効なセクションは次のとおりです。

      • USER: ユーザー・アカウント

      • PRIV: 権限およびロール

      • AUTH: 認可制御

      • CRYPT: 暗号化

      • ACCESS: ファイングレイン・アクセス制御

      • AUDIT: 監査

      • CONF: データベース構成

      • NET: ネットワーク構成

      • OS: オペレーティング・システム

      複数のセクションを除外するには、次のようにカンマ区切りリストを使用します。

      -x USER,PRIV

      または次のように指定します。

      -x USER -x PRIV

      このオプションを省略すると、レポートのセクションがすべて含まれます。

    ReporterによってHTML、Excel、JSONおよびテキスト形式で作成されるレポート・ファイルの生成には、同じパス名が使用され、適切なファイル拡張子が付けられます。

  3. Reporterを実行します。
    $ ./dbsat report output_ORCL

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

    Archive:  output_ORCL.zip
    [output_ORCL.zip] output_ORCL.json password: 
      inflating: output_ORCL.json               
    DBSAT Reporter ran successfully.
    Calling /usr/bin/zip to encrypt the generated reports...
    Enter password: 
    Verify password: 
    	zip warning: output_ORCL_report.zip not found or empty
      adding: output_ORCL_report.txt (deflated 82%)
      adding: output_ORCL_report.html (deflated 86%)
      adding: output_ORCL_report.xlsx (deflated 3%)
      adding: output_ORCL_report.json (deflated 85%)
    zip completed successfully.
  4. 出力レポートの.zipファイルを暗号化するためのパスワードを指定します。

    .zipが作成されます。

    ノート:

    .zipファイルは、ReporterおよびDiscovererの出力に使用されます。混乱を避けるために、両方の出力を作成する場合は、同じパスワードを使用することをお薦めします。
  5. Oracle Database Security Assessmentレポートを利用できるように、.zipファイルの内容を抽出します。要求されたら、パスワードを入力して、ステップ4で指定した.zipファイルを復号化します。

    .zipファイルの内容が抽出されます。

  6. 適切なツールを使用してレポート・ファイルから推奨事項を読みます。

    例: Linuxではviを使用して.txtファイルを読みます。

    例: .htmlファイルを表示するには、ブラウザを使用します。

Oracle Database Security Assessmentレポート

CollectorおよびReporterコンポーネントを使用して、Oracle Database Security AssessmentレポートをHTML、Excel、JSONおよびテキスト形式で生成します。

HTMLレポートでは、評価の詳細結果をナビゲートしやすい形式で示します。Excel形式では、HTMLレポートに含まれる詳細出力がない各結果の概要を示します。また、追跡および優先度付けのために列を追加できます。テキスト形式のレポートでは、別の使用目的で出力の一部をコピーするのが便利になります。また、レポート・コンテンツが含まれるJSONドキュメントがフィルタリング、比較、集計および他のツールとの統合をしやすくするために提示されます。

Oracle Database Security Assessmentレポート - サマリー

Oracle Database Security Assessmentレポート - サマリー・セクションには、次の情報が含まれます。

セクション 説明

評価日時

データが収集された日付および最後のデータベース・セキュリティ評価レポートが生成された日付が表示されます。DBSAT Reporterのバージョンも表示されます。

データベース識別情報

DBSATによって評価されたデータベースの詳細が表示されます。

サマリー

分析結果の概要が表示されます。

次の図に、Oracle Database Security Assessmentレポート - サマリー・セクションの例を示します。

図 - Oracle Database Security Assessmentレポート - サマリー


サマリー

サマリー・セクションの次には、基本情報セクションが表示されます。

Oracle Database Security Assessment - 基本情報

Oracle Database Security Assessmentレポート - 基本情報セクションには、次の情報が含まれます。

セクション 結果ID 説明

データベース・バージョン

-

CollectorおよびReporterによって評価されたデータベースのバージョンが表示されます。

セキュリティ機能

-

セキュリティ機能およびそれらが使用中かどうかが表示されます。

パッチ・チェック

INFO.PATCH

インストールされているパッチに関する情報が表示されます。

セキュリティ修正がリリースされたら適用して、データベース・ソフトウェアを最新の状態に保つことが重要です。オラクル社は、四半期の定期的なスケジュールで、リリース更新、パッチ・セット更新、バンドル・パッチの形式で包括的なパッチを発行します。これらの更新が入手可能になったら、すぐに適用してください。

次の図に、Oracle Database Security Assessmentレポート - 基本情報セクションの例を示します。

図 - Oracle Database Security Assessmentレポート - 基本情報

基本情報

基本情報セクションの次には、ユーザー・アカウント・セクションが表示されます。

Oracle Database Security Assessmentレポート - ユーザー・アカウント

Oracle Database Security Assessmentレポート - ユーザー・アカウント・セクションには、次の情報が表示されます。

名前 結果ID 説明

ユーザー・アカウント

-

ユーザー・アカウントおよび各アカウントの次の情報が表示されます。

  • ユーザー名 — ユーザーの名前が表示されます。

  • ステータス — アカウントがオープン、ロック済、期限切れのいずれであるかが表示されます。

  • プロファイル — プロファイル・タイプが表示されます。

  • 表領域 — アカウントが使用する表領域が表示されます。

  • Oracle定義 — アカウントがOracle定義の表領域を使用しているかどうかが表示されます。

  • 認可タイプ — 使用されている認可タイプが表示されます。

SYSTEMまたはSYSAUX表領域のユーザー・スキーマ

USER.TBLSPACE

Oracleが提供する予約済の表領域を使用する通常のユーザー・アカウントに関する情報が表示されます。

SYSTEMおよびSYSAUX表領域は、Oracleが提供するユーザー・アカウント用に予約済です。これらのリソースの枯渇によるサービス拒否の発生を回避するために、通常のユーザー・アカウントでこれらの表領域を使用しないでください。Oracle Database 12.2より前のバージョンではSYSTEM表領域を暗号化できないことも、この表領域にユーザー・スキーマを作成しないようにする理由の1つです。

サンプル・スキーマ

USER.SAMPLE

SCOTTHROESHPMIXADAMSBLAKECLARKおよびBIなどのサンプル・スキーマを使用するユーザー・アカウントに関する情報が表示されます。

サンプル・アカウントは開発者向けの簡単な例としてOracleが提供するよく知られたアカウントです。通常これらは本番データベースでは使用しませんが、データベースの攻撃可能面を不必要に増やすことになるため削除してください。

非アクティブ・ユーザー

USER.INACTIVE

使用されていないユーザー・アカウントおよび非アクティブ時にロックされるように構成されていないアカウントに関する情報が表示されます。

ユーザー・アカウントが使用されなくなると、システムの攻撃可能面を不必要に増やしてしまいますが、それに見合うメリットはありません。さらに、アカウントを定期的に使用していなければ、認可されていない使用に気づかない可能性が高くなります。30日を超えて使用されていないアカウントは調査して、アクティブのままにしておくかどうかを判断してください。ユーザーに割り当てられたプロファイルのINACTIVE_ACCOUNT_TIMEを設定するのも1つの解決策です。

大/小文字を区別するパスワード

USER.CASE

大/小文字を区別するパスワードが有効かどうかが表示されます。

大/小文字を区別するパスワードを使用すると大文字と小文字の両方が含まれるため、しらみつぶしに検索してパスワードを推測しようとする攻撃者が検索する必要があるパスワードの組合せが大幅に増えるので、使用することをお薦めします。SEC_CASE_SENSITIVE_LOGONTRUEに設定すると、パスワードの大文字と小文字がデータベースで区別されます。

パスワードが期限切れのユーザー

USER.EXPIRED

パスワードが期限切れのユーザー・アカウントに関する情報が表示されます。

ユーザーがパスワードを定期的に変更するようにパスワードに期限を設定します。ユーザーのパスワードの期限切れが30日を超えていると、少なくともそれだけの期間、ユーザーがログインしていないことを示します。長期間使用されていないアカウントは調査して、アクティブのままにしておくかどうかを判断してください。

デフォルト・パスワードのユーザー

USER.DEFPWD

デフォルト・パスワードのユーザー・アカウントに関する情報が表示されます。

Oracleの事前定義済アカウントのデフォルトのアカウント・パスワードはよく知られています。デフォルト・パスワードのアクティブなアカウントがあれば攻撃者が簡単に侵入できますが、よく知られたパスワードはロック済アカウントでも変更しておいてください。

最小クライアント認証バージョン

USER.AUTHVERS

sqlnet.oraファイルのALLOWED_LOGON_VERSION_SERVERパラメータに指定された最小クライアント・バージョンを満たさないユーザー・アカウントに関する情報が表示されます。

時間の経過とともに、ユーザー・アカウントのパスワード認証用に、よりセキュアなアルゴリズムがOracleのリリースでサポートされるようになっています。古いクライアント・ソフトウェアとの互換性を維持するために、以前のバージョンのパスワードもデータベースで引き続きサポートされています。sqlnet.oraのパラメータALLOWED_LOGON_VERSION_SERVERにより、データベースが受け入れる最小パスワード・バージョンが決まります。セキュリティを最大限に確保するために、すべてのクライアント・システムをアップグレードしたら、データベースでサポートされる最大値をこのパラメータに設定してください。

パスワード・ベリファイア

USER.VERIFIER

廃止されたパスワード・ベリファイアを使用しているユーザー・アカウントに関する情報が表示されます。

ユーザー・アカウントごとに、複数のベリファイア(ユーザー・パスワードのハッシュ)がデータベースに保存されている場合があります。各ベリファイアでは、異なるバージョンのパスワード認証アルゴリズムがサポートされています。クライアントでサポートされている最新のアルゴリズムでユーザーを認証できるように、データベースでサポートされている最新バージョンのパスワード・ベリファイアをすべてのユーザー・アカウントに含めてください。すべてのクライアントを更新したら、廃止されたベリファイアを削除してユーザー・アカウントのセキュリティを向上できます。XMLデータベースの認証には、HTTPパスワード・ベリファイアが使用されます。このアクセスが必要ではないユーザー・アカウントからは、ALTER USERコマンドを使用してこれらのベリファイアを削除します。

ユーザー・パラメータ

USER.PARAM

ユーザー・アカウント初期化パラメータに関する情報が表示されます。

SEC_MAX_FAILED_LOGIN_ATTEMPTSには、接続がクローズされる前に試行できる1つのセッション内の最大ログイン失敗回数を構成します。これは、ログイン試行の失敗回数によるユーザー・アカウントのロックを制御するユーザー・プロファイル・パラメータFAILED_LOGIN_ATTEMPTSとは独立して機能します。ユーザー・プロファイルに設定されているリソースの制約を有効にするには、RESOURCE_LIMITTRUEに設定する必要があります。

ユーザー・プロファイル

-

ユーザー・プロファイルに関する情報が表示されます。

パスワード存続期間無制限のユーザー

USER.NOEXPIRE

ユーザー・プロファイルのパスワード有効期間の強制に関する情報が表示されます。

ユーザーがパスワードを定期的に変更するようにパスワードに期限を設定します。一時アカウントを自動的に無効にするメカニズムも提供されています。失効しないパスワードは長期間にわたって変更されない可能性があります。パスワードを定期的に変更する必要がないと、同じパスワードを複数のアカウントにユーザーが使用する可能性も高くなります。

ログイン試行失敗後のアカウントのロック

USER.NOLOCK

ユーザー・プロファイルのログイン試行の失敗の強制に関する情報が表示されます。

一般的なパスワード・セットのすべての可能性を単純に試行して、ユーザーのパスワードを推測しようとする攻撃者もいます。この攻撃に対する防御として、FAILED_LOGIN_ATTEMPTSおよびPASSWORD_LOCK_TIMEプロファイル・リソースを使用して、ログイン試行に複数回失敗してもログインに成功しない場合は、ユーザー・アカウントを特定の期間ロックすることをお薦めします。

パスワード検証関数

USER.PASSWD

パスワード検証機能の強制に関する情報が表示されます。

パスワード検証機能は、ユーザーのパスワードが複雑さの最小要件を満たしていることを確認するために使用します。これには、長さ、数字や句読点文字の使用、前のパスワードとの差異などの要素が含まれる場合があります。Oracleが提供する事前定義済関数やカスタムPL/SQL関数を使用できます。パスワード検証機能はすべてのユーザー・プロファイルに含めてください。

同時セッションが無制限のユーザー

USER.SESSIONS

SESSIONS_PER_USERのプロファイル・リソース制限がUNLIMITEDに設定されているすべてのユーザーを表示します。SESSIONS_PER_USER = UNLIMITEDでは、ユーザーは任意の数の同時セッションを保持できます。

ノート:

ロックされている事前定義済のOracleアカウントはこのレポートには含まれません。すべてのユーザー・アカウントを含めるには、-aオプションを指定してレポートを実行します。

次の図に、Oracle Database Security Assessmentレポート - ユーザー・アカウント・セクションの例を示します。

図 - Oracle Database Security Assessmentレポート - ユーザー・アカウント


ユーザー・アカウント

ユーザー・アカウント・セクションの次には、権限およびロール・セクションが表示されます。

Oracle Database Security Assessmentレポート - 権限およびロール

Oracle Database Security Assessmentレポート - 権限およびロール・セクションには、次の情報が表示されます。

名前 結果ID 説明

システム権限付与

PRIV.SYSTEM

ユーザーに付与されているシステム権限が表示されます。

システム権限があれば、データにアクセスしたり、データベース全体に対する管理操作を行えます。最小権限の原則に従って、これらの権限は慎重に付与してください。受け手が他のユーザーに権限を付与する必要がある場合にのみ、管理オプションを使用してシステム権限を付与してください。

-gオプションは、PDBの共通の権限付与を含むすべての権限付与を報告します。このレポートでは、管理オプション付きで付与されている権限には(*)、直接付与されている権限には(D)、および共通に付与されている権限には(C)が表示されます。

すべてのロール

PRIV.ROLES

ユーザーに付与されているすべてのロールが表示されます。

関連する権限のグループを管理する場合、特に特定のタスクまたは職務に権限が必要な場合には、ロールを使用するのが便利です。定義範囲が広いロールは、個々の受け手に必要以上の権限を与える可能性があるため注意が必要です。受け手が他のユーザーのロールの変更や付与を行う必要がある場合にのみ、管理オプションを使用してロールを付与してください。

コード・ベース・アクセス制御

PRIV.CBAC

CBACロールが付与されているすべてのプログラム・ユニットを表示します。

コード・ベース・アクセス制御(CBAC)を使用すると、プログラム・ユニットに追加の権限を付与できます。CBACを使用して、PL/SQLファンクション、プロシージャまたはパッケージにデータベース・ロールをアタッチできます。これらのデータベース・ロールは実行時に有効で、呼び出すユーザーの環境の必要な権限でプログラム・ユニットを実行できます。

アカウント管理権限

PRIV.ACCT

ユーザーに付与されているアカウント管理権限が表示されます。

ユーザー管理権限(ALTER USERCREATE USERDROP USER)を使用して、パスワードの変更など、他のユーザー・アカウントの変更および作成を行えます。この権限を乱用すれば、さらに大きな権限がある可能性がある別のユーザーのアカウントにアクセスできます。

ロールおよび権限の管理権限

PRIV.MGMT

ユーザーに付与されている権限管理権限が表示されます。

権限管理権限(ALTER ANY ROLECREATE ROLEDROP ANY ROLEGRANT ANY OBJECT PRIVILEGEGRANT ANY PRIVILEGEGRANT ANY ROLE)があるユーザーは、自分および他のユーザーに付与されている一連の権限を変更できます。この権限があればデータベースの多くのセキュリティ制御を回避できるため慎重に付与する必要があります。

データベース管理権限

PRIV.DBMGMT

ユーザーに付与されているデータベース管理権限が表示されます。

データベース管理権限(ALTER DATABASEALTER SYSTEMCREATE ANY LIBRARYCREATE LIBRARY)を使用して、データベースの運用を変更できるため、セキュリティ保護をパイパスすることも可能です。この権限は、信頼できる管理者にのみ付与する必要があります。

監査管理パッケージ

PRIV.AUDMGMT

ユーザーに付与されている監査管理ツールのアクセス権が表示されます。

DBMS_AUDIT_MGMTパッケージでは、監査管理ツールの実行が許可されます。この機能を使用する正当な必要性があるユーザーのみに厳しく制限してアクセス権を付与してください。

監査管理権限

PRIV.AUDIT

ユーザーに付与されている監査管理権限が表示されます。

監査管理権限(AUDIT ANYAUDIT SYSTEM)を使用して、データベースの監査ポリシーを変更できます。この権限があれば悪意のある活動を隠蔽できるため慎重に付与する必要があります。

幅広いデータ・アクセス権限

PRIV.DATA

ユーザーに付与されているデータ・アクセス権限が表示されます。

データ・アクセス権限(ALTER ANY TABLEALTER ANY TRIGGERCREATE ANY INDEXCREATE ANY PROCEDURECREATE ANY TRIGGERDELETE ANY TABLEINSERT ANY TABLEREAD ANY TABLESELECT ANY DICTIONARYSELECT ANY TABLEUPDATE ANY TABLE)があるユーザーは、すべてのスキーマに保存されているデータに非常に広範にアクセスできます。ほとんどの管理タスクではデータ自身にアクセスする必要がないため、これらの権限は管理者に対しても、まれにしか付与しません。これらの権限の付与を最小限にすることに加えて、Database Vaultのレルムを使用して、これらの権限を使用した機密データへのアクセスを制限することを検討してください。

アクセス制御除外権限

PRIV.EXEMPT

現在有効なアクセス制限除外権限が表示されます。

除外権限(EXEMPT ACCESS POLICYEXEMPT REDACTION POLICY)があるユーザーは、仮想プライベート・データベースおよびデータ・リダクションで施行されている行と列のアクセス制御ポリシーをバイパスできます。ほとんどの管理タスクではデータ自身にアクセスする必要がないため、これらの権限は管理者に対しても、まれにしか付与しません。

パスワード・ベリファイア表に対するアクセス権

PRIV.PASSWD

ユーザーに付与されているパスワード・ベリファイア表に対するアクセス権が表示されます。

これらの権限があるユーザーは、ユーザー・パスワード・ベリファイアを含むオブジェクトにアクセスできます。ベリファイアをオフライン攻撃で使用すればユーザーのパスワードを発見できる場合があります。

制限付きオブジェクトに対する書込みアクセス権

PRIV.OBJ

ユーザーに付与されている制限付きオブジェクトに対するアクセス権が表示されます。

これらの権限があるユーザーはSYSDVSYSAUDSYSまたはLBACSYSスキーマのオブジェクトを直接変更できます。これらのシステム・オブジェクトを操作すると、セキュリティ保護を回避したり、データベースの通常の運用を妨害できる可能性があります。PUBLICに付与するオブジェクト許可は、SYSDVSYSAUDSYSまたはLBACSYSスキーマのオブジェクトに制限する必要があります。

監査オブジェクトに対するアクセス権

PRIV.AUDOBJ

ユーザーに付与されている監査オブジェクトに対するアクセス権が表示されます。

これらの権限があるユーザーは、監査情報を含むオブジェクトに直接アクセスして変更できます。これらのオブジェクトにアクセスできると、悪意のあるユーザーが他のユーザーの権限設定を推測したり、監査レコードを置換または削除して監査情報を操作できる可能性があります。

ユーザー偽装権限

PRIV.USER

他のユーザーに偽装する権限を付与されたユーザー・アカウントが表示されます。

BECOME USER権限およびこれらのPL/SQLパッケージ(DBMS_AQADM_SYSDBMS_AQADM_SYSCALLSDBMS_IJOBDBMS_PRVTAQIMDBMS_REPCAT_SQL_UTLDBMS_SCHEDULERDBMS_STREAMS_ADM_UTLDBMS_STREAMS_RPCDBMS_SYS_SQLINITJVMAUXLTADMWWV_DBMS_SQLWWV_EXECUTE_IMMEDIATE)では、別のユーザーのIDでSQLコードまたは外部ジョブを実行できます。この機能を使用する正当な必要性があるユーザーのみに厳しく制限してアクセス権を付与してください。

データ流出

PRIV.EXFIL

クライアントやサーバーのデータに対してアクセスやコピーをする権限を付与されたユーザー・アカウントが表示されます。

これらのPL/SQLパッケージ(DBMS_BACKUP_RESTOREUTL_DBWSUTL_ORAMTS)では、ネットワークまたはファイル・システムを使用してデータベースからデータを送信できます。この機能を使用する正当な必要性があるユーザーのみにアクセス権を付与してください。

PUBLICに付与されたシステム権限

PRIV.SYSPUB

すべてのユーザーに付与されているシステム権限が表示されます。

PUBLICに付与された権限はすべてのユーザーが使用できます。管理者でない通常のユーザーにシステム権限は必要ないため、ここに権限が含まれる場合でも、少数のみが含まれるのが普通です。

PUBLICに付与されたロール

PRIV.ROLEPUB

すべてのユーザーに付与されているロールが表示されます。

PUBLICに付与されたロールはすべてのユーザーが使用できます。ほとんどのロールには、すべてのユーザーには不適切な権限が含まれています。

PUBLICに付与された列権限

PRIV.COLPUB

すべてのユーザーに付与されている列アクセス権限が表示されます。

PUBLICに付与された権限はすべてのユーザーが使用できます。ここには、すべてのユーザーがアクセスしてよいデータに対する列権限のみを含めてください。

DBAロールを持つユーザー

PRIV.DBA

DBAロールを付与されたユーザー・アカウントが表示されます。

DBAロールは非常に強力で、多くのセキュリティ保護をバイパスするために使用できます。これは、信頼できる少数の管理者にのみ付与する必要があります。さらに、説明責任上の理由から、信頼できるユーザーごとに個別のアカウントを作成してください。他の強力なロールと同様に、絶対に必要な場合以外は、管理オプションでDBAロールを付与しないでください。

強力なロールを持つユーザー

PRIV.BIGROLES

最大のデータ・アクセス権限があるロールを付与されたユーザー・アカウントが表示されます。

DBAロールと同様に、これらのロール(AQ_ADMINISTRATOR_ROLEEM_EXPRESS_ALLEXP_FULL_DATABASEIMP_FULL_DATABASESELECT_CATALOG_ROLEEXECUTE_CATALOG_ROLEDELETE_CATALOG_ROLEOEM_MONITOR)には、セキュリティ保護をバイパスするために使用できる強力な権限が含まれています。これらは、信頼できる少数の管理者にのみ付与する必要があります。

Java権限

PRIV.JAVA

データベース内でJavaクラスを実行する権限を付与されたユーザー・アカウントが表示されます。

Java権限では、データベース・ユーザーがデータベース・サーバー内でJavaクラスを実行できるかどうかを制御できます。Javaコードを実行するデータベース・ユーザーには、データベース内のリソースにアクセスするデータベース権限とJavaセキュリティの許可の両方が必要です。これらのリソースには、表やPL/SQLなどのデータベース・リソース、ファイルやソケットなどのオペレーティング・システムのリソース、Oracle JVMのクラス、ユーザーがロードしたクラスが含まれます。各ユーザーのこれらの許可が必要最小限の範囲に限定されていることを確認してください。

管理権限SYS*権限を持つユーザー

PRIV.ADMIN

ユーザー・アカウントに付与されている管理権限が表示されます。

管理権限のあるユーザーは保守作業を実行できますが、データベースがオープンしていないときに発生する可能性がある作業もこれに含まれます。SYSDBA権限では、事実上すべての特権操作をユーザーがSYSとして実行できます。Oracle Database 12.1以降では、権限が弱い管理権限が導入されており、完全なSYSDBA権限なしにユーザーが一般的な管理タスクを実行できるようになっています。この職務分担のメリットを活用するには、これらの各管理権限を少なくとも1つのユーザー・アカウントに付与する必要があります。

次の図に、Oracle Database Security Assessmentレポート - 権限およびロール・セクションの例を示します。

図 - Oracle Database Security Assessmentレポート - 権限およびロール



権限およびロール・セクションの次には、認可制御セクションが表示されます。

Oracle Database Security Assessmentレポート - 認可制御

Oracle Database Security Assessmentレポート - 認可制御セクションには、次の情報が表示されます。

名前 結果ID 説明

Database Vault

AUTH.DV

Oracle Database Vaultが有効かどうかが表示されます。

Oracle Database Vaultには、権限がある管理ユーザーのアクションを制御する構成可能なポリシーが用意されています。

権限分析

AUTH.PRIV

権限分析が有効かどうかが表示されます。

権限分析では、実際またはシミュレートされたワークロードで使用された権限が記録されます。

次の図に、Oracle Database Security Assessmentレポート - 認可制御セクションの例を示します。

図 - Oracle Database Security Assessmentレポート - 認可制御



認可制御セクションの次には、ファイングレイン・アクセス制御セクションが表示されます。

Oracle Database Security Assessmentレポート - ファイングレイン・アクセス制御

Oracle Database Security Assessmentレポート - ファイングレイン・アクセス制御セクションには、次の情報が表示されます。

名前 結果ID 説明

データ・リダクション

ACCESS.REDACT

データ・リダクション・ポリシーが有効かどうかが表示されます。

データ・リダクションでは、データベース問合せの結果で見つかった機密データが自動的にマスクされます。

仮想プライベート・データベース

ACCESS.VPD

仮想プライベート・データベース(VPD)ポリシーが有効かどうかが表示されます。

VPDでは、SQL文に対して表示される表の行と列をきめ細かく制御できます。

Real Application Security

ACCESS.RAS

Real Application Security (RAS)のポリシーが有効かどうかが表示されます。

仮想プライベート・データベース(VPD)の場合と同様に、RASでも、SQL文に対して表示される表の行と列をきめ細かく制御できます。

Label Security

ACCESS.OLS

Oracle Label Securityが有効がどうかが表示されます。

Oracle Label Securityでは、データ・ラベルまたはデータ分類でデータにタグ付けできます。データのラベルが要求元ユーザーのラベルや安全検査と比較されて、機密データへのアクセスが制御されます。

透過的機密データ保護

ACCESS.TSDP

透過的機密データ保護(TSDP)ポリシーが有効かどうかが表示されます。

TSDPはOracle Database 12.1で導入され、機密データを含む各列にデータ・タイプを関連付けることができます。特定のタイプのすべてのインスタンスに様々なデータ・セキュリティ機能をTSDPで適用すれば、均一で一貫した保護を実現できます。

次の図に、Oracle Database Security Assessmentレポート - ファイングレイン・アクセス制御セクションの例を示します。

図 - Oracle Database Security Assessmentレポート - ファイングレイン・アクセス制御



ファイングレイン・アクセス制御セクションの次には、監査セクションが表示されます。

Oracle Database Security Assessmentレポート - 監査

Oracle Database Security Assessmentレポート - 監査・セクションには、次の情報が表示されます。

名前 結果ID 説明

監査レコード

AUDIT.RECORDS

監査証跡に関する情報が表示されます。

監査はすべてのシステムのセキュリティ保護に欠かせません。監査証跡では、高い権限が付与されたユーザーの活動をモニタリングできます。

監査SQL文

AUDIT.STMT

有効な監査ポリシーにより監査されたSQL文に関する情報が表示されます。

監査オブジェクト・アクション

AUDIT.OBJ

有効な監査ポリシーにより監査されたオブジェクト・アクセスに関する情報が表示されます。

監査システム権限

AUDIT.PRIV

有効な監査ポリシーにより監査された権限に関する情報が表示されます。

監査管理(SYS*)ユーザー

AUDIT.ADMIN

有効な監査ポリシーでSYSユーザーのアクションを監査するかどうかが表示されます。

SYSユーザーが実行した管理アクションを監査することは重要です。従来の監査ポリシーはSYSに適用されないため、AUDIT_SYS_OPERATIONSパラメータを設定して、別の監査証跡にSYSのアクションを記録する必要があります。

監査権限管理

AUDIT.PRIVMGMT

有効な監査ポリシーで権限管理に関するアクションを監査するかどうかが表示されます。

追加の権限をユーザーやロールに付与すると、ほとんどのセキュリティ保護に影響する可能性があるため、監査する必要があります。リストされている各アクションまたは権限を、少なくとも1つの有効な監査ポリシーに含めてください。

監査アカウント管理アクティビティ

AUDIT.ACCTMGMT

有効な監査ポリシーでアカウント管理に関するアクションを監査するかどうかが表示されます。

新規ユーザーの作成または既存アカウントの変更により、それらのアカウントの権限にアクセスできる可能性があるため監査が必要です。リストされている各アクションまたは権限を、少なくとも1つの有効な監査ポリシーに含めてください。

データベース管理監査

AUDIT.DBMGMT

有効な監査ポリシーでデータベース管理に関するアクションを監査するかどうかが表示されます。

データベース機能の管理に影響するアクションは常に監査する必要があります。リストされている各アクションまたは権限を、少なくとも1つの有効な監査ポリシーに含めてください。

監査強力な権限

AUDIT.PRIVUSE

有効な監査ポリシーで強力なシステム権限の使用を監査するかどうかが表示されます。

強力なシステム権限の使用は常に監査する必要があります。リストされている各権限を、少なくとも1つの有効な監査ポリシーに含める必要があります。

監査ユーザー・ログオン/ログオフ

AUDIT.CONN

有効な監査ポリシーでデータベース接続を監査するかどうかが表示されます。

将来のフォレンジック分析を支援するために、データベースに対して成功したユーザー接続を監査する必要があります。接続試行の失敗は、データベースに攻撃者がアクセスしようとしていることを早期に警告する役割を果たす場合があります。

ファイングレイン監査

AUDIT.FGA

ファイングレイン監査ポリシーが有効かどうかが表示されます。

ファイングレイン監査ポリシーでは、特定の表の列へのアクセスや特定の条件で発生するアクセスなど、非常に具体的なアクティビティを記録できます。これは、通常のアクティビティに関する不必要な監査レコードを取得せずに、予期しないデータ・アクセスをモニターするために有用な方法です。

統合監査ポリシー

AUDIT.UNIFIED

統合監査ポリシーが有効かどうかが表示されます。

Oracle Database 12.1以降で使用できる統合監査では、複数の監査証跡が1つの統合ビューにまとめられています。また、効果的な監査ポリシーを指定するための新しい構文も導入されています。

次の図に、Oracle Database Security Assessmentレポート - 監査・セクションの例を示します。

図 - Oracle Database Security Assessmentレポート - 監査



監査セクションの次には、暗号化セクションが表示されます。

Oracle Database Security Assessmentレポート - 暗号化

Oracle Database Security Assessmentレポート - 暗号化セクションには、次の情報が表示されます。

名前 結果ID 説明

透過的データ暗号化

CRYPT.TDE

表領域および列データの暗号化が有効がどうかが表示されます。

特定の規制下にある環境では、一部の機密データの暗号化が必須要件になっています。透過的データ暗号化では、保存時にデータが自動的に暗号化され、取得時に復号化されます。このようにして、データベースをバイパスしてデータ・ファイルを直接読み取る攻撃から機密データを保護します。

暗号化キー・ウォレット

CRYPT.WALLET

ウォレット情報が表示されます。

ウォレットは、暗号化キー、パスワードおよび他の機密データを保存するために使用する暗号化されたファイルです。暗号化されたデータ・ファイルとそれらのファイルを保護するマスター・キーが含まれたウォレット・ファイルの両方を含むバックアップを不注意で作成することがないように、データベースのデータファイルと同じディレクトリにウォレット・ファイルを保存しないでください。キーとデータを最大限に分離するために、ウォレット・ファイルではなくOracle Key Vaultに暗号化キーを保存することを検討してください。

次の図に、Oracle Database Security Assessmentレポート - 暗号化セクションの例を示します。

暗号化セクションの次には、データベース構成セクションが表示されます。

Oracle Database Security Assessmentレポート - データベース構成

Oracle Database Security Assessmentレポート - データベース構成セクションには、次の情報が表示されます。

名前 結果ID 説明

セキュリティの初期化パラメータ

-

データベース初期化パラメータとその値が表示されます。

ディクショナリ・オブジェクトに対するアクセス権

CONF.SYSOBJ

ディクショナリ・オブジェクトに対するアクセス権が正しく制限されているかどうかが表示されます。

O7_DICTIONARY_ACCESSIBILITYFALSEに設定されていると、SYSが所有する表はANY TABLEシステム権限の影響を受けません。SYSが所有する表によってデータベースの全体的な状態が制御されるので、ANY TABLE権限があるユーザーが操作できないようにするために、このパラメータは常にFALSEに設定する必要があります。

表データの推測

CONF.INFER

データ推測攻撃が正しく防御されているかどうかが表示されます。

SQL92_SECURITYをTRUEに設定すると、WHERE句で列を参照するUPDATE文およびDELETE文が、同じ列からSELECTする権限がユーザーにあるときのみに正しく動作するようになります。このパラメータをTRUEに設定して、表示する権限がない列の値をユーザーが推測できないようにする必要があります。

パスワード・ファイルに対するアクセス権

CONF.PWDFILE

パスワード・ファイルが正しく構成されているかどうかが表示されます。

REMOTE_LOGIN_PASSWORDFILEEXCLUSIVEに設定すると、各管理ユーザーに個別のエントリをパスワード・ファイルに格納して、管理ユーザーのアクションを個別に監査および追跡できるようになります。また、ALTER USERコマンドを使用してパスワードを更新できるようになります。

データベース・リンク・グローバル名

CONF.GLBLNM

データベース・リンク名がデータベース名と異なるか同じかが表示されます。

GLOBAL_NAMESパラメータでは、接続を定義するリモート・データベースの名前がデータベース・リンク名と同じであるという要件を設定できます。両方に同じ名前を使用すれば、あいまいさがなくなり、リモート・データベースに対する許可されない接続や意図しない接続が発生する可能性が低下します。

ネットワーク通信

CONF.NETCOM

ローカル・ネットワーク・リスナーの初期化パラメータに関する情報が表示されます。

REMOTE_LISTENERでは、別のシステムで動作するネットワーク・リスナーを使用できます。通常は、このパラメータを設定せずにローカル・リスナーを使用してください。SEC_PROTOCOL_ERRORパラメータでは、データベース・サーバーが不正な形式のネットワーク・パケットをクライアントから受信した場合のデータベース・サーバーの応答を制御します。これらの不正な形式のパケットには悪意のあるクライアントによる攻撃の可能性があるため、インシデントをログに記録して接続を終了するようにこのパラメータを設定してください。

認証されないクライアントに返す情報はリモート攻撃に対するサーバーの脆弱性を特定するために使用される可能性があるため、SEC_RETURN_SERVER_RELEASE_BANNERFALSEに設定して情報を制限してください。

外部認可

CONF.EXTAUTH

リモート認証の初期化パラメータに関する情報が表示されます。

OS_ROLESパラメータでは、ユーザーに付与されるロールをデータベースのGRANT文で制御するか、データベース・サーバーのオペレーティング・システムで制御するかを決定します。REMOTE_OS_AUTHENTおよびREMOTE_OS_ROLESでは、クライアントのオペレーティング・システムがデータベースのユーザーおよびロールを設定することを許可します。これらのパラメータはすべてFALSEに設定して、データベース・ユーザーの認証がデータベース自身で管理されるようにしてください。

トレース・ファイル

CONF.TRACE

トレース・ファイルの初期化パラメータに関する情報が表示されます。

非表示パラメータ_TRACE_FILES_PUBLICでは、データベースが生成したトレース・ファイルにすべてのOSユーザーがアクセスできるかどうかを決定します。これらのファイルには機密データが含まれている可能性があるため、このパラメータをFALSEに設定してアクセスを制限してください。

インスタンス名のチェック

CONF.INSTNM

インスタンス名にデータベースのバージョン番号が含まれているかどうかが表示されます。

インスタンス名にOracleのバージョン番号を含めないでください。認証されていないユーザーにサービス名を発見される可能性があります。バージョン番号や他のデータベース製品の情報がサービス名に含まれていると、悪意のあるユーザーがその情報を使用してターゲットを絞った攻撃を開発する可能性があります。

トリガー

CONF.TRIG

ログオン・トリガーに関する情報が表示されます。

トリガーとは、表へのデータの挿入やデータベースの接続など、特定のイベントが発生すると常に実行されるコードのことです。トリガーを無効にすると、トリガーが実現すると期待されている保護や監視もアクティブでなくなるので注意が必要です。

無効な制約

CONF.CONST

無効な制約に関する情報が表示されます。

制約は、データベースに保存されているデータ項目間で特定のリレーションシップを強制および保証するために使用します。制約を無効にすると、制約が確保していた条件が強制されなくなるので注意が必要です。

外部プロシージャ

CONF.EXTPROC

外部プロシージャおよびサービスに関する情報が表示されます。

外部プロシージャでは、他の言語で記述されたコードをPL/SQLから実行できます。外部コードに対する変更はデータベースで制御できないことに注意してください。信頼できるコード・ライブラリのみを実行可能にするように注意してください。データベースでは自分のプロセスを起動して外部プロシージャを実行できますが、この用途のリスナー・サービスを構成して、権限が少ないOSユーザーとして外部コードを実行できるようにすることをお薦めします。リスナー構成では、デフォルト値のANYを使用せずにEXTPROC_DLLSを設定して、実行できる特定の共有ライブラリ・コードを識別できるようにしてください。

ディレクトリ・オブジェクト

CONF.DIR

ディレクトリ・オブジェクトに関する情報が表示されます。

ディレクトリ・オブジェクトでは、データベース内のPL/SQLコードからサーバーのシステム・ファイルにアクセスできます。データベース・カーネルが使用するファイルに対するアクセスは、データベースの運用を変更してアクセス制御をバイパスできる可能性があるため許可しないでください。

データベース・リンク

CONF.LINKS

データベース・リンクに関する情報が表示されます。

データベース・リンクでは、他のデータベースの表にアクセスするSQL文をユーザーが実行できます。これにより、リモート・データベースのデータの問合せおよび保存の両方が許可されます。アクセスするデータベースとリンク名が一致するように、GLOBAL_NAMESTRUEに設定することをお薦めします。

ネットワーク・アクセス制御

CONF.NETACL

ネットワークのアクセス制御リスト(ACL)に関する情報が表示されます。

ネットワークACLでは、UTL_TCPやUTL_HTTPなどのネットワーク・パッケージを使用してデータベース・ユーザーがアクセスできる外部サーバーを制御します。具体的には、データベース・ユーザーは、UTL_TCPUTL_HTTPUTL_SMTPおよびUTL_MAILユーティリティ・パッケージを使用して外部ネットワークのホスト・コンピュータに接続する場合に、そのコンピュータに対するconnect権限が必要です。UTL_INADDRパッケージを使用してホスト名とIPアドレスを変換するには、Resolve権限が必要です。各ユーザーのこれらの許可が必要最小限の範囲に限定されていることを確認してください。

XMLデータベース・アクセス制御

CONF.XMLACL

XMLデータベースのアクセス制御リスト(ACL)に関する情報が表示されます。

XML ACLでは、XML DB機能を使用したデータベース・リソースへのアクセスを制御します。Oracle XML DBリポジトリ階層のすべてのリソースにACLが関連付けられています。ACLメカニズムでは、プリンシパル(データベース・ユーザーまたはロール)に対して権限ベースのアクセス制御を指定します。リソースがアクセスされるときには常にセキュリティ・チェックが実行されて、リソースにアクセスするのに十分な権限が要求元のユーザーにあるかどうかがACLによって判断されます。各ユーザーのこれらの権限が必要最小限の範囲に限定されていることを確認してください。

データベースのバックアップ

CONF.BKUP

データベースのバックアップ・レコードに関する情報が表示されます。

データベースは定期的にバックアップして、システム障害が発生したときにデータが失われないようにしてください。Oracle Recovery Manager (RMAN)では、データベースのバックアップとリカバリのタスクを実行できます。暗号化されていないバックアップ・データをテープやディスクに転送して、オフサイトで保管しないでください。分散環境のテープ・データを保護するために、Oracle Secure Backup (OSB)を使用することもできます。

次の図に、Oracle Database Security Assessmentレポート - データベース構成セクションの例を示します。

図 - Oracle Database Security Assessmentレポート - データベース構成



データベース構成セクションの次には、ネットワーク構成セクションが表示されます。

Oracle Database Security Assessmentレポート - ネットワーク構成

Oracle Database Security Assessmentレポート - ネットワーク構成セクションには、次の情報が表示されます。

名前 結果ID 説明

ネットワーク暗号化

NET.CRYPT

ネットワーク暗号化に関する情報が表示されます。

ネットワーク暗号化では、データベース・サーバーとそのクライアントの間の通信の機密保持および整合性が保護されます。ネイティブ暗号化またはTLSのどちらかを有効にしてください。ネイティブ暗号化の場合は、ENCRYPTION_SERVERCRYPTO_CHECKSUM_SERVERの両方をREQUIREDに設定してください。TLSを使用する場合は、すべてのネットワーク・ポートにTCPSを指定して、SSL_CERT_REVOCATIONREQUIREDに設定してください。

クライアント・ノード

NET.CLIENTS

データベース・サーバーに接続できるクライアント・ノードに関する情報が表示されます。

データベース・サーバーに接続できるクライアント・ノードを制御するには、TCP.VALIDNODE_CHECKINGを有効にしてください。接続を許可するクライアント・ノードの許可リスト(TCP.INVITED_NODES)または接続を許可しないクライアント・ノードのブロックリスト(TCP.EXCLUDED_NODES)のどちらかを指定できます。両方のリストを構成するとエラーになります。この場合は、許可されるノードのリストのみが使用されます。

SQLNETバナー

NET.BANNER

SQLNET接続バナー・メッセージが構成されているかどうかが表示されます。

これらのバナー・メッセージは、接続するユーザーに不正なアクセスは許可されないことと、アクティビティが監査されることを警告するために使用します。

ネットワーク・リスナー構成

NET.COST

ネットワーク・リスナー構成に関する情報が表示されます。

これらのパラメータは、ネットワーク・リスナー構成に対する変更を制限するために使用します。

実行中のリスナーに対するパラメータ変更を防ぐために、ADMIN_RESTRICTIONSを有効にしてください。サーバー登録に関して次のいずれかの制限を実装してください。

  • DYNAMIC_REGISTRATIONを無効にして変更を防ぎます

  • VALID_NODE_CHECKING_REGISTRATIONを有効にして、変更できるノードを制限します

  • COSTパラメータのSECURE_PROTOCOLSECURE_CONTROLおよびSECURE_REGISTERを使用して、変更のネットワーク・ソースを制限します。CONNECTION_RATEでは、レートが制限されているすべてのエンドポイントで強制するレートを決定します。

リスナー・ロギング制御

NET.LISTENLOG

ネットワーク・リスナー・ロギング構成に関する情報が表示されます。

LOGGING_LISTENERパラメータでは、リスナー・アクティビティのロギングが有効になります。ログ情報はトラブルシューティングに役立ち、攻撃の可能性を早期に警告するのにも役立ちます。

次の図に、Oracle Database Security Assessmentレポート - ネットワーク構成セクションの例を示します。

図 - Oracle Database Security Assessmentレポート - ネットワーク構成



ネットワーク構成セクションの次には、オペレーティング・システム・セクションが表示されます。

Oracle Database Security Assessmentレポート - オペレーティング・システム

Oracle Database Security Assessmentレポート - オペレーティング・システム・セクションには、次の情報が表示されます。

名前 結果ID 説明

OS認証

OS.AUTH

OS認証を使用するデータベース接続に関する情報が表示されます。

OS認証では、指定したユーザー・グループのオペレーティング・システム・ユーザーが管理権限でデータベースに接続できます。ここには、各管理権限を行使できるOSグループ名とユーザーが表示されます。管理権限があるOSユーザーをレビューして、データベースに対する不正、悪意のあるまたは意図しないアクセスを防いでください。

プロセス・モニター・プロセス

OS.PMON

プロセス・モニター(PMON)のプロセスがORACLE_HOME所有者アカウントで実行されているかどうかが表示されます。

PMONプロセスは、ユーザー・プロセスをモニターして、プロセスが終了するとリソースを解放します。このプロセスはORACLE_HOME所有者のユーザーIDで実行してください。

エージェント・プロセス

OS.AGENT

エージェント・プロセスの所有者がリスナーまたはプロセス・モニター(PMON)のプロセス所有者と重なっていないかどうかが表示されます。

エージェント・プロセスはOracle Enterprise Managerがデータベースを監視および管理するために使用します。これらのプロセスは、データベースおよびリスナーのプロセスとは別のユーザーIDで実行する必要があります。

リスナー・プロセス

OS.LISTEN

リスナー・プロセスの所有者がエージェントまたはプロセス・モニター(PMON)のプロセス所有者と重なっていないかどうかが表示されます。

リスナー・プロセスは着信ネットワーク接続を受け入れて、適切なデータベース・サーバー・プロセスに接続します。これらのプロセスは、データベースおよびエージェントのプロセスとは別のユーザーIDで実行する必要があります。これらのプロセスはローカルOS認証のみを介して管理してください。

ORACLE_HOMEのファイル権限

OS.FILES

ORACLE_HOMEのファイル権限で検出されたエラーに関する情報が表示されます。

ORACLE_HOMEディレクトリおよびそのサブディレクトリには、実行可能形式プログラム、ライブラリ、データ・ファイル、構成ファイルなど、データベースを正しく運用するために重要なファイルが含まれています。オペレーティング・システムのファイル権限では、ORACLE_HOME所有者以外のユーザーがこれらのファイルを変更できないようにする必要があり、Oracleデータ・ファイルの内容を他のユーザーが直接読み取れないようにする必要があります。

ノート:

Windowsでは、DBSAT CollectorはSQL問合せからのみデータを収集します。オペレーティング・システム・コマンドからのデータがないため、DBSAT Reporterはこのデータに対してルールのサブセットを実行します。オペレーティング・システムの結果は、Windowsプラットフォームで稼働中のデータベースでは使用できません。

次の図に、Oracle Database Security Assessmentレポート - オペレーティング・システム・セクションの例を示します。

図 - Oracle Database Security Assessmentレポート - オペレーティング・システム



オペレーティング・システム・セクションの次には、診断セクションが表示されます。

Oracle Database Security Assessmentレポート - 診断

診断セクションには、実行できなかったチェックが表示されます。

ノート:

このレポートには、Oracleデータベース・システムをセキュリティ保護するために役立つ可能性がある情報および推奨事項が表示されます。このような推奨事項は、データベース・セキュリティに関するベスト・プラクティスを反映しており、設計およびデフォルトによるデータ保護に関する戦略の一部となります。これらの実際的な情報は、EUの一般データ保護規則の25条および32条と、その他のデータ・プライバシ規則に対処する際に役立ちます。技術的な制御のみでは、コンプライアンスには不十分です。すべての結果に合格してもコンプライアンスは保証されません。

Oracle Database Vault、Oracle Advanced Security、Oracle Label Security、Oracle Data Masking and Subsetting Packは、データベースでライセンスされるオプションです。Oracle Key VaultおよびOracle Audit Vault and Database Firewallには、別のライセンスも必要です。

このレポートには現在のステータスに関する1つの見方が示されます。表示される結果は情報目的のみで提供されるため、詳細な分析のかわりに使用したり、法律や規制に関する助言やガイダンスを含むものと解釈しないでください。

システムおよびこのレポートの生成時に収集されるデータおよび情報に対しては、お客様にすべての責任があります。また、このレポートを生成するソフトウェアの実行、そこに示されている緩和処置を実行した結果および影響に対しても、お客様にすべての責任があります。

オラクル社は、いかなる保証もせず「現状のまま」この分析を提供し、オラクル社は明示的、暗示的または法律上のすべての保証をしないことをここに明記します。

Discovererの使用

Discovererコンポーネントを使用して、Oracle Database Sensitive Data Assessmentレポートを生成できます。

Oracle Database Sensitive Data Assessmentレポート

Discovererコンポーネントを使用して、Oracle Database Sensitive Data Assessmentレポートを生成します。

次の図に、Discovererのコンポーネントとアーキテクチャを示します。

図 - Discovererのコンポーネントとアーキテクチャ

図の説明が続きます
「図 - Discovererのコンポーネントとアーキテクチャ」の説明

Discovererの使用

Discovererは、SQL問合せを実行し、構成ファイルおよびパターン・ファイルで指定された設定に基づいて評価対象となるシステムからデータを収集します。

Discovererの構成

dbsat.configの構成

構成ファイルの設定により、Discovererの動作が決まります。

Discovererを構成するには、次のようにします。
  1. Oracle DBSATがインストールされているディレクトリにアクセスします。
  2. Discover/confディレクトリに移動します。sample_dbsat.configファイルのコピーを作成し、使用しているサイトに固有の要件に一致するようにファイルの名前を変更します。たとえば、ファイルの名前をcustom_dbsat.configに変更できます。

    ノート:

    複製ファイルを作成することで、カスタム設定が再インストール時に上書きされなくなります。
  3. custom_dbsat.configを開きます。

    構成ファイルの内容を次に示します。

    [Database]
            TNS_ADMIN =
            NET_SERVICE_NAME =
            WALLET_LOCATION =
            
            DB_HOSTNAME = localhost
            DB_PORT = 1521
            DB_SERVICE_NAME = 
    
            SSL_ENABLED = FALSE
            SSL_TRUSTSTORE = 
            SSL_TRUSTSTORE_TYPE = 
            SSL_KEYSTORE = 
            SSL_KEYSTORE_TYPE = 
            SSL_DN = 
            SSL_VERSION = 
            SSL_CIPHER_SUITES = 
     
    [Discovery Parameters]
            sensitive_pattern_files = sensitive_en.ini
            schema_scope = ALL
            minrows = 1
            exclusion_list_file =        
    
    [Sensitive Categories]
            Identification Info - National IDs = High Risk
            Identification Info - Personal IDs = High Risk
            Identification Info - Public IDs = High Risk
            Biographic Info - Address = High Risk
            Biographic Info - Family Data = High Risk
            Biographic Info - Extended PII = High Risk
            Biographic Info - Restricted Data = High Risk
            IT Info - User Data = High Risk
            IT Info - Device Data = Medium Risk
            Financial Info - Card Data = High Risk
            Financial Info - Bank Data = High Risk
            Health Info - Insurance Data = High Risk
            Health Info - Provider Data = Medium Risk
            Health Info - Medical Data = Medium Risk
            Job Info - Employee Data = High Risk
            Job Info - Org Data = Low Risk
            Job Info - Compensation Data = High Risk
            Academic Info - Student Data = High Risk
            Academic Info - Institution Data = Medium Risk
            Academic Info - Performance Data = Low Risk

    ノート:

    セクションの[Database][Discovery Parameters]および[Sensitive Categories]エントリは保持します。これらの行を削除すると、ツールの実行でエラーが発生します。
  4. 設定を構成します。構成設定の詳細は、構成設定を参照してください。
  5. 構成ファイルを保存して閉じます。
構成設定
セクション キー 説明
[Database] TNS_ADMIN

<ネットワーク・サービス名の場所>

ネットワーク・サービス名を読み取る場所

- NET_SERVICE_NAME

<net_service_name>

接続に使用されるネットワーク・サービス名

- WALLET_LOCATION

<SSLウォレットの場所> | <SEPSウォレットの場所>

SSLまたはSEPSによるセキュアな接続のためのウォレットの場所(セキュアな外部パスワード・ストア)

- DB_HOSTNAME

<hostname> | <ip_address>

ターゲット・データベース・サーバーのホスト名またはIPアドレス

- DB_PORT

<portnumber>

デフォルトは、1521です。

ターゲット・データベースのリスナー・ポート番号。ポート番号を指定しないと、デフォルト・ポート1521が使用されます。

- DB_SERVICE_NAME

<service_name>

ターゲット・データベースのサービス名

- SSL_ENABLED

TRUE | FALSE

デフォルトはFALSEです。

データベース・サーバーに接続するときにSSLプロトコルを有効にするか無効にするかを指定します。これはオプションの引数です。

SSL_ENABLEDの値をTRUEに設定することをお薦めします。データベース・サーバーへのSSL接続が必要でない場合は、デフォルトのFALSE値を保持してください。

SSL_ENABLED = TRUEの場合は、SSL_TRUSTSTOREが必須です。

- SSL_TRUSTSTORE

<TrustStore/TrustStoreファイル名への絶対パス>

例: /opt/oracle/wallets/truststore.jks

TrustStoreおよびTrustStoreファイル名への絶対パスを指定します。

SSL_ENABLED = TRUEの場合は必須です。

- SSL_TRUSTSTORE_TYPE

PKCS12 | JKS | SSO

TrustStoreのタイプを指定します。

Truststoreがウォレットの場合はPKCS12を使用します。

TruststoreがJava KeyStoreの場合はJKSを使用します。

Truststoreが自動ログインSSOウォレットの場合はSSOを使用します。

- SSL_KEYSTORE

<KeyStore/KeyStoreファイル名への絶対パス>

例: /opt/oracle/wallets/keystore.jks

KeyStoreおよびKeyStoreファイル名への絶対パスを指定します。

SSL_KEYSTOREが指定されていない場合、SSL_TRUSTSTOREに指定された値が使用されます。

データベース・サーバーにクライアント認証が必要な場合は必須です。

- SSL_KEYSTORE_TYPE

PKCS12 | JKS | SSO

KeyStoreのタイプを指定します。

KeyStoreがウォレットの場合はPKCS12を使用します。

KeyStoreがJava KeyStoreの場合はJKSを使用します。

KeyStoreが自動ログインSSOウォレットの場合はSSOを使用します。

- SSL_DN

<distinguished_name>

ターゲット・データベース・サーバーの識別名(DN)です。

サーバーのDNを確認する必要がある場合はDNを指定します。

これはオプションの引数です。

- SSL_VERSION

1.0 | 1.1 | 1.2

デフォルトは1.2です。

データベース・サーバーへの接続時に使用するSSLプロトコルのバージョンを指定します。これはオプションの引数です。

SSLバージョンTLSv1.0には1.0を使用します。

SSLバージョンTLSv1.1には1.1を使用します。

SSLバージョンTLSv1.2には1.2を使用します。

- SSL_CIPHER_SUITES

<cipher_suite1>,<cipher_suite2>

例: TLS_RSA_WITH_AES_256_CBC_SHA256 , SSL_RSA_WITH_RC4_128_MD5

使用する暗号アルゴリズムを指定します。複数のエントリをカンマ区切りリストとして指定できます。

これはオプションの引数です。

サポートされる暗号サイトの詳細は、https://docs.oracle.com/javase/8/docs/technotes/guides/security/SunProviders.htmlを参照してください。

[Discovery Parameters] SENSITIVE_PATTERN_FILES

<file_name> | <file_name1>, <file_name2>

デフォルトは、sensitive_en.iniです。

使用するパターン・ファイルを指定します。複数のファイルをカンマ区切りリストとして指定できます。上限は、10ファイルです。

機密データ・タイプ・パターン・ファイルの構成の詳細は、パターン・ファイルの構成(オプション)を参照してください。

- SCHEMA_SCOPE

ALL | <schema1>,<schema2>

デフォルトは、ALLです。

スキャン対象となるスキーマを指定します。複数のスキーマをカンマ区切りリストとして指定できます。

- MINROWS

<numerical value>

デフォルトは、1です。

スキャン対象となる表について、表の最小行数を指定します。

minrowsパラメータで指定された値より行数が少ない表はスキャンから除外されます。

- EXCLUSION_LIST_FILE

<exclusion_list_filename>.ini

スキーマ、表または列をスキャンから除外するのに使用するファイルを指定します。

除外リスト・ファイルの構成の詳細は、除外リスト・ファイルの構成(オプション)を参照してください。

[Sensitive Categories]    

[Sensitive Categories]セクションでは、使用する機密カテゴリを定義します。有効なリスク・レベルは次のとおりです。

  • Low Risk

  • Medium Risk

  • High Risk

機密データのタイプは機密データ・タイプ・パターン・ファイルで定義します。機密データ・タイプ・パターン・ファイルの構成の詳細は、パターン・ファイルの構成(オプション)を参照してください。

パターン・ファイルの構成(オプション)

Oracle Database Security Assessment Toolでは、パターン・ファイルで定義されている機密データのタイプを検索します。

機密タイプについて

パターン・ファイルには、検索対象となるパターンが含まれます。パターン・ファイルは、セクション見出し形式[SENSITIVE_TYPE_NAME]で定義されたセクションにグループ分けされています。各セクションが機密タイプとなります。

次の例では、FULL NAMEのサンプル機密タイプ・セクションを示します。

[FULL NAME]
COL_NAME_PATTERN = ^(?!.*(ITEM|TAX|BALANCE)).*(FULL.*NAME)|(^|[_-])(CUSTOMER|CUST|CLIENT|PATIENT|PERSON).?(NAME|NM)($|[_-])
COL_COMMENT_PATTERN = ^(?!.*(ITEM|TAX|BALANCE)).*(FULL.?NAME)|(CUSTOMER|CUST|CLIENT|PATIENT|PERSON).?NAME
SENSITIVE_CATEGORY = Identification Info - Public IDs

機密タイプ名[SENSITIVE_TYPE_NAME]は、データベース機密データ評価レポート - 機密列の詳細セクションの機密タイプ列に表示されます。データベース機密データ評価レポートの詳細は、Oracle Database Sensitive Data Assessmentレポートを参照してください。

各機密タイプは、COL_NAME_PATTERNCOL_COMMENT_PATTERNおよびSENSITIVE_CATEGORYの3つのパラメータで定義します。

COL_NAME_PATTERN

COL_NAME_PATTERNパラメータは、検索するテキストをデータベース列名の正規表現(RegExp)パターンで指定します。

(^LNAME$)|((LAST|FAMILY|SUR|PATERNAL).*NAME$)

前述の例では、データベース列名のRegExpパターンで次のテキストが検索されます。

  • (^LNAME$) - LNAMEという名前の列が検索されます。

  • ((LAST|FAMILY|SUR|PATERNAL).*NAME$)LASTFAMILYSURまたはPATERNALを含み、その後に任意の文字が続いてNAMEで終わる列名を検索します。たとえば、LAST_NAMEまたはCUSTOMER_SURNAMEです。

COL_COMMENT_PATTERN

COL_COMMENT_PATTERNパラメータは、検索するテキストをデータベース列コメントの正規表現(RegExp)パターンで指定します。

SENSITIVE_CATEGORY

SENSITIVE_CATEGORYパラメータは、機密データのタイプを指定します。機密データの公開タイプに関連付けられるリスク・レベルは、sample_dbsat.configファイルに指定します。リスク・レベルは次のとおりです。

  • Low Risk

  • Medium Risk

  • High Risk

sample_dbsat.configファイルの構成の詳細は、構成設定を参照してください。

パターン・ファイルのカスタマイズ
パターン・ファイルをカスタマイズするには、次のようにします。
  1. Oracle DBSATがインストールされているディレクトリにアクセスします。
  2. Discover/confディレクトリに移動します。sensitive_en.iniファイルのコピーを作成し、ファイルの名前をmy_sensitive_en.iniに変更します。

    ノート:

    Discover/confディレクトリには、欧州の主要言語のデータ・ディクショナリの機密データを発見しやすくする、言語固有の次の.iniファイル(ファイル名 - 国、言語)が含まれています。

    • sensitive_de.ini - ドイツ語、ドイツ。

    • sensitive_el.ini - ギリシャ語、ギリシャ。

    • sensitive_es.ini - スペイン語、スペイン。

    • sensitive_fr.ini - フランス語、フランス。

    • sensitive_it.ini - イタリア語、イタリア。

    • sensitive_nl.ini - オランダ語、オランダ。

    • sensitive_pt.ini - ポルトガル語、ポルトガル。

  3. my_sensitive_en.iniを開きます。
  4. 新しい機密タイプを追加したり、既存の機密タイプを変更して設定をカスタマイズします。

    新しい機密タイプおよび機密カテゴリをパターン・ファイルに追加する方法の詳細は、機密タイプについておよび構成設定を参照してください。

  5. my_sensitive_en.iniを保存して閉じます。
    パターン・ファイルが構成されます。
  6. my_sensitive_en.iniへの参照をcustom_dbsat.configファイルに追加して、このファイルをDiscovererスキャンに組み込みます。
    sensitive_pattern_files = my_sensitive_en.ini
custom_dbsat.configファイルでパターン・ファイルを参照する方法の詳細は、dbsat.configの構成を参照してください。
正規表現について

検索パラメータでは正規表現を使用します。正規表現は、セット内の各文字列で共有される共通特性に基づく文字列のセットです。正規表現の複雑さは様々ですが、記述方法の基本を理解すれば、判読または記述できます。正規表現を定義するには、文字クラス、グループの検索、数量子、境界正規表現エンジンおよび論理演算子を使用します。

文字列リテラル

最も基本的なパターン一致の形式は、文字列リテラルの一致です。たとえば、正規表現がEMPで、入力文字列がEMPの場合、文字列が同一なので一致に成功します。この正規表現は、EMPLOYEETEMPTEMPERATUREなどのEMPを含む文字列とも一致します。

メタ文字

パターンの照合方法に影響する特殊文字を使用することもできます。最も一般的なものの1つに、すべての文字に一致するドット(.)記号があります。たとえば、EMPLOYEE.IDは、EMPLOYEE_IDおよびEMPLOYEE-IDと一致しますが、EMPLOYEE_VERIFICATION_IDとは一致しません。ここで、ドットは正規表現エンジンによって特別な意味に解釈されるメタ文字です。

その他のメタ文字には、^ $ ? + * \ - [ ] ( ) { }などがあります。

メタ文字を文字どおりに(通常の文字として)処理する場合は、バックスラッシュ(\)を使用してエスケープします。たとえば、正規表現9\+99+9と一致します。

文字クラス

文字クラスは、大カッコで囲まれた一連の文字です。これは、対象の入力文字列の1文字と一致する文字を指定します。

次の表は、一般的な正規表現の構文を示しています。

構文 説明
[abc]

大カッコ内に指定されたいずれかの文字と一致します。

例: EMPLOYE[ER]は、EMPLOYEEおよびEMPLOYERと一致します。

[^abc]

大カッコ内に指定された文字を除く、任意の文字と一致します。

例: [^BC]ATは、RATおよびHATと一致しますが、BATおよびCATとは一致しません。

[A-Z0-9]

大カッコ内に指定された範囲の任意の文字と一致します。範囲を指定するには、一致する最初の文字と最後の文字の間にダッシュ・メタ文字「-」を挿入します([1-5][A-M]など)。クラス内に異なる範囲を並べて指定し、一致する可能性をより高くすることもできます。

例: [B-F]ATは、BATCATDATEATおよびFATと一致しますが、AATおよびGATとは一致しません。

グループの検索

グループの検索を使用すると、複数の文字を1つの単位として処理できます。グループの検索は、カッコ内にグループ化する文字を指定することによって作成します。たとえば、正規表現(SSN)では、文字SSおよびNを含む単一のグループが作成されます。

関連項目:

グループの検索

数量子

数量子を使用すると、一致の回数を指定できます。

次の表は、一般的な数量子を示しています。

数量子 説明
X?

指定された文字または文字グループが0回または1回出現すると一致します。

例: SSN_NUMBERS?は、文字列SSN_NUMBERおよびSSN_NUMBERSと一致します。

X*

指定された文字または文字グループが0回以上出現すると一致します。

例: TERM.*DATEは、TERMDATETERM_DATELAST_TERMINATION_DATEなどの文字列と一致します。

X+

指定された文字または文字グループが1回以上出現すると一致します。

例: TERM.+DATEは、TERM_DATETERMINATION_DATEなどの文字列と一致しますが、TERMDATEとは一致しません。

X{n}

指定した文字または文字グループがn回出現した場合にのみ一致します。

例: 9{3}は、999と一致しますが、99とは一致しません。

X{n,}

指定した文字または文字グループがn回以上出現した場合に一致します。

例: 9{3,}は、9999999および99999と一致しますが、99とは一致しません。

X{n,m}

指定した文字または文字グループがn回以上、m回以下出現した場合に一致します。

例: 9{3,4}は、999および9999と一致しますが、99とは一致しません。

文字クラスを使用する正規表現は、たとえばSSN[0-9]+のように記述し、これはSSN0SSN1SSN12などの文字列と一致します。ここで、[0-9]は文字クラスであり、1回以上出現すると一致します。この正規表現はSSNとは一致しません。

関連項目:

数量子

境界正規表現エンジン

境界正規表現エンジンを使用すると、文字列内の一致が発生する位置を指定することによって、パターン一致をより正確に行うことができます。たとえば、特定の単語が入力文字列の先頭または末尾に出現する場合のみを検索することがあります。

次の表は、一般的な境界正規表現エンジンを示しています。

境界構文 説明
^

指定した文字または文字グループが文字列の先頭(検索の開始位置)にある場合に一致します。

例: ^VISAは、VISAで始まる文字列と一致します。

$

指定した文字または文字グループが文字列の末尾(検索の終了位置)にある場合に一致します。

例: NUMBER$は、NUMBERで終わる文字列と一致します。

\b

単語境界を示します。\bのペアの間に指定された文字または文字グループが、(長い文字列の部分文字列ではなく)独立した単語である場合にのみ一致します。

例: \bAGE\bは、EMPLOYEE AGEPATIENT AGE INFORMATIONなどの文字列と一致しますが、AGEINGEMPLOYEEAGEなどの文字列とは一致しません。

境界正規表現エンジンを指定しない場合は、「次を含む」検索が実行されます。たとえば、ELECTORALは、ELECTORAL_IDID_ELECTORALELECTORALIDなどのELECTORALを含む文字列と一致します。

完全一致検索は、^および$を一緒に使用して実行することもできます。たとえば、^ADDRESS$では、ADDRESSと完全に一致する文字列が検索されます。文字列ADDRESSと一致しますが、PRIMARY_ADDRESSADDRESS_HOMEなどの文字列とは一致しません。

論理演算子

パイプまたは縦棒(|)は、パイプで区切られたいずれかの文字(または文字のグループ)と照合する場合に使用できます。たとえば、EMPLOY(EE|ER)_IDは、EMPLOYEE_IDおよびEMPLOYER_IDと一致します。

^JOB.*(TITLE|PROFILE|POSITION)$は、JOBで始まり、その後に任意の文字が0回以上出現し、TITLEPROFILEまたはPOSITIONで終わる文字列と一致します。

^[A-Z]{3}[0-9]{2}[A-Z0-9]$は、3つの文字で始まり、その後に2桁の数字が続き、文字または数字で終わる文字列と一致します。

BIRTH.?(COUNTRY|PLACE)|(COUNTRY|PLACE).*BIRTHは、BIRTH COUNTRYPATIENT_BIRTH_PLACEPLACE_OF_BIRTHEMPLOYEE'S COUNTRY OF BIRTHなどの文字列と一致します。

関連項目:

正規表現
除外リスト・ファイルの構成(オプション)

スキャンから除外するスキーマ、表または列を除外リスト・ファイルに指定できます。

これはオプションのステップですが、多くの場合、Discovererを微調整して誤検出を除外するために必要となります。
除外リスト・ファイルを作成するには、次のようにします。
  1. 除外リスト・ファイルを作成して、Discover/confディレクトリにmyexclusion_listという名前で保存します。
  2. Discovererスキャンから除外するスキーマ、表または列を指定します。

    除外リスト・ファイルのサンプル内容を次に示します。

    PAYROLL
    IT.ENTITLEMENTS
    HR.EMPLOYEE.MARITAL_STATUS
    HR.JOB.CANDIDATE

    書式SchemaName.TableName.ColumnNameを使用して除外するスキーマ、表または列を指定します。各除外エントリは新しい行に入力します。

    上の例では、PAYROLLがPAYROLLスキーマを検出スキャンから除外し、IT.ENTITLEMENTSはITスキーマのENTITLEMENTS 表を除外し、HR.EMPLOYEE.MARITAL_STATUSは列MARITAL_STATUSHR.EMPLOYEE表から除外します。同様に、HR.JOB.CANDIDATEは列CANDIDATEHR.JOB表から除外します。

    ヒント:

    DiscovererのCSVレポートには、完全修飾列名(FULLY_QUALIFIED_COLUMN_NAME)の列が含まれます。この列は、除外リスト・ファイルの内容を作成し、後続の実行で不要な列または誤検出をレポートから削除する速度を上げるのに使用できます。
  3. 除外リスト・ファイルを保存して閉じます。
  4. custom_dbsat.configファイルのexclusion_list_fileエントリをexclusion_list_file = myexclusion_listに更新します。
除外リスト・ファイルを参照する方法の詳細は、dbsat.configの構成を参照してください。
証明書とウォレットの構成(オプション)

Discovererでは、セキュアな外部パスワード・ストアを使用して、接続時にウォレットに格納されているログイン資格証明を取得できます。セキュアな外部パスワード・ストアを使用すると、ユーザー名とパスワードを入力せずにデータベースに接続できます。セキュアな外部パスワード・ストアによりセキュリティが向上し、Discovererの実行を自動化できるようになります。

セキュリティを高めるために、Oracle Databaseではクライアントとサーバー間の接続を暗号化するSecure Sockets Layer (SSL)サポートが提供されています。SSL (TLS)暗号化がデータベース・サーバーで構成されている場合、データを接続および検出するにはDiscovererを構成する必要があります。SSLの構成パラメータは、dbsat.configファイルにあります。

DiscovererとSSL接続を確立するために、データベース・サーバーは、ウォレットに格納されている自身の証明書を送信します。クライアントで証明書やウォレットが必要となるかどうかは、サーバーの構成によって決まります。

ノート:

証明書とウォレットの構成はオプションのステップで、SSLを使用してOracle Databaseサーバーに接続する場合にのみ実行する必要があります。

証明書とウォレットの構成に関する詳細は、『Oracle Database JDBC開発者ガイドおよびリファレンス』SSLのサポートを参照してください。

Discovererの実行

Discovererを実行するには、次のようにします。
  1. Discovererを実行するための引数を指定します。
    $ dbsat discover [-n] -c <config_file> <output_file>

    dbsat discoverコマンドには、次のオプションおよび引数があります。

    • -n

      出力を暗号化しないことを指定します。

    • -c

      Discovererに使用する構成ファイルの名前を指定します。config_fileファイルの詳細は、dbsat.configの構成を参照してください。

    • output_file

      .zipファイルを作成するフルパスまたは相対パス名を指定します。拡張子を追加しないでください。

      例: /home/oracle/dbsat/PDB1

  2. Discovererを実行します。
    $ ./dbsat discover -c Discover/conf/custom_dbsat.config PDB1

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

    DBSAT Discover ran successfully.
    Calling /usr/bin/zip to encrypt the generated reports...
    Enter password: 
    Verify password: 
      adding: PDB1_discover.html (deflated 86%)
      adding: PDB1_discover.csv (deflated 86%)
    Zip completed successfully.
    $
  3. .zipファイルを暗号化するためのパスワードを指定します。

    <destination>_report.zipという名前のzipファイルが作成されます。ファイル<destination>_report.zipが存在する場合、検出結果は既存のzipファイルに追加されます。

    ノート:

    .zipファイルは、ReporterおよびDiscovererの出力に使用されます。混乱を避けるために、両方の出力を作成する場合は、同じパスワードを使用することをお薦めします。
  4. データベース機密データ評価レポートを利用できるように、.zipファイルの内容を抽出します。要求されたら、パスワードを入力して、ステップ3で指定した.zipファイルを復号化します。

    .zipファイルの内容が抽出されます。

  5. 適切なツールを使用してデータベース機密データ評価レポートを読みます。

    例: .htmlファイルを表示するには、ブラウザを使用します。

    例: .csvファイルを開くには、OpenOffice CalcExcelなどのスプレッドシート・リーダーを使用します。

Oracle Database Sensitive Data Assessmentレポート

Discovererコンポーネントを使用して、Oracle Database Sensitive Data AssessmentレポートをHTMLおよびCSV形式で生成します。

HTMLレポートは主要なレポートであり、ターゲット・データベース情報およびDiscovererのパラメータとともに、検出された機密データとそのカテゴリが含まれます。

CSVレポートは、Oracle Audit Vault and Database Firewallにロードして機密データ・コンテキストを新しいデータ・プライバシ・レポートに追加できます。この機能の詳細は、『Oracle Audit Vault and Database Firewall監査者ガイド』AVDFリポジトリへの機密データのインポートを参照してください。

Oracle Database Sensitive Data Assessmentレポート - 概要

Oracle Database Sensitive Data Assessmentレポート - 概要セクションには、次の情報が含まれます。

表 - Oracle Database Sensitive Data Assessmentレポート - 概要

セクション 説明
評価日時 機密データ評価レポートが生成された時期が表示されます。DBSAT Discovererバージョンも表示されます。
データベース識別情報 Discovererによって評価されたデータベースの詳細が表示されます。
データベース・バージョン Discovererによって評価されたデータベースのバージョンが表示されます。
検出パラメータ 構成ファイルで指定されている検出パラメータが表示されます。Discoveryのパラメータの詳細は、構成設定を参照してください。

次の図に、Oracle Database Sensitive Data Assessmentレポート - 概要セクションの最初の4つの表を示します。

図 - Oracle Database Sensitive Data Assessmentレポート - 概要


Discoveryのサマリー

概要セクションの次には、サマリー・セクションが表示されます。

Oracle Database Sensitive Data Assessmentレポート - サマリー

Oracle Database Sensitive Data Assessmentレポート - サマリー・セクションには、機密データとして識別された表、列および行の数に関する情報が機密カテゴリごとにグループ分けされて表示されます。

データベース機密データ評価レポート - サマリー・セクションには、次の列が含まれます。

表 - Oracle Database Sensitive Data Assessmentレポート - サマリー

列名 説明

機密カテゴリ

機密カテゴリの名前が表示されます。

機密表数

機密データが含まれていることが検出された表の数が表示されます。

機密列数

機密データが含まれている表で検出された列の数が表示されます。

機密行数

機密データが含まれている表で検出された行の数が表示されます。

次の図に、Oracle Database Sensitive Data Assessmentレポート - サマリー・セクションに表示される情報を示します。

図 - Oracle Database Sensitive Data Assessmentレポート - サマリー



ノート:

単一のデータベース表には、複数の機密カテゴリに合致する列または列コメントが含まれることがあり、機密表数列および「機密行数」列に表示される数が多くなります。ただし、合計行には機密データと識別された表および行の重複しない数が表示されます。

機密カテゴリの構成の詳細は、パターン・ファイルの構成(オプション)を参照してください。

サマリー・セクションの次には、機密データ・セクションが表示されます。

Oracle Database Sensitive Data Assessmentレポート - 機密データ

Oracle Database Sensitive Data Assessmentレポート - 機密データ・セクションには機密データが含まれるスキーマに関する情報が表示されます。

Oracle Database Sensitive Data Assessmentレポート - 機密データ・セクションには、次の情報が含まれます。

表 - Oracle Database Sensitive Data Assessmentレポート - 機密データ

セクション 説明
リスク・レベル Discovererによって評価されたデータベースのスキーマで識別された機密データのリスク・レベルが表示されます。
サマリー スキーマでの機密データの出現のサマリーが表示されます。
場所 機密データが含まれるスキーマの名前が表示されます。

次の図に、Oracle Database Sensitive Data Assessmentレポート - 機密データ・セクションに表示される情報を示します。

図 - Oracle Database Sensitive Data Assessmentレポート - 機密データ



各リスク・レベルの検出内容の後に、機密データをセキュリティ保護するための一連の推奨事項が表示されます。これらの推奨事項には、リスク・レベル(高、中および低)に基づいた様々な制御方法が一覧表示されます。

次の図に、リスク・レベル: 高リスク・セクションに表示される情報を示します。

図 - リスク・レベルごとにグループ化された機密カテゴリ



各リスク・レベル・セクションの次には、機密データを含むことが検出された表のリストが表示されます。次の情報が表示されます:

表 - 機密カテゴリ内で検出された表: <機密カテゴリ名>

名前 説明

リスク・レベル

リスク・レベルが表示されます。

サマリー

検出された機密カテゴリ・データのサマリーが表示されます。

場所

機密データを含む表の名前が表示されます。

次の図に、各機密カテゴリ内で検出された表: <機密カテゴリ名>サブセクションに表示される情報を示します。

図 - 機密カテゴリ内で検出された表: <機密カテゴリ名>



機密データ・セクションの次には、スキーマ・ビュー・セクションが表示されます。

Oracle Database Sensitive Data Assessmentレポート - スキーマ・ビュー

Oracle Database Sensitive Data Assessmentレポート - スキーマ・ビュー・セクションには、機密データが含まれるスキーマ、表、列および行に関する情報が表示されます。機密カテゴリも表示されます。

Oracle Database Sensitive Data Assessmentレポート - サマリー・セクションには、次の列が含まれます。

列名 説明

スキーマ

スキーマの名前が表示されます。

表名

表の名前が表示されます。

表内の列数が表示されます。

機密列

機密データが含まれていることが検出された列の数が表示されます。

表内の行数が表示されます

機密カテゴリ

各列で検出された機密データのカテゴリが表示されます。

次の図に、Oracle Database Sensitive Data Assessmentレポート - スキーマ・ビュー・セクションに表示される情報の概要を示します。

図 - Oracle Database Sensitive Data Assessmentレポート - スキーマ・ビュー



スキーマ・ビュー・セクションの次には、機密列の詳細セクションが表示されます。

Oracle Database Sensitive Data Assessmentレポート - 機密列の詳細

Oracle Database Sensitive Data Assessmentレポート - 機密列の詳細セクションには、機密データが含まれる列に関する情報が表示されます。機密カテゴリおよび機密タイプも表示されます。

列名 説明

スキーマ名

スキーマの名前が表示されます。

表名

表の名前が表示されます。

列名

列の名前が表示されます。

列コメント

列のコメントが表示されます。

機密カテゴリ

各列で検出された機密データのカテゴリが表示されます。

機密タイプ

各列で検出された機密データのタイプが表示されます。

リスク・レベル

リスク・レベルが表示されます。

次の図に、Oracle Database Sensitive Data Assessmentレポート - 機密列の詳細セクションに表示される情報を示します。

図 - Oracle Database Sensitive Data Assessmentレポート - 機密列の詳細



最小権限を持つユーザーを作成するためのサンプル・スクリプト

スクリプトを使用して、Oracle Database Security Assessment Tool Collectorを実行するために必要な最小権限を持つユーザーを作成できます。

目的

Oracle DBSAT Collectorスクリプトを実行するために必要な権限を持つDBSATユーザーを作成します。

サンプル・スクリプト

create user dbsat_user identified by dbsat_user;
--If Database Vault is enabled, connect as DV_ACCTMGR to run this command
grant create session to dbsat_user;
grant select_catalog_role to dbsat_user;
grant select on sys.registry$history to dbsat_user;
grant select on sys.dba_users_with_defpwd to dbsat_user; // 11g and 12c
grant audit_viewer to dbsat_user; // 12c
grant capture_admin to dbsat_user;// 12c covers sys.dba_priv_captures, sys.priv_capture$, sys.capture_run_log$ 
--If Database Vault is enabled, connect as DV_OWNER to run this command 
grant DV_SECANALYST to dbsat_user;

ベスト・プラクティス

Collector - OSコマンド

一般的なベスト・プラクティスとして、アプリケーションまたはファイルにユーザー名とパスワードの資格証明をクリアテキストで格納しないでください。dbsat collectの実行時にコマンドラインにパスワードを指定すると、履歴の使用、ps Unixコマンドの実行、または類似するWindowsコマンドの実行によって、攻撃者が資格証明を取得できます。このため、プロンプトが表示されたときにパスワードを入力することをお薦めします。

サード・パーティ・ライセンスの帰属

Database Security Assessment Toolリリース2.2.1.0.0では、サード・パーティ・ライセンスが使用されます

サード・パーティ・ライセンスについて

バイナリ形式でオラクル社から入手するサード・パーティの技術で、そのバイナリのソース・コードの入手権限を付与するオープン・ソース・ライセンス下で認可されている技術の場合は、このページから該当するソース・コードのコピーを入手できます。技術のソース・コードがバイナリとともに提供されていない場合は、文書によるリクエストを次に送付すると、物理媒体でソース・コードのコピーを入手することもできます。

Oracle America, Inc.
Attn: Associate General Counsel
Development and Engineering Legal
500 Oracle Parkway, 10th Floor
Redwood Shores, CA 94065

または、次のフォームを使用してオラクル社に電子メールを送信することもできます。リクエストには、次の情報を記入してください。

The name of the component or binary file(s) for which you are requesting the source code
The name and version number of the Oracle product
The date you received the Oracle product
Your name
Your company name (if applicable)
Your return mailing address and email
A telephone number in the event we need to reach you

物理媒体と手続きの費用は無料です。リクエストを送付できるのは、(i)リクエスト対象のコンポーネントまたはバイナリ・ファイルを含むOracle製品を入手した日から3年以内、または(ii) GPL v3の下でコードが認可されている場合(ただし、オラクル社がその製品モデルのスペア・パーツまたはカスタマ・サポートを提供している場合に限る)です。

XlsxWriter, Version: 1.2.2

Copyright (c) 2013, John McNamara <jmcnamara@cpan.org>

All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

  1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.

  2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

The views and conclusions contained in the software and documentation are those of the authors and should not be interpreted as representing official policies, either expressed or implied, of the FreeBSD Project.

ドキュメントのアクセシビリティについて

Oracleのアクセシビリティについての詳細情報は、Oracle Accessibility ProgramのWebサイト(http://www.oracle.com/pls/topic/lookup?ctx=acc&id=docacc)を参照してください。

Oracleサポートへのアクセス

サポートを購入したオラクル社のお客様は、My Oracle Supportを介して電子的なサポートにアクセスできます。詳細情報は(http://www.oracle.com/pls/topic/lookup?ctx=acc&id=info)か、聴覚に障害のあるお客様は(http://www.oracle.com/pls/topic/lookup?ctx=acc&id=trs)を参照してください。