※ 本記事は2016年11月21日に公開されたものです。

今、実際に稼働しているOracle Databaseで適切なセキュリティ設定がされているか、どのようなセキュリティポリシーが適用されているかを確認するための無償のツールがDatabase Security Assessment Tool (DBSAT) です。DBSATでは、データベースの基本構成、ユーザアカウント、権限管理、暗号化、監査設定情報などをスクリプトで取得し、HTML、XLSX、TXT形式のレポートとして出力できます。

以下のOSプラットフォームのOracle Database 10gR2 (10.2.0.5) 以降に対応しています。

Solaris x64 and Solaris SPARC
Linux x86-64
Windows x64
HP-UX IA (64-bit)
IBM AIX & zSeries Based Linux

DBSATは、サポート契約さえあれば My Oracle Support (MOS) からダウンロードできます。My Oracle Supportにログインして、DocIDの「2138254.1」もしくは「DBSAT」で検索すると以下のドキュメントがヒットしますので、こちらからdbsat.zipをダウンロードして下さい。

DocID 2138254.1 Oracle Database Security Assessment Tool (DBSAT)

DBSATのマニュアル (英語) は以下のリンクから参照できます。URLで公開されています。

Oracle Database Security Assessment Tool Documentation Release 1.0

 

DBSATは、2つの手順からできています。

ひとつ目がデータベースとサーバーから各種情報を取得するためのDBSAT Collectorで、ふたつ目がCollectorで取得した情報をレポート化するDBSAT Reporterです。

DBSAT Collectorは、SQL問い合わせとOSのコマンドを利用して、データベースセキュリティに関する情報を収集します。データベースへのSQL問い合わせはデータディクショナリへの参照で、更新処理やアプリケーションデータへの参照はおこないません。集められたデータは中間ファイルとしてOSに保存されます。中間ファイルはJSONのフォーマットで、セキュリティ設定という機微なデータであるため、暗号化されたZIPとしてOSに安全に保存されます。使い方は以下の通りです。

 

  1. My Oracle Supportからdbsat.zipをダウンロード
    Doc ID 2138254.1 Oracle Database Security Assessment Tool (DBSAT)
  2. dbsat.zip をデータベースサーバー上に解凍
    unzip dbsat.zip -d /home/oracle/dbsat
    cd /home/oracle/dbsat
  3. 環境変数にORACLE_HOMEが設定されていることを確認
  4. LANGおよびNLS_LANG環境変数がUTF8であることを確認
    例) LANG=ja_JP.utf8; NLS_LANG=Japanese_Japan.AL32UTF8
  5. DBSAT Collectorの実行
    dbsat  collect [DBUser/Password] [ZIP name]
    例) dbsat collect system/oracle12c ora003
    → ora003.zipファイルが作成されます
    ※ 出力されたJSONファイルがZIPで暗号化されます

 

$ ./dbsat collect system/oracle12c orac003
Connecting to the target Oracle database...SQL*Plus: Release 12.1.0.2.0 Production on 月 7月 11 00:43:01 2016
Copyright (c) 1982, 2014, Oracle.  All rights reserved.
最終正常ログイン時間: 月 7月  11 2016 00:16:06 +09:00
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
Real Application Testing and Unified Auditing options
に接続されました。
Setup complete.
SQL queries complete.
OS commands complete.
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
Real Application Testing and Unified Auditing optionsとの接続が切断されました。
DBSAT Collector completed successfully.
Calling /opt/app/oracle/product/12.1.0.2/dbhome_1/bin/zip to encrypt secvm3.json...
Enter password: ZIPファイルのパスワード入力
Verify password: ZIPファイルのパスワード入力
adding: ora003.json (deflated 87%)
zip completed successfully.

DBSAT Collectorを実行する際に、データベースユーザーに必要な権限は以下の通りです。

CREATE SESSION
SELECT on SYS.REGISTRY$HISTORY
Role SELECT_CATALOG_ROLE
Role DV_SECANALYST (if Database Vault is enabled)
Role AUDIT_VIEWER (12c only)
Role CAPTURE_ADMIN (12c only)
SELECT on SYS.DBA_USERS_WITH_DEFPWD (11g and 12c)
SELECT on AUDSYS.AUD$UNIFIED (12c only)

DBSAT用のユーザーを作成しなくても、Database Vaultが有効でない環境であれば、dba OSグループに所属するOracle DatabaseのインストールユーザーOSに接続し、DBAロールを持つSYSTEMユーザーでデータベースに接続するのが簡単です。

 

DBSAT Reporterは、Pythonのスクリプトで、DBSAT Collectorで収集した中間ファイルをHTML、XLSX、TXT形式のレポートに整形して出力します。使い方は以下の通りです。

 

  1. Python 2.6以上(Python 3.xは不可)がインストールされていることの確認
    $ python -V
    Python 2.6.6
    インストールされていない場合には、最新のPython 2.Xをダウンロード、インストールして下さい。 
    なお、DBSAT CollectorとDBSAT Reporterは異なるサーバー上で実行することも可能です。データベースサーバーにPythonをインストールしたくない場合には別のマシンにDBSATとPythonをインストールしてください。
  2. DBSAT Reporterの実行
    dbsat  report [ZIP name]
    例) dbsat report ora003
    -> ora003_report.zipファイルが作成されます
    ※出力されたレポートがZIPで暗号化されます
./dbsat report ora003
Archive:  ora003.zip
[ora003.zip] ora003.json password: ZIPファイルのパスワード入力
  inflating: ./ora003.json
DBSAT Reporter ran successfully.
Calling /usr/bin/zip to encrypt the generated reports...
Enter password: ZIPファイルのパスワード入力
Verify password: ZIPファイルのパスワード入力
  adding: ora003.txt (deflated 77%)
  adding: ora003.html (deflated 83%)
  adding: ora003.xlsx (deflated 3%)
zip completed successfully.

 

作成されたZIPファイルを解凍すると、各形式のDBSATレポートが見れます。(レポートは英語です)
サンプルのレポートはこちらから。レポートの詳しい見方はまた別のエントリで。

 「もくじ」に戻る