LAC WATCH

セキュリティとITの最新情報

RSS

株式会社ラック

メールマガジン

サイバーセキュリティや
ラックに関する情報をお届けします。

サービス・製品 | 

DBSATを使ってOCI Oracle ベース・データベースのセキュリティを診断してみよう!

データベースは企業活動において最も重要な資産の一つとなる業務データが格納される領域であるため、セキュリティ対策は非常に重要なミッションです。しかし、稼働するデータベースについて、セキュリティ指標を満たした構成であると自信を持って言えるでしょうか?

かつてデータベースのセキュリティといえば、いくつもの構築や運用案件で培ったノウハウをもとに、比較的経験が豊富なエンジニアが多角的に診断する必要がありました。しかし、昨今では提供元からデータベースのセキュリティ評価ツールが無償で提供されています。

しかもOracle社であれば、2023年秋に登場した23cにも対応しており、動作も軽く、各種セキュリティ・フレームワーク(CIS、DISA STIGs、GDPR)に関連したチェックを手軽に実施できます。

本記事では、Oracle Cloud Infrastructure(OCI)上に構築したOracleベース・データベースに対して、セキュリティ評価ツール(DBSAT:Oracle Database Security Assessment Tool)を実行する方法と、評価できる項目の概要についてご紹介します。

DBSATを利用することでOracle Databaseの構成、運用、実装の領域でリスクを招く恐れがある設定を特定し、リスクを低減させるために必要な対応方法を見える化できます。

DBSATとは

Oracle Database Security Assessment Tool(DBSAT)は、OracleのサポートサイトであるMy Oracle Supportからダウンロードして使用できる、コマンドラインのセキュリティ評価ツールです。

データベース構成、ユーザや付与された権限などを含めたセキュリティ・ポリシーの分析、または機密データが存在する場所を特定することで、セキュリティ上のリスクを明らかにしOracle Databaseのセキュリティ状態を高められます。

最新のバージョンではOracleのベスト・プラクティスとしての評価項目も追加され、より利用者が結果を判断しやすくなっています。

DBSATのコンポーネント

DBSATは3つのコンポーネントで構成されています。基本となるデータベース・セキュリティ評価の場合は、Collectorによるデータの収集後、Reporterを実行するだけで手軽にレポートを出力できます。Discovererはデータベース内のカラム名やコメントから機密データを特定し、その結果をレポートとして出力します。

  • データベース・セキュリティ評価レポート:Collector + Reporter
  • 機密データ評価レポート:Discoverer
コンポーネント 概要
Collector 評価対象となるシステムからデータを収集し、結果をJSONファイルに書き込みます。収集にはSQL*Plusによるデータ・ディクショナリ・ビューに対するクエリーが中心となりますが、その他にOSコマンドも実行します。
Reporter Collectorで収集したJSONファイルを分析し、データベース・セキュリティ評価レポートを生成します。評価レポートは4種類(HTML、Excel、JSON、テキスト形式)のファイルが同じ内容で作成されます。なおReporterは評価対象のサーバとは異なる環境で実行させることも可能となります。
Discoverer 評価対象となるシステムからデータを収集し、機密データ評価レポートを生成します。評価レポートはHTML、CSV形式のファイルが作成されます。Discovererは収集からレポート作成までを単独で実行するスタンドアロン・コンポーネントとなるため、収集にCollectorを必要としません。ただし機密を判断するためのパターンファイルの提供が、デフォルトでは英語および欧州の主要言語のみとなるため、利用するためには事前に自社の環境に合わせた抽出パターンの定義が必要となります。

その他、追加機能としてコンパニオン・ユーティリティも提供されています。

ユーティリティ 概要
DBSAT extract Reporterで出力したレポート(JSONファイル)から、指定した識別子の結果だけを標準出力に表示します。読み込むファイルは複数選択できるため、複数のデータベースで特定の項目だけを比較する際に活用できます。
DBSAT diff Reporterで出力した2つのレポート(JSONファイル)を比較し、相違点を標準出力に表示します。

DBSATの前提条件

最新版(2023年11月リリース)のDBSAT Release 3.0.0のシステム要件は次のとおりです。

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

Oracle Databaseがサポートされているほとんどのプラットフォームで実行できます。一般的に使用されることが多いLinux、Windowsだけではなく、Solaris、HP-UX、AIXまで動作対象に含まれています。ただしOSのデータ収集に関してはWindows環境ではスキップされます。

Oracle Databaseバージョン

Oracle Database 11g(11.2.0.4)以降で、最新の23cまで対応しています。サポート範囲のバージョンであれば、オンプレミス環境だけではなく、OCIにおける、Oracleベース・データベース、ExaDB-D、Autonomous Databaseに対しても実行可能です。

Java

ReporterおよびDiscovererはJavaプログラムです。実行するためには、以下バージョンのJavaが必要です。

  • Java Runtime Environment(JRE)1.8(jdk8-u172)or later

なお、Reporterは以前のバージョンではPythonプログラムでしたが、現在はJavaプログラムに変更されています。

Zip/UnZip

DBSATを実行すると、収集したデータや評価レポートを圧縮・解凍します。そのためzipやunzipユーティリティが必要です。

DBSATの取得とマニュアル

DBSATモジュール自体は無償ですが、取得するにはOracleのサポート契約が必要です。My Oracle Supportでのアカウントを取得している方のみダウンロードして使用できます。

ダウンロード・サイト

My Oracle Supportにログインすることで、以下のDoc IDよりダウンロードできます。

  • Oracle Database Security Assessment Tool (DBSAT) (Doc ID 2138254.1)

マニュアル

公式のマニュアルがWeb上で公開されています。ただし2024年1月現在の最新バージョンについては、残念ながら英語版のみとなります。

Oracle Database Security Assessment Tool - Oracle Database Security Assessment Tool Releases

DBSATの導入と事前準備

DBSATをOCI上に作成したOracleベース・データベースに導入します。導入先となるOracleベース・データベースは以下の設定で作成されている前提とします。

項目 設定 備考 備考
ストレージの構成 Oracle Grid Infrastructure ASMを使用
合計ノード数 1 シングルDB構成
Oracle Database ソフトウェア・エディション Enterprise Edition  
データベース名 ORCL  
データベース・イメージ Oracle Database 23c  
PDB名 ORCL_PDB1  

1. DBSATの展開

DBSATコンポーネントはzipで圧縮されたファイルとして配布されており、任意のディレクトリに解凍するだけで使用できます。

まずは事前に構築したOracleベース・データベースのホストに対しSSHクライアントツールを使用して、opcユーザでログインします。またダウンロードしたdbsat.zipを/tmpにアップロードしておきます。

$ sudo su - oracle
 
# 任意のディレクトリに解凍(本手順ではdbsatディレクトリを作成)
$ mkdir -p /home/oracle/dbsat
$ unzip /tmp/dbsat.zip -d /home/oracle/dbsat
Archive:  /tmp/dbsat.zip
  inflating: /home/oracle/dbsat/dbsat
  inflating: /home/oracle/dbsat/dbsat.bat
  inflating: /home/oracle/dbsat/sat_collector.sql
  inflating: /home/oracle/dbsat/sa.jar
  inflating: /home/oracle/dbsat/jython-standalone-2.7.3.jar
<中略>
 
$ ls -l /home/oracle/dbsat
-r-xr-xr-x 1 oracle oinstall    14754 Oct 19 20:34 dbsat
-r-xr-xr-x 1 oracle oinstall    14741 Oct 19 20:34 dbsat.bat
drwxr-xr-x 5 oracle oinstall     4096 Dec  9 22:56 Discover
-rw-r--r-- 1 oracle oinstall 45447546 Nov  4 00:46 jython-standalone-2.7.3.jar
-r--r--r-- 1 oracle oinstall   112432 Nov  4 00:46 sa.jar
-rw-rw-r-- 1 oracle oinstall    92719 Nov  4 00:45 sat_collector.sql
drwxr-xr-x 2 oracle oinstall     4096 Dec  9 22:56 xlsxwriter
 
$

2. スクリプト環境変数の修正

Oracle Database 23cでは、$ORACLE_HOME/binにzipファイルが配布されなくなりました。そのためdbsatスクリプトのDBZIP環境変数の設定値を修正します。

$ cd /home/oracle/dbsat
 
# バックアップを取得後、DBZIP環境変数値を"/usr/bin/zip"に書き換え
$ cp -p dbsat dbsat.org
$ sed -i s/'DBZIP=¥${ORACLE_HOME}'/'DBZIP=¥/usr'/ dbsat
$ grep DBZIP= dbsat
DBZIP=/usr/bin/zip
 
$

Oracle Grid Infrastructureを使用した環境では、Oracleリスナー構成ファイル(listener.ora)がGRID_HOME配下に作成されます。DBSATにより正しく設定を読み込ませるため、実行コマンドの環境変数を修正します。

# バックアップを取得後、TNS_ADMIN環境変数をTNS_ADMIN_GRIDに書き換え
$ cp -p sat_collector.sql sat_collector.sql.org
$ sed -i s/'$TNS_ADMIN¥/listener'/'$TNS_ADMIN_GRID¥/listener'/g sat_collector.sql
$ grep TNS_ADMIN_GRID sat_collector.sql
host /usr/bin/perl -e '&x_filter_stmt' 'listener.ora' '/bin/cat $TNS_ADMIN_GRID/listener.ora 2> /dev/null || /bin/cat $ORACLE_HOME/network/admin/listener.ora' >> &x_spool_file
host /usr/bin/perl -e '&x_filter_stmt' 'ls_listener.ora' '/bin/ls -lL $TNS_ADMIN_GRID/listener.ora 2> /dev/null || /bin/ls -lL $ORACLE_HOME/network/admin/listener.ora' >> &x_spool_file
 
$

3. Collector接続用DBユーザの作成(オプション)

Collectorは処理の中でSQL*Plusを使用して、対象のOracle Databaseから設定情報を抽出します。

ここではCollectorが接続するための任意のDBユーザ(本手順ではDBSAT_USER)を作成し、動作に必要なシステム権限を付与します。ただしSYSTEMユーザなど管理者権限を持つユーザを使用可能な環境では、本手順をスキップできます。

$ sqlplus /nolog
SQL*Plus: Release 23.0.0.0.0 - Production on Sat Dec 16 23:20:17 2023
Version 23.3.0.23.09
Copyright (c) 1982, 2023, Oracle.  All rights reserved.
 
-- SYSDBAで接続し、プラガブル・データベース(PDB)にコンテナを切り替え
SQL> connect / as sysdba
Connected.
 
SQL> alter session set container = ORCL_PDB1;
Session altered.
 
SQL> show con_name
 
CON_NAME
------------------------------
ORCL_PDB1
 
-- DBSAT_USERの作成
SQL> create user DBSAT_USER identified by <任意のパスワード>;
User created.
 
SQL> grant CREATE SESSION to DBSAT_USER;
SQL> grant SELECT_CATALOG_ROLE to DBSAT_USER;
SQL> grant select on SYS.REGISTRY$HISTORY to DBSAT_USER;
SQL> grant read on SYS.DBA_AUDIT_MGMT_CONFIG_PARAMS to DBSAT_USER;
SQL> grant select on SYS.DBA_USERS_WITH_DEFPWD to DBSAT_USER;
SQL> grant AUDIT_VIEWER to DBSAT_USER;
SQL> grant CAPTURE_ADMIN to DBSAT_USER;
SQL> grant DV_SECANALYST to DBSAT_USER;
Grant succeeded.
 
SQL> exit
Disconnected from Oracle Database 23c Enterprise Edition Release 23.0.0.0.0 - Production
Version 23.3.0.23.09
 
$

4. プラガブル・データベース(PDB)への接続確認

Oracle Database 23cではマルチテナント・コンテナ・データベース(CDB)構成が必須です。評価レポートは業務データを格納するPDBに対して実施するため、PDBへの接続定義を確認します。

なおDBSAT_USERユーザの作成をスキップした場合はSYSTEMなど管理者権限を持つユーザで接続を試します。

# デフォルトで作成されているPDBへの接続サービス名を確認
$ lsnrctl service | grep orcl_pdb1 | grep oraclevcn.com
Service "orcl_pdb1.dbsatsub.dbsatvcn.oraclevcn.com" has 1 instance(s).
 
# 簡易接続ネーミング・メソッドで接続を確認(上記で確認したサービス名を使用)
$ sqlplus dbsat_user@//<ホスト名>:1521/orcl_pdb1.dbsatsub.dbsatvcn.oraclevcn.com
SQL*Plus: Release 23.0.0.0.0 - Production on Sat Dec 16 23:25:41 2023
Version 23.3.0.23.09
Copyright (c) 1982, 2023, Oracle.  All rights reserved.
 
Enter password: <設定したDBSAT_USERパスワード>
Connected to:
Oracle Database 23c Enterprise Edition Release 23.0.0.0.0 - Production
Version 23.3.0.23.09
 
SQL> show user
USER is "DBSAT_USER"
 
SQL> exit
Disconnected from Oracle Database 23c Enterprise Edition Release 23.0.0.0.0 - Production
Version 23.3.0.23.09
 
$

データベース・セキュリティ評価レポートの生成

ここからはOracleベース・データベースに導入したDBSATを実行して、データベース・セキュリティ評価レポートを生成するまでの一連の手順を紹介します。

Collectorの実行

データベース・セキュリティ評価レポートを出力するには、最初にCollectorを使用してデータ収集を実施する必要があります。Collectorを実行すると指定したファイル名でJSONファイル(デフォルトではzipで圧縮)が作成されます。

Collectorで使用できる引数について説明します。Oracle Databaseから抽出されるセキュリティ評価データは、企業にとって非常にセンシティブな情報であるため、ファイルの暗号化を無効にしないことが推奨されています。

  • Usage:dbsat collect [ -n ] <database_connect_string> <output_file>
オプション 概要 備考
-n 出力するファイルを暗号化しない 非推奨

事前に確認したPDBへの接続サービスを使用した簡易接続ネーミング・メソッドで接続し、データ収集を行います。ご自身の実行する環境に合わせ「ホスト名」の他、「DBサービス」「出力ファイル名」を適宜修正して実行します。収集処理は30秒程度で完了します。

  • database_connect_string:Oracleインスタンスへの接続文字列を指定
  • output_file:出力ファイル名。本手順では「orcl23c」を指定
# Oracleベース・データベースではORACLE_BASE環境変数が未設定のため追加指定
$ export ORACLE_BASE=/u01/app/oracle
 
# GRID環境のリスナー構成をチェックするための指定
$ export TNS_ADMIN_GRID=/u01/app/23.0.0.0/grid/network/admin
 
# Collectorの実行
$ export PATH=$PATH:/home/oracle/dbsat
$ dbsat collect dbsat_user@//<ホスト名>:1521/orcl_pdb1.dbsatsub.dbsatvcn.oraclevcn.com orcl23c
Database Security Assessment Tool version 3.0 (Nov 2023)
 
This tool is intended to assist you in securing your Oracle database
system. You are solely responsible for your system and the effect and
results of the execution of this tool (including, without limitation,
any damage or data loss). Further, the output generated by this tool may
include potentially sensitive system configuration data and information
that could be used by a skilled attacker to penetrate your system. You
are solely responsible for ensuring that the output of this tool,
including any generated reports, is handled in accordance with your
company's policies.
<中略>
 
Enter password: <設定したDBSAT_USERパスワード>
Last Successful login time: Sat Dec 16 2023 23:33:01 +09:00
<中略>
 
DBSAT Collector completed successfully.
Calling /usr/bin/zip to encrypt orcl23c.json...
 
Enter password: <結果ファイルの暗号化パスワード>
Verify password: <結果ファイルの暗号化パスワード>
  adding: orcl23c.json (deflated 90%)
zip completed successfully.
 
$ ls -l *.zip
-rw------- 1 oracle oinstall    63070 Dec 16 23:38 orcl23c.zip
 
$

なおCollectorの実行において、一部のチェックがスキップされた旨の警告が表示されることがあります。スキップされる理由として、対象のファイルが見つからない、もしくは権限が間違っているなどがありますが、無視しても問題ありません。

Reporterの実行

Collectorで収集した結果ファイルを読み込み、データベース・セキュリティ評価レポートを生成します。Reporterを実行すると「指定したファイル名+"_report"」とする複数の結果ファイル(デフォルトではzipで1ファイルに圧縮)が作成されます。

Reporterで使用できる引数について説明します。生成されるデータベース・セキュリティ評価レポートは、企業にとって非常にセンシティブな情報であるため、暗号化を無効にしないことが推奨されています。

  • Usage:dbsat report [ -a ] [ -n ] [ -g ] [ -x <section> ] [ -u <user> ] <input_file>
オプション 概要 備考
-a ロックされているユーザも含め、すべてのユーザをレポートする  
-n 出力するファイルを暗号化しない 非推奨
-g PDBにおける共通ユーザやロール、権限なども含めすべてを出力  
-x レポートから除外するセクションを指定する カンマで区切ることで複数選択可
-u レポートから除外するDBユーザ(大文字)を指定する カンマで区切ることで複数選択可

ReporterはJavaプログラムとなるため、実行にはJAVA_HOME環境変数の設定が必要になります。またCollectorのデータ収集で使用したDBSAT_USERユーザは評価からは除外させます。

  • input_file:入力ファイル名(拡張子zipを付けないファイル名を指定)。本手順では「orcl23c」を指定
$ export JAVA_HOME=${ORACLE_HOME}/jdk
$ dbsat report -a -u DBSAT_USER orcl23c
Database Security Assessment Tool version 3.0 (Nov 2023)
 
This tool is intended to assist you in securing your Oracle database
system. You are solely responsible for your system and the effect and
results of the execution of this tool (including, without limitation,
any damage or data loss). Further, the output generated by this tool may
include potentially sensitive system configuration data and information
that could be used by a skilled attacker to penetrate your system. You
are solely responsible for ensuring that the output of this tool,
including any generated reports, is handled in accordance with your
company's policies.
 
Archive:  orcl23c.zip
[orcl23c.zip] orcl23c.json password: <Collector実行時に指定した暗号化パスワード>
  inflating: orcl23c.json            
DBSAT Reporter ran successfully.
 
Calling /usr/bin/zip to encrypt the generated reports...
 
Enter password: <結果ファイルの暗号化パスワード>
Verify password: <結果ファイルの暗号化パスワード>
	zip warning: orcl23c_report.zip not found or empty
  adding: orcl23c_report.txt (deflated 81%)
  adding: orcl23c_report.html (deflated 84%)
  adding: orcl23c_report.xlsx (deflated 2%)
  adding: orcl23c_report.json (deflated 83%)
zip completed successfully.
 
$ ls -l *report.zip
-rw------- 1 oracle oinstall   185020 Dec 16 23:44 orcl23c_report.zip
 
$

データベース・セキュリティ評価レポートの確認

Reporterで生成した結果ファイル(*_report.zip)をローカルPCにダウンロードします。ファイルを解凍した後は、ご自身の好みの形式でレポートの内容を確認するだけです。

本手順で作成されたレポートファイルを解凍すると、以下4つのファイルが同内容で作成されます。

  • orcl23c_report.txt
  • orcl23c_report.html
  • orcl23c_report.xlsx
  • orcl23c_report.json

ここからは、HTML形式でのレポートをもとに内容をご紹介します。

サマリー

最初のページでは、DBSATを実行した日時の他、評価対象としたOracle Databaseを識別する情報が出力されます。また評価した各項目の結果がセクションごとにサマリーとしてまとめられています。

DBSATを実行した日時や、評価対象としたOracle Databaseを識別する情報、評価した各項目の結果のサマリー
項目 説明
Assessment Date & Time CollectorやReporterを実行した日時、DBSATバージョン
Database Identity 評価対象データベースの概要(DB名、プラットフォームなど)
Summary セクションごとの評価した合計数、合格・リスクレベルごとの結果数などカテゴリ別に集計

データベース・セキュリティ評価レポートで出力される項目を示します。本手順にてOCIでのOracleベース・データベース 23cを構築した直後にDBSATを実行してレポートを出力した際には、セクションごとに以下のリスク数が検出されました。

すべての調査項目や説明を確認したい場合はマニュアルを参照してみてください。

セクション 調査数 リスク数 評価する項目の概要
Basic Information - - データベースのバージョン、セキュリティ機能の使用状況
User Accounts 22 3 パスワードやプロファイルを中心としたDBユーザに関する評価
Privileges and Roles 23 0 権限やロールの付与に関する評価
Authorization Control 5 0 Database VaultやData Maskingなどに関する評価
Fine-Grained Access Control 5 0 Data RedactionやVPD、Label Securityなどに関する評価
Auditing 16 0 監査の使用状況における評価
Encryption 4 0 TDEやネットワーク暗号化などに関する評価
Database Configuration 21 1 冗長性やバックアップ、オブジェクトの状態などに関する評価
Network Configuration 5 0 クライアントからの接続設定に関する評価
Operating System 9 3 OSファイルのパーミッション、OSユーザの権限などに関する評価

基本情報

サマリーの次は、データベースの基本情報を確認できます。

データベースの基本情報
項目 説明
Database Version データベースのバージョン、エディション、有効になっているセキュリティ・オプション
Security Features Utilized セキュリティに関する各種機能の使用状況

評価セクション

評価セクションでは、評価項目ごとに調査結果が色分けして表示されます。

リスクを検知した例

リスクを検知した例

評価結果に問題がない(合格した)例

評価結果に問題がない(合格した)例
No. 項目 説明
Item 評価項目
Finding ID 調査結果の識別子。DBSAT extractでの抽出時にも利用される
Status 発見したリスクのレベル(Pass、Evaluate、Advisory、Low|Medium|High Riskに分類)
Summary 調査結果の概要
Details 調査結果の詳細(ステータスによって出力がない場合もある)
Remarks 調査結果の根拠と推奨事項
References セキュリティ規制とのマッピング

Oracleベース・データベースの初期構築後のレポートでは、7つの項目がリスクとして検出されました。ただし高リスクのものは見受けられず、デフォルト状態でも基本的なセキュリティ設定は担保できています。

また一部のリスク項目においてはOCI環境に依存した内容であるため、大きな懸念はないと判断できる結果となりました。

セクション リスクレベル 評価項目
User Accounts Medium ・User Schemas in SYSTEM or SYSAUX Tablespace
- User accounts should not use SYSTEM or SYSAUX tablespaces
(ユーザ・アカウントは、SYSTEMまたはSYSAUX表領域を使用しない)
Low ・Users with Unlimited Concurrent Sessions
- Control the users who can have unlimited concurrent user sessions
(同時セッション数が無制限のユーザを制御する)
・Users with Unlimited Session Idle Time
- User sessions should not be idle indefinitely
(ユーザ・セッションを無制限にアイドル状態としない)
Database
Configuration
Medium ・Control Files - Ensure control files have redundancy
(制御ファイルを冗長化する)
Operating System Medium ・Diagnostic Destination
- Check file permissions for directories holding diagnostic data
(診断データを保存するディレクトリのパーミッションを確認)
・File Permissions in ORACLE_HOME - Check OS file permissions
(OSファイルのパーミッションを確認)
Low ・Agent Processes - Check owner of Agent processes
(エージェント・プロセスの所有者を確認)

おわりに

本記事ではOCI上に作成したOracleベース・データベースに対して、DBSATを使用してデータベース・セキュリティ評価レポートを出力させる方法についてご紹介しました。結果からは、デフォルト状態でも概ねセキュリティ面における懸念点がないことも分かりましたが、実際の環境では、業務用スキーマを作成し各種権限の設定や、Oracle Databaseの初期化パラメータなどを含むシステム環境に応じたチューニングを実施します。

データベースの構築後にDBSATを実行し、セキュアな構成となっていることを一度確認されてみてはいかがでしょうか。

今回はOracle Databaseに関する内容が中心となりましたが、ラックではOCI、AWS、Azure、Google Cloudについても取り扱っています。お客様のシステム環境の課題に合わせて、適切なソリューション・サービスを提案いたしますので、マルチクラウドやハイブリッドクラウドも含めたシステム構成に関するお悩みがございましたら、ぜひラックまでお問い合わせください。

「クラウドインテグレーション」に関するお問い合わせ

この記事は役に立ちましたか?

はい いいえ