安全なデータベース運用、設定は具体的にどうすればいいのか(セキュリティ関連の初期化パラメーター一覧付き):今さら? 今こそ! データベースセキュリティ (9)(3/4 ページ)
本連載では、データベースセキュリティの「考え方」と「必要な対策」をおさらいし、Oracle Databaseを軸にした「具体的な実装方法」や「Tips」を紹介していきます。今回は安全なデータベース運用のための設定について紹介します。後半部分では、Oracle Databaseのセキュリティ関連初期化パラメーター一覧を掲載しました。
O7_DICTIONARY_ACCESSIBILITY
古いバージョンのOracle Database(Oracle 7)では、SELECT ANY TABLEシステム権限など、ANYキーワードを持つ強力なシステム権限を持っている場合、SYSスキーマ内の内部表にもアクセスすることができました。つまり、例えばパスワードハッシュを含むUSER$表にもアクセス可能でした。
その後、セキュリティ強化のためANYシステム権限でSYSスキーマのオブジェクトへのアクセスは禁止されましたが、下位互換のために、このパラメーターをTRUEに設定した場合、セキュリティレベルを弱めてANYシステム権限でSYSスキーマのオブジェクトにアクセスできるようになります。
デフォルト値はFALSEで、SYSスキーマのオブジェクトにはアクセスできません。特別な要件がない限りにはTRUEに変更しないでください。
OS_AUTHENT_PREFIX
Oracle Databaseでは、ユーザー認証をOSに移譲する、外部認証機能があります。この機能を利用すると、OSで認証されたユーザーはデータベースで改めて認証することなくデータベースに接続できますが、その際にマッピングされるデータベースユーザー名は、このOS_AUTHENT_PREFIXの値にOSのユーザー名が続いたものになります。例えば、OSユーザー名が「puku」で、OS_AUTHENT_PREFIXがデフォルトの「OPS$」の場合、事前にデータベースに「OPS$PUKU」という、外部認証されるデータベースユーザーを作成しておくことで、OSにpukuでログインすれば再度認証することなくデータベースにOPS$PUKUユーザーとして接続することができます。
OS_ROLES
このパラメーターは、OS認証機能と併せて利用し、認証だけではなく権限(ロール)の付与もOSに移譲できます。このパラメーターをTRUEに設定すると、データベースユーザーに対するロールの割り当てを、OSで管理することができるようになります。
PDB_LOCKDOWN
12cR2から追加された初期化パラメーターです。PDBごとに、ユーザーが実行できる操作を制限するロックダウンプロファイルを指定することができます。
ロックダウンプロファイルには、AQやパーティションなどのオプション利用の制限、UTL_FILEやUTL_SMTPパッケージなどを利用したネットワークやOSへのアクセスの制限、ALTER DATABASE、ALTER SYSTEM、ALTER SESSIONなどのSQL実行の制限を設定できます。
これらの制限を行うことで、PDBがOSやネットワークを介して他のPDBのデータにアクセスできないようにし、PDBごとの独立性を保証できます。
PDB_OS_CREDENTIAL
12cR2から追加された初期化パラメーターです。通常、PDBからのOS操作では、OSのoracleインストール(実行)ユーザー権限で処理が行われます。しかし、一般的にこのユーザーは強力な権限を持っており、このOSユーザーの権限を利用することで、PDBからOS経由で別のPDBのデータにアクセスされてしまう危険性があります。PDBごとにPDB_OS_CREDENTIALパラメーターにOSユーザーを指定することで、そのPDBからOS操作を行う際に、指定したOSユーザー権限を利用でき、結果としてPDBごとの独立性を保証することができます。
REMOTE_LOGIN_PASSWORDFILE
管理者としての接続(SYSDBAなど)時にパスワードファイルを利用するかどうかを指定します。パスワードファイルがない場合や、パラメーターの値をNONEに設定した場合には、データベースを起動するために管理者として接続する際にOS認証を利用する必要があります。パスワードを利用して接続しようとしても、下記のようにエラーとなります。
[puku@catvari ~]$ sqlplus sys/oracle as sysdba SQL*Plus: Release 12.2.0.1.0 Production on 水 5月 17 10:31:21 2017 Copyright (c) 1982, 2016, Oracle. All rights reserved. ERROR: ORA-01017: ユーザー名/パスワードが無効です。ログオンは拒否されました。
パスワードを利用して認証する場合、データベースサーバのOSにdbaグループのユーザーとしてログインすることなく管理ツールなどを利用して管理者として接続し、データベースを管理することができ、運用性が向上します。Enterprise Managerなどの管理ツールを利用する場合など、パスワードファイルの利用が前提条件になっているものもあります。逆にパスワードファイルを利用しないことで、「強力な管理者として接続するためにはOSのdbaグループのユーザーとしてまずOSにログインしなければならない」という接続制限ができるようになります。
REMOTE_OS_AUTHENT
11gR1から非推奨で、下位互換のために残されているパラメーターです。デフォルトはFALSEですが、TRUEに設定されている場合、リモートホストのOS認証を信頼し、OS認証でデータベースに接続できるようになります。例えばリモートホストでOracleユーザーとしてログインしている場合、ローカルホストのOracleユーザーと同一と見なされ、あらためて認証されることなく管理者として接続できてしまう可能性があります。特別な必要性がない限りは値を設定しない(FALSEを設定する)ことを推奨します。
REMOTE_ROLES
REMOTE_OS_AUTHENTと併せて利用するパラメーターで、リモートホストからのOS認証だけではなく、権限(ロール)の付与もリモートホストに移譲する機能です。OS_ROLESパラメーターのリモートホスト版になります。成りすましの危険性があるため、このパラメータのデフォルト値もFALSEです。特別な必要性がない限りは値を設定しない(FALSEを設定する)ことを推奨します。
SEC_CASE_SENSITIVE_LOGON
11gR1から追加されたパラメーターですが、12cR1から非推奨で、下位互換のために残されています。
Oracle Databaseでは、11gR1からデータベースユーザーのパスワードで大文字、小文字を区別するようになりました。デフォルト値はTRUEで、デフォルトの状態では大文字と小文字を区別します。ただし、パスワードの大文字、小文字を区別しない古いプログラムやツールにも対応できるように、このパラメーターをFALSEに変更するとパスワードの大文字、小文字を区別しない昔の動作に戻すことができます。近年のプログラムやツールは、パスワードの大文字、小文字を区別できるものがほとんどですので、特別な必要性がない限りは設定しない(TRUEを設定する)ことを推奨します。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- 攻撃者が狙うのはデータベース、それなのに「データベース保護の対策が見落とされがち」ではありませんか?
企業活動において重要なのは何か。セキュリティ対策において「データベースの保護が見落とされがち」と、オラクルは警鐘を鳴らしている。データベースセキュリティの“考え方”をキーパーソンに確認する。 - 実録・4大データベースへの直接攻撃
- オラクルの考える「データベースセキュリティ」とは
日本オラクルは2016年2月10日、Oracle Databaseユーザー向けに、データベースや周辺システムに関するセキュリティ診断を無償で行う「Oracle Database セキュリティ・リスク・アセスメント」サービスの提供を開始すると発表した。 - データベースセキュリティの基本的な考え方
- 「データベースセキュリティ」の視点から見る「ユーザー管理」「監査証跡(ログ)管理」のポイント
システムの開発・運用に携わっているけれど、セキュリティに少し不安がある。そんなシステム担当者の方は多いのではないでしょうか? 本連載「システムインテグレーションとセキュリティ」では、“SI視点”に立って、システム担当者が考慮すべきセキュリティ上のポイントについて、身近な例を取り上げながら分かりやすく解説します。最初のテーマは、「データベースセキュリティ」です。