本連載では、データベースセキュリティの「考え方」と「必要な対策」をおさらいし、Oracle Databaseを軸にした「具体的な実装方法」や「Tips」を紹介していきます。今回は安全なデータベース運用のための設定について紹介します。後半部分では、Oracle Databaseのセキュリティ関連初期化パラメーター一覧を掲載しました。
本連載の第4回、「データベースセキュリティに求められる『3つの軸』とコストの最小化」では、安全にデータベースを運用するための軸の1つとして「構成管理」を挙げました。
今回は「構成管理」の中から、安全な設定について紹介します。なお、本記事の後半では、付録として「[保存版] Oracle Databaseのセキュリティ関連初期化パラメーター一覧」を掲載していますので、参考にしていただければ幸いです。
「データベースを運用する上で、脆弱(ぜいじゃく)な設定を避けて安全な設定をしましょう」と言うのは簡単ですが、「安全な設定」とは具体的に何をどうすればよいのか、迷う方は多いと思います。具体的な設定は、データベースの種類やバージョンによっても変わってしまいますし、設計する人のセキュリティへの考え方などでも変わるかもしれません。ただし、ベンダーなどが出している「ガイドライン」や「ベストプラクティス」といったものは、専門家などが実際に発生した事件なども考慮して作成していますので、安全な設定を行う上で参考にできます。
Oracle Databaseの場合、「セキュリティ・ガイド」マニュアルで「付録A Oracle Databaseの安全性の維持」として公開しています。
また、本連載第2回の「なぜ、データベースセキュリティが必要か──企業の対策率『たった20%』の現状」で紹介した「Oracle Databaseセキュリティ・リスク・アセスメント」というサービスでも利用している、Database Security Assessment Tool [DBSAT] という無償のツールを利用することで、現在利用中のOracle Databaseにおいて安全な設定ができているかどうかについて、セルフチェックを行うこともできます。
オラクルが提供している情報以外にも、米国国防情報システム局(DISA:Defense Information Systems Agency)の「セキュリティ技術実装ガイド(STIG:Security Technical Implementation Guide)」があります。
資料は英語ですが、Oracle Databaseに限らず多様なデータベースの各バージョンで、何をすべきかが具体的に説明されています。例えば、「インスタンス名にオラクルのバージョン番号を入れないこと(Oracle instance names must not contain Oracle version numbers.)」というような運用ルールから、「_TRACE_FILES_PUBLICパラメーターが設定されている場合にはFALSEにすること(The Oracle _TRACE_FILES_PUBLIC parameter if present must be set to FALSE.)」といった細かな設定まで、多種多様な項目が掲載されています。STIGには、設定が必要な理由(Vulnerability Discussion)、確認方法(Check Content)、改善方法(Fix Text)がセットで記載されていますので、具体的に何をどのように設定すべきかが分かります。
安全な設定として、まずやっておきたいこととしては、ユーザーパスワードの管理があります。簡単な、想像しやすいパスワードを利用していると、攻撃者に簡単にアカウントを乗っ取られてしまいます。Verizonの調査「2017 Data Breach Investigations Report」でも、「サイバー攻撃による情報漏えいの81%は、脆弱なパスワードが原因」という結果が出ています。
Oracle Databaseでは、「DBA_USERS_WITH_DEFPWD」というビューを用意しています。このビューを検索すると、脆弱な(広く出回っているパスワードリストに載っている)パスワードを利用しているユーザーを一覧できます。
SQL> select u.username, u.account_status 2 from dba_users u, dba_users_with_defpwd d 3 where u.username=d.username; USERNAME ACCOUNT_STATUS -------------------- -------------------------------- SYSTEM OPEN XDB EXPIRED & LOCKED GSMADMIN_INTERNAL EXPIRED & LOCKED DIP EXPIRED & LOCKED ANONYMOUS EXPIRED & LOCKED AUDSYS EXPIRED & LOCKED SYSKM EXPIRED & LOCKED APPQOSSYS EXPIRED & LOCKED ORACLE_OCM EXPIRED & LOCKED OUTLN EXPIRED & LOCKED GSMCATUSER EXPIRED & LOCKED GSMUSER EXPIRED & LOCKED SYSDG EXPIRED & LOCKED SYSBACKUP EXPIRED & LOCKED 14行が選択されました。
また、前述の「Oracle Databaseセキュリティ・リスク・アセスメント」における顧客へのインタビューからも、ユーザー名とパスワードが同じデータベースを作成して利用しているシステムが、いまだに多数存在することが分かっています。Oracle Databaseでは、パスワードに脆弱な値を設定できないようにするためにパスワードプロファイル機能がありますので、ぜひご活用ください。
また、Oracle Databaseで安全な設定のために考慮いただきたい項目としては、初期化パラメーターがあります。
ここでは、特にセキュリティに関連した、注意すべきパラメーターを紹介します。
各初期化パラメーターの詳細は後述しますが、Oracle Databaseのバージョンが上がるごとに新しいセキュリティ機能が追加され、より安全な初期設定に変更されていることが分かります。Oracle Databaseのバージョンアップは機能追加や性能向上だけではなく、セキュリティの向上にも寄与します。
安全な設定は、パスワード管理と初期化パラメーターだけが全てではありませんが、アプリケーションにほぼ影響を与えることなく、より安全な構成管理ができるようになります。ご利用中のデータベースの設定を、ぜひ確認してみてください。
Copyright © ITmedia, Inc. All Rights Reserved.