※ 本記事は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に安全に保存されます。使い方は以下の通りです。
- My Oracle Supportからdbsat.zipをダウンロード
Doc ID 2138254.1 Oracle Database Security Assessment Tool (DBSAT) - dbsat.zip をデータベースサーバー上に解凍
unzip dbsat.zip -d /home/oracle/dbsat
cd /home/oracle/dbsat - 環境変数にORACLE_HOMEが設定されていることを確認
- LANGおよびNLS_LANG環境変数がUTF8であることを確認
例) LANG=ja_JP.utf8; NLS_LANG=Japanese_Japan.AL32UTF8 - 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 SESSIONSELECT on SYS.REGISTRY$HISTORYRole SELECT_CATALOG_ROLERole 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形式のレポートに整形して出力します。使い方は以下の通りです。
- Python 2.6以上(Python 3.xは不可)がインストールされていることの確認
$ python -V
Python 2.6.6
インストールされていない場合には、最新のPython 2.Xをダウンロード、インストールして下さい。
なお、DBSAT CollectorとDBSAT Reporterは異なるサーバー上で実行することも可能です。データベースサーバーにPythonをインストールしたくない場合には別のマシンにDBSATとPythonをインストールしてください。 - 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レポートが見れます。(レポートは英語です)
サンプルのレポートはこちらから。レポートの詳しい見方はまた別のエントリで。
