※ 本記事は2017年4月6日に公開されたものです。
セキュリティ関連の初期化パラメータの説明の2回目です。
- COMPATIBLE
下位互換を保証するためのパラメータです。アップグレード後に何らかの理由でダウングレードをおこなう際に利用する事もありますが、特別な事情がない限りは最新のセキュリティ機能が利用できる利用しているバージョンと同じ値を設定すべきです。この値を変更せずにアップグレードしたからといって、オプティマイザ含め古いバージョンと動作が変わらないことを保証するものではないため、アップグレード前のテストをおこなわなくてよくなるような魔法のパラメータではありません。
- DBFIPS_140
12cR1から追加されたパラメータで、米国標準技術研究所(NIST)の米国連邦情報処理標準(FIPS)の暗号モジュールに関するセキュリティ要件の標準である140-2にあわせてデータベースを構成するためのパラメータです。透過的データ暗号化(TDE:Transparent Data Encryption)、DBMS_CRYPTOパッケージプロシージャ、Oracle Net通信の暗号化利用時に、FIPS 140-2に準拠した暗号化アルゴリズム、ハッシュアルゴリズムしか利用できなくなります。デフォルト値はfalseです。
このパラメータを変更すると、暗号化処理時に利用するライブラリが認定されたものに変わります。利用されるライブラリなど詳細は「セキュリティ・ガイド」マニュアルの付録「E Oracle Database FIPS 140-2の設定」をご参照ください。
なお、このパラメータを変更することにより、以下の影響を受ける可能性がありますのでご注意ください。
- 性能への影響
FIPS 140-2対応のライブラリは非対応のライブラリに比べてロードに時間がかかります。各プロセスが最初に暗号化処理を実施するときに暗号化ライブラリをロードする際にオーバーヘッドがあります。ひとつひとつのオーバーヘッドは無視できるレベルかもしれませんが、コネクションプールを利用しないで専用接続(DEDICATED SERVER)構成の大量の接続処理がある場合には注意が必要です。なお、このオーバーヘッドは最初に暗号化処理を実施するときのみで、一度ライブラリがロードされた後の暗号化処理性能への影響はありません。この内容はMy Oracle Support(MOS)のドキュメントID2191845.1「When Library is loaded after setting DBFIPS_140」として公開されています。
- 対応アルゴリズムの制限
FIPS 140-2に対応ために、Oracle Databaseでマニュアルに利用できると記載されている暗号化アルゴリズム、HASHアルゴリズムのうち、非推奨(弱い)とされているものは利用できなくなります。これは暗号化ライブラリにはそのアルゴリズムがそもそも入っていないためです。たとえば、ハッシュアルゴリズムのうちMD5は利用できなくなり、利用しようとすると以下のようにエラーとなります。
- 性能への影響
SQL> declare 2 vText varchar2(16) := 'hoge'; 3 vHashed raw(256); 4 begin 5 vHashed := dbms_crypto.hash(utl_i18n.string_to_raw(vText, 'al32utf8'), 6 dbms_crypto.hash_md5); 7 dbms_output.put_line(vHashed); 8 end; 9 / declare * 行1でエラーが発生しました。: ORA-28817: PL/SQLファンクションからエラーが戻されました。 ORA-06512: "SYS.DBMS_CRYPTO_FFI", 行131 ORA-06512: "SYS.DBMS_CRYPTO", 行72 ORA-06512: 行5
DBFIPS_140パラメータをtrueに設定すると、既存のシステムやパッケージアプリケーションが動作しなくなるケースもあるためご注意ください。非推奨のアルゴリズムを実際に利用していなくても、内部的に非推奨のアルゴリズムを「使ってもよい」ことになっているだけで動作しなくなることもあります。たとえばオラクルの機能でもAPEX(Application Express)でDBFIPS_140パラメータをtrueに設定できるのは5.0以降であることがMy Oracle Support(MOS)のドキュメントID2097020.1「APEX and FIPS 140」として公開されています。
暗号化に関しての詳細はまた別エントリで今後説明する予定です。
