データベース接続セキュリティ

管理者としての接続

ORACLEにデータベース管理者として接続するためには、特別な権限が必要となる。それらは以下の2つのうちのいずれかを使用することとなる。

OS認証
ユーザが特別なOSのグループに登録されている場合に管理者としての接続を許可するもの。保護の無いリモート接続では使用できない。
パスワードファイルによる認証
パスワードファイルを作成し、そこに管理者用のIDとパスワードを指定することで管理者としての接続を許可する。

なお、データベースに管理者権限で接続している場合、別のユーザ名でログインしていたとしても、ユーザSYSで接続していることになる。

OS認証

OS認証の手順は以下のようになる

  1. 管理者として登録するユーザを適切なOSグループに参加させる。
  2. 初期化パラメータREMOTE_LOGIN_PASSWORDをNONEに設定する
  3. 利用者は該当ユーザとしてOSにログインする
  4. サーバマネージャから、CONNECT / AS (SYSDBA|SYSOPER)として接続する

OS認証を行う場合、ORACLE内部での権限の付与は必要無い。所属するOSグループによって、自動的にOSDBA/OSOPERのロールが付与される。これらのロールには、以下の権限が付与される:

OSOPER
STARTUP・SHUTDOWN・RECOVER・RESTRICTED SESSION・ALTER DATABASE (OPEN|MOUNT|BACKUP|ARCHIVE LOG)権限を持っている。
OSDBA
OSOPERの全ての権限と、ADMINオプション付きの全てのシステム権限(つまりDBAロール)、そしてCREATE DATABASE権限を持っている。また、RECOVERでの不完全回復は、OSDBAでしか行えない。

パスワードファイル認証

パスワード認証の手順は以下のようになる

  1. ORAPWDユーティリティを使用してパスワードファイルを作成する
  2. 初期化パラメータREMOTE_LOGIN_PASSWORDをEXCLUSIVEに設定する
  3. 利用者に対し、SQL文GRANT (SYSDBA|SYSOPER) TO [ユーザ]として管理者権限を付与する。
  4. サーバマネージャから、CONNECT [ユーザ名]/[パスワード]{@接続名} AS (SYSDBA|SYSOPER)として接続する

SYSDBAとして接続すると、元のユーザに関わり無くSYSユーザで接続していることとなり、特別なロールOSDBAが付与される。SYSOPERとして接続すると、元のユーザに関わり無くPUBLICユーザで接続していることとなり、特別なロールOSOPERが付与される。

パスワードファイル管理

ORAPWDの構文は以下の通りである。

ORAPWD FILE=[ファイル名] PASSWORD=[SYSユーザのパスワード] ENTRIES=[登録する管理者数]

パスワードファイルへの管理者の追加は、SQL文GRANT (SYSDBA|SYSOPER) TO [ユーザ]の発行によって自動的に行われる。なお、いったん定義した管理者数は変更できず、設定を超えた場合には削除して再作成することになる。

ビューv$pwfile_usersを参照することで、パスワードファイルに登録されているユーザとその権限を参照することができる。

暗号化パスワード

ORACLEでは、パスワードは16文字の数字と英大文字の組み合わせに変換されて内部に格納される。認証時には、パスワードをまず暗号化した上でその結果をサーバに送信するという処理が行われる。

データのインポート時には、暗号化されたパスワードをそのままDBA_USERSテーブルに格納することになる。これを利用し、絶対に生成されることのない暗号(文字数が16字未満、小文字を使用)などを直接指定(IDENTIFIED BY VALUES句を利用)することで、DB認証のログオンが不可能なユーザを作成することができる。