検索
連載

安全なデータベース運用、設定は具体的にどうすればいいのか(セキュリティ関連の初期化パラメーター一覧付き)今さら? 今こそ! データベースセキュリティ (9)(3/4 ページ)

本連載では、データベースセキュリティの「考え方」と「必要な対策」をおさらいし、Oracle Databaseを軸にした「具体的な実装方法」や「Tips」を紹介していきます。今回は安全なデータベース運用のための設定について紹介します。後半部分では、Oracle Databaseのセキュリティ関連初期化パラメーター一覧を掲載しました。

PC用表示 関連情報
Share
Tweet
LINE
Hatena

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.

ページトップに戻る