日本オラクル株式会社
オラクル・ホワイト・ペーパー
FISC 安全対策基準
「金融機関等コンピュータシステムの安全対策基準・解説書」
第 6 版追補部分に関する
Oracle Database 10g セキュリティ機能
の対応状況について
~
金融庁告示
「金融分野における個人情報保護に関するガイドライン」
および「実務指針」を受けて
~
作成日:
2005 年 7 月 26 日
最終更新日: 2005 年 7 月 31 日
バージョン: 1.0
はじめに
「個人情報の保護に関する基本方針」が2004年4月に閣議決定されたの受けて、2004年12月に金融庁より「金 融分野における個人情報保護に関するガイドライン(* 以下 ガイドラインと記載)」および「実務指針」が告 示されました。これに合わせて財団法人金融情報システムセンター(* 以下 FISCと記載)からも「金融機関 等コンピュータシステムの安全対策基準・解説書(* 以下 安全対策基準と記載)」が、「実務指針」で求められ る「技術的安全管理措置内容」に沿う形で改訂されております。 本ドキュメントは、「FISC 安全対策基準の改定 第6版追補(* 以下 FISC第6版追補)」に従ったセキュアなシ ステムを構築する必要性のある方のために、FISC第6版追補の技術の項とOracle Database 10gの機能の対応 について記載しております。各種参照先
・財団法人金融情報システムセンター(FISC) http://www.fisc.or.jp ・金融庁個人情報保護実務指針に関連するFISC安全対策基準の改訂について http://www.fisc.or.jp/info/info/050307-1.htm ・オラクル製品マニュアル http://otn.oracle.co.jp/document/index.html * オラクル製品マニュアルは、無償でダウンロードして利用することができますが、ダウンロードのさい にはユーザ登録 (無償)が必要です。記載内容
本ドキュメントはFISC 安全対策基準解説書の各基準に対して、対応するOracle Database 10g (今回記載して いるOracle Database 10g の対応するエディションは、Enterprise Edition です。) の機能をマッピングするこ とを目的としたものです。安全対策基準解説書は設備基準138、運用基準110、技術基準53に分類されて記 載されておりますが、本ドキュメントではFISC 安全対策基準の改定第6版追補で変更があった項目につい てのみ記載しております。また、設備基準、運用基準については機能とのマッピングという趣旨にそぐわ ないため触れておりません。そのため本ドキュメントでは、技術基準のみを対象としております。なお、 今回記載している基準は全部で9点になっております。 なお、1つの基準は実際には複数の項目からなっており、今回のFISC 安全対策基準の改定もこの個別の項 目を対象として改定が行われています。しかし、本ドキュメントでは各基準に含まれる主要な項目の全て を対象に記載してあります。
アジェンダ
1. Oracle Database 10g のFISC第6版追補 技術基準への対応 1.1. 技20 システム運用状況の監視機能を設けること 1.2. 技28 蓄積データの漏洩防止策を講ずること 1.3. 技29 伝送データの漏洩防止策を講ずること 1.4. 技35 本人確認機能を設けること 1.5 技35-1(新規)生体認証の特性を考慮し、必要な安全対策を検討すること 1.6 技36 IDの不正使用防止機能を設けること 1.7. 技37 アクセス履歴を管理すること 1.8. 技42-1 電子メール送受信、ホームページ閲覧等の不正使用防止機能を設けること 1.9 技48 不正アクセスの発生に備えて対応策、復旧策を講じておくこと 2. 実務指針とFISC第6版追補の各基準の対応 (参考) 2.1. 実務指針4-1 個人データの利用者の識別及び認証 2.2. 実務指針4-2 個人データの管理区分の設定及びアクセス制御 2.3. 実務指針4-3 個人データへのアクセス権限の管理 2.4. 実務指針4-4 個人データの漏えい・き損等防止策 2.5. 実務指針4-5 個人データへのアクセスの記録及び分析 2.6. 実務指針4-6 個人データを取扱う情報システムの稼動状況の記録及び分析 2.7. 実務指針4-7 個人データを取扱う情報システムの監視及び監査
1. Oracle Database 10g のFISC第6版追補 技術基準への対応
1.1. 技20 システム運用状況の監視機能を設けること
FISC改定ポイント (項番1) ・改定前 コンピュータシステムの運用状況は、システムの重要性に応じた適切な監視がなされる必要がある。 ・改定後 コンピュータシステムの運用状況は、システムの重要性に応じた適切な監視がなされる必要がある。 なお、個人データを取り扱うシステムにおいては、この措置は必要である。 個人データを取り扱うシステムにおいて、コンピュータシステムの運用が適切に監視される必要があ ることが明記されました。具体的な措置内容として、以下の4つが上げられています。 ・一定時間ごとに装置へのアクセスを行い状態把握ソフトウェアによる監視 ・コンソールからのステータスディスプレイ機能による表示 ・遠隔監視盤等によるリモート監視 ・リアルタイム性を有した保守診断専用の独立したサービスプロセッサによる監視 対応するOracle Database 10gの機能 オラクル社はサービスプロセッサに相当の製品を提供しておりませんが、Oracle製品とハードウェア、 OSを統合管理するためのソフトウェアとしてOracle Enterprise Manager 10g (以下 OEMと記載SE/EE *一部モジュールはEEの有償オプション)を提供しています。OEMは、以下の機能があります。 ・一定時間ごとに装置へのアクセスを行い状態把握ソフトウェアによる監視 OEMはSNMPに対応したagentを使用し、一定時間ごとにDBの状況を監視コンソールに送信するこ とができます。 ・コンソールからのステータスディスプレイ機能による表示 agentからの監視報告を監視コンソールであるWebブラウザに表示させることが可能です。 ・遠隔監視盤等によるリモート監視 OEMはクライアントサーバ構成であり、監視情報をリモートコンソールに送信可能です。 ・リアルタイム性を有した保守診断専用の独立したサービスプロセッサによる監視 オラクル社はサービスプロセッサに相当する製品をリリースしておりません。 機能解説 OEMはOracle DBと同時にインストールされます。そのため、ブラウザさえあれば、データベースの主 要操作をすぐに使用可能です。なお、今回提示された措置内容を実施する範囲では、追加の有償オプ ションは必要ありません。
1.2. 技28 蓄積データの漏洩防止策を講ずること
FISC改定ポイント(項番1、2、4) ・改定前 (項番1) ファイルの不正コピーや盗難の際にも、データの内容が分からないようにするため、重要なデータ については暗号化することが望ましい。特に電子的取引において蓄積されるデータについては暗号 化することが必要である。 ・改定後 ファイルの不正コピーや盗難の際にも、データの内容が分からないようにするため、重要なデータ については暗号化することが望ましい。特に個人データを蓄積する場合には、暗号化・パスワード 設定等ファイルの不正コピーや盗難の際にもデータの内容が分からないようにするための対策を講 ずることが必要である。また、電子的取引において蓄積されるデータについても暗号化・パスワー ド設定等の対策を講ずることが必要である。 特に個人データを蓄積するシステムでは、ファイルの不正コピーや盗難の際にもデータの内容が分か らないようにするための対策を講ずることが必要であることが追加されました。 ・改定前 (項番2) 暗号の使用にあたっては、信頼のおける適切な暗号技術を選択することが必要である。 ・改定後 暗号、パスワードの使用にあたっては、CPU負荷の増大、業務処理遅延等の影響にも留意して、 信頼のおける適切な技術を選択することが必要である。 暗号、パスワードの使用にあたっては、CPU負荷の増大、業務処理遅延等の影響にも留意して、信頼 のおける適切な技術を選択することが必要であることが追加されました。 ・改定前 (項番4) 渉外端末の盗難・紛失時に備えた対策として、渉外端末内に重要なデータを蓄積する場合には、暗 号化することが望ましい。 ・改定後 渉外端末の盗難・紛失時に備えた対策として、渉外端末内に重要なデータを蓄積する場合には、暗 号化することが望ましい。なお、個人データを蓄積する場合には、暗号化・パスワード設定等の対 策を講じる必要がある。 個人データを蓄積する場合には、暗号化・パスワード設定等の対策を講じる必要があることが追加さ れました。対応するOracle Database 10gの機能 項番1
Oracle Database 10gは格納データを暗号化する機能を提供 (SE/EE)しています。そのため、バックア ップテープに格納されたデータが盗難された場合でも、データの機密を守ることができます。なお、 暗号鍵をDB以外に格納することで、DB管理者からもデータの内容を秘匿することが可能です。 項番2 暗号化の際には、暗号化対象のデータ範囲を選択すること (SE/EE)が可能です。そのため必要最小 限の範囲に暗号化を施すことでハードウェアリソースへの影響を最小限に調整することができます。 項番4 オラクル社は、渉外端末等で使用される携帯情報端末 (PDA)やノートパソコンなどに最適化された 軽量版のデータベース製品として、Oracle Database Lite 10g (別製品)を提供しております。このOracle Database Liteにもデータの暗号化機能と通信の暗号化機能が搭載されています。
機能解説 項番1、2、4
Oracle Database 10g には、格納データに対して対象範囲を選択した上で、暗号化および復号化を行う ことを可能にする DBMS_CRYPTO および、Obfuscation Toolkit (*従来からの機能であり、今後は DBMS_CRYPTO に統合される予定です。) という PL/SQL パッケージを提供しております。
DBMS_CRYPTO パッケージは、RAW およびイメージやサウンドなどのラージ・オブジェクト(LOB) を含む Oracle の一般的なデータ型の暗号化および復号化に使用できます。このパッケージは、以下の 業界標準暗号化およびハッシング・アルゴリズムをサポートしています。
・ DES、Triple-DES、RC4
・ Advanced Encryption Standard(AES) ・ MD5、MD4 およびSHA-1 暗号化ハッシュ
・ MD5 およびSHA-1 メッセージ認証コード(MAC) 参照マニュアル 「Oracle Database セキュリティ・ガイド」 16章
Oracle Database 10gは暗号鍵の格納先としてデータベース内、OS上のファイル、ユーザおよびユーザア プリケーション (この格納方法を利用すると、DB管理者からもデータの内容を秘匿することが可能で す。) といった複数の格納先を提供しています。なお、鍵をデータベースマシン以外に格納する場合 は、通信経路についてもOracle Advanced Securityによって暗号化する必要があります。
また、以下に、Obfuscation Toolkitを使用した例を記載します。この例では、クレジットカード番号 を格納する表のデータを暗号化しています。
1. 例として使用するクレジットカード番号の表を作成します create table creditcard (cardnumber varchar2(40));
2. 文字列の暗号化・複合化を行うための関数を準備します
2.1. 暗号化の関数。引数で渡した文字列を key_str で暗号化し、返します。 create or replace function string_encrypt (input_val varchar2)
return varchar2 is
key_str varchar2(16) := 'ABCDEFGHIJKLMNOP' ; *暗号化するためのキー return_val varchar2(40) := NULL;
begin
dbms_obfuscation_toolkit.DESEncrypt(input_string =>input_val, key_string => key_str, encrypted_string => return_val );
return return_val ; end;
/
2.2. 復号化の関数。引数で渡された文字列を key_str で復号化し、返します。 create or replace function string_decrypt (input_val varchar2)
return varchar2 is
key_str varchar2(16) := 'ABCDEFGHIJKLMNOP' ; *復号化するためのキー return_val varchar2(40) := NULL;
begin
dbms_obfuscation_toolkit.DESDecrypt(input_string =>input_val, key_string => key_str, decrypted_string => return_val ); return return_val ; end; / 3. クレジットカード番号の表にトリガーを作成します 表に INSERT されるデータを string_enctypr を使用して暗号化します。 CREATE OR REPLACE TRIGGER TR_ENCRYPT_CREDITCARD BEFORE INSERT OR UPDATE of cardnumber
ON CREDITCARD
REFERENCING OLD AS OLD NEW AS NEW FOR EACH ROW
:NEW.CARDNUMBER:=string_encrypt(:NEW.CARDNUMBER); END; / 4. データのインサートとデータの検索 *復号化を未実施 insert 文で creditcard 表にクレジットカード番号を挿入します。挿入されたデータはトリガーにより 自動的に暗号化されます。復号化の関数を使用していないため、検索結果は意味の無い文字列に見 えます。
SQL> insert into creditcard values ('1111999922228888'); 1 行が作成されました。
SQL> select * from creditcard; CARDNUMBER --- ィ y ヘ}e=搜「餌」 賢 pM メ$酌「ヌハ群。? ケ mU *暗号化されたため、文字化けしているように見えます。 5. データの検索 *復号化を実施 string_decrypt 関数を使用してデータを復号化して検索します。クレジットカード番号が得られま す。
SQL> select string_decrypt(cardnumber) from creditcard; STRING_DECRYPT(CARDNUMBER)
---
1111999922228888
参照マニュアル 「PL/SQL パッケージ・プロシージャおよびタイプ・リファレンス」 22、55章
項番4
以下にOracle Database Lite が提供するWindows 32 プラットフォームおよびWindows CE プラットフ ォーム用に用意された暗号化、復号化のためのユーティリティを記載します。
・ENCRYPDB
このユーティリティを使用すると、パスワードによるOracle Database Lite の暗号化や、データベー ス・パスワードの変更が可能です。パスワードにより、権限のないデータベースアクセスを防ぎ、 データベースを暗号化して、データベース・ファイルに格納されたデータを解読できないようにし ます。ENCRYPDB では、CAST5 暗号化方式を採用しています。これは、DES に準拠した128 ビ ットの暗号化方式です。
・DECRYPDB
このツールを使用すると、暗号化されたOracle Database Lite を復号化できます。 参照マニュアル 「Oracle Database Lite ツールおよびユーティリティ・ガイド 10g」 3 章
1.3. 技29 伝送データの漏洩防止策を講ずること
改定ポイント (項番1、2) 改定前 (項番1) データ伝送時に盗聴された場合にもデータの内容がわからないようにするため、重要なデータにつ いては、暗号化することが望ましい。 オープンネットワークや無線を利用してデータ伝送を行う場合は、通信事業者と協力するなど暗号 化対策等を図り、十分な漏洩防止対策を講じておくことが必要である。開発時のドキュメント、ソ ースコード等もその重要性に配慮した伝送方式を考えること。 改定後 データ伝送時に盗聴された場合にもデータの内容が分からないようにするため、重要なデータにつ いては、暗号化することが望ましい。特に個人データを伝送する場合には、暗号化・パスワード設 定等データ伝送時に盗聴された場合にもデータの内容がわからないようにするための対策を講ずる ことが必要である。また、個人データを伝送する場合には、上記以外の対策として、以下の条件を 満たしセキュアな環境とすることで、光ファイバーの専用線を用いることも有効である。 ①建物内に不正な機器が接続されていないことの確認 ②切断検知時の報告の徴求およびその分析 オープンネットワークや無線を利用して重要なデータを伝送する場合は、通信事業者と協力するな ど暗号化対策を図り、十分な漏洩防止対策を講じておくことが必要である。開発時のドキュメント、 ソースコード等もその重要性に配慮した伝送方式を考えること。 なお、構内LANにおいては、ネットワーク構成機器への未承認機器の論理的・物理的な接続を不 可能とする仕組みも有効である。 個人データを伝送する場合には、データの盗聴に対策を講ずることが必要であることが追加されまし た。また、未承認機器をネットワークに接続させない仕組みが有効であることが追加されました。 改定前 (項番2) 暗号の使用にあたっては、信頼のおける適切な暗号技術を選択することが必要である。なお、暗号 技術は、情報処理技術の発展とともにその強度が変化することに留意するとともに、暗号の使用に あたっては、複数の暗号方式を適切に組み合わせて使用することが望ましい。 改定後 暗号、パスワードの使用にあたっては、信頼のおける適切な技術を選択することが必要である。な お、適用する技術は、情報処理技術の発展とともにその強度が変化することに留意するとともに、 その使用にあたっては、複数の方式を適切に組み合わせて使用することが望ましい。 字句の訂正が主であり、実質的な事項における変更はありません。対応するOracle Database 10gの機能 項番1
オラクル社は、Oracleの通信プロトコルであるOracle Netの通信を暗号化して、通信経路上での情報 漏洩を防ぐための機能として、Oracle Advanced Security (EE 有償オプション)を提供しています。 また、構内LANにおける、構成機器への未承認機器の接続を不可能とする仕組みについて、Oracle の通信プロトコルである Oracle Net (SE/EE)は特定のクライアントからの接続を許可または拒否する 機能を提供しています。
機能解説
Oracle Advanced Security について
Oracle Advanced Security は、Oracle Net Services の通信の機密保護を実現します。使用される暗号シ ステムは、接続の確立時に、sqlnet.ora で指定された暗号システムから、サーバーが選択します。設 定は、ネットワーク上のクライアントとサーバーの両方で、Oracle Net Services の設定ファイルであ
るsqlnet.ora で設定します。また、GUIツールであるOracle Net Managerも利用して設定することも
可能です。Oracle Advanced Security では、以下の暗号システムを利用できます。 参照マニュアル 「Oracle Advanced Security 管理者ガイド」 4章
・Advanced Encryption Standard(AES)、 ・DES、3DES
・RC4 対称型暗号システム ・MD5
・Secure Hash Algorithm(SHA-1) ・SSL
また、JDBC Thin クライアントに対してオラクル社は、Oracle Advanced Security の機能をJava で実装したOracle JDBC Thin ドライバ (SE/EE)を提供しています。
構内LANにおける接続許可について
接続許可の設定は Oracle Net の設定ファイルである sqlnet.ora で行います。設定のためのパラメタは 以下になります。
・tcp.validnode_checking 接続許可機能を ON、OFF します。 ・tcp.invited_nodes 許可するノードを指定します。 ・tcp.excluded_nodes 許可しないノードを指定します。
1.4. 技35 本人確認機能を設けること
改定ポイント(語句変更) 変更内容は文体の訂正 (複合化を複合に変更)であり、実質的な変更は行われていませんが、全体の趣 旨を以下に抜粋し、対応するOracleの機能について記載します。 ・コンピュータシステムの不正使用およびネットワーク拡大による種々の端末を使用した不特定多 数の者からの不正アクセスを防止するため、正当な権限を保有した本人であるか、もしくは正しい 端末に接続されているかなど、接続相手先の正当性を確認することが重要である。 ・インターネットを介した電子的な取引や支払指図の受付け等を行う場合は特に、成りすまし等を防 止するため、通信相手が正当な権限を持った者であることを確認できる仕組みが必要である。 対応するOracle Database 10gの機能 Oracle では、ユーザによるデータベース・セッションを許可するために、複数の方法でユーザを認証 できます。代表的な認証方法にはデータベース認証、OS認証、ネットワーク認証があります。 参照マニュアル 「Oracle Database セキュリティ・ガイド」 4章 ・データベース認証 (SE/EE) データベース認証を選択した場合、そのユーザのアカウントの管理は、認証も含めてすべてOracle が行います。パスワードは暗号形式で格納されます。 ・OS認証 (SE/EE ) OS認証を選択した場合、ユーザのアカウントはOracle で管理されますが、パスワード管理とユー ザ認証はOSによって管理されます。 ・ネットワーク認証 (EE オプション) ネットワーク認証を利用した場合には Kerberos、RADIUS などの標準化された方式を使って外部 のより強度の高い認証システムに対し認証を依託することができます。外部認証を選択した場合、 ユーザのアカウントは Oracle で管理されますが、パスワード管理とユーザ認証は外部サービスに よって実行されます。このときの認証アダプタには Oracle Advanced Security を使用します。機能解説
・データベース認証
データベース認証を使用するユーザは、CREATE USER文で作成します。 参照マニュアル 「Oracle Database SQLリファレンス」 17章
・OS/ネットワーク認証
OS認証や外部認証を使用するユーザはCREATE USER文にIDENTIFIED EXTERNALLYを指定して 作成します。また外部認証を使用する場合は、上記に加えてSQLNET.AUTHENTICATION_SERVICES パラメタをsqlnet.ora ファイル上に設定する必要があります。
1.5. 技35-1(新規)生体認証の特性を考慮し、必要な安全対策を検討すること
改定ポイント (新規追加項目) 新規に生体認証に関する項目が追加されました。生体認証の導入と運用にあたっては、技術の最新動 向等に留意し、その特性を十分考慮し、必要な安全対策を検討することについて記載されております。 また、実施の際に考慮すべき具体例として以下が上げられております。 ・生体認証機構における認証精度 ・代替措置手続き ・否認防止 ・不正認証等防止 対応するOracle Database 10gの機能 オラクル社は生体認証装置に相当する製品をリリースしておりませんが、Oracle Database 10gは認証を、 別途サードパーティの生体認証機構と連携させるための外部認証アダプタをOracle Advanced Security により提供しております。機能解説
1.5. 技36 IDの不正使用防止機能を設けること
改定ポイント (項番1) 改定前 システムやデータへのアクセス権を不正使用される危険性を考慮し、不正使用を防止するための機 能を組み込むことが必要である。 改定後 システムやデータへのアクセス権を不正使用される危険性を考慮し、不正使用を防止するための機 能を組み込むことが必要である。また、暗証番号等についても、同様に不正使用を防止する機能を 整備することが必要である。 暗証番号等の不正使用を防止する機能を整備する必要があることが追加されました。また、具体的な 方法として、以下の5つが上げられています。 ・ログオン中のタイムアウト ・ユーザにログオン履歴を提供する ・パスワード入力失敗の回数制限 ・使用されていないIDの強制削除 ・パスワードを他人に知られないための対策を講ずる 対応するOracle Database 10gの機能 Oracle Database 10gはユーザ・プロファイル機能を提供しております。この機能を利用することで、セ キュリティ管理者はユーザのパスワード管理ポリシーを設定することが可能です。以下の設定が可能 です。 ・ログオン中のタイムアウト ・ユーザにログオン履歴を提供する ・パスワード入力失敗の回数制限 (アカウントのロック機能 ) ・使用されていないIDの強制削除Oracle Database 10g は使用されていないIDを自動的に削除する機能はありませんが、削除ではな く使用不可にする機能があります。一定期間使用されていないIDを使用不可にするためには、後 述するパスワードの存在期間を設定する機能、猶予期間を設定する機能および、アカウントのロ ック機能を組み合わせて使用します。例えば、パスワードの存在期間を2週間、猶予期間設定を2 週間に設定したとすると、1ヶ月アクセスが無ければ、パスワードの猶予期間も過ぎるため、アカ ウントがロックされ、管理者が明示的にアカウントのロックを解除するまで使用不可になります。 ・パスワードを他人に知られないための対策を講ずる 参照マニュアル 「Oracle Database セキュリティ・ガイド」 4章
機能解説
・ログオン中のタイムアウト
Oracle Database 10g はログオン中のセッションに対して、Oracle への各コール間の時間がアイドル制 限時間に達すると自動的にセッションを終了させる機能を提供しています。ログオン中のタイムア ウト機能を使用するためには、ユーザリソースの制限機能と、ユーザ・プロファイル機能の両者を 使用する必要があります。ユーザリソースの制限機能をオンにするためには初期化パラメータ RESOURCE_LIMIT を TRUE に設定します。その後、ユーザ・プロファイル機能を以下の手順で使 用します。以下の例では、タイムアウト時間を 10 分に設定しています。
CREATE PROFILE PROF1 LIMIT IDLE_TIME 10; ALTER USER SCOTT PROFILE PROF1;
・ユーザにログオン履歴を提供する Oracle DB の監査機能をオンにすると、ユーザのアクセス履歴を含む、監査履歴を取得することがで きます。この監査履歴に対して、ログオントリガーを利用した PL/SQL プログラムを作成すること で、ユーザログオン時にユーザのこれまでのアクセス履歴をユーザに対して提供できます。なお、 ログオントリガーは履歴管理以外にも様々な使い方が可能です。例えば以下のように接続を月曜日 から金曜日までの 8AM∼6PM のみに制限することができます。
CREATE OR REPLACE TRIGGER LOGON_TIME AFTER LOGON ON DATABASE BEGIN
if (to_char(sysdate,'D') not between '2' and '6')
or (to_char(sysdate, 'HH24MI') not between '0800' and '1800') then
RAISE_APPLICATION_ERROR(-20001, 'You are not allowed to log into database now.'); end if; END; ・パスワード入力失敗の回数制限 (アカウントのロック機能 ) アカウントのロック機能により、指定した連続試行回数の範囲内でログインできない場合にユーザ のアカウントを自動的にロックすることが可能です。また、アカウントのロックまでにユーザが試 行できるログインの失敗回数、ロックの自動解除時間を構成することもできます。以下の例では、 パスワードを入力できる回数は4回、そのさいロックされる時間を30分に設定しています。
CREATE PROFILE prof LIMIT FAILED_LOGIN_ATTEMPTS 4 PASSWORD_LOCK_TIME 30; ALTER USER ashwini PROFILE prof;
・パスワードの存在期間設定
データベース管理者は、パスワードの存続期間を指定できます。この期間をすぎるとパスワードは 期限切れになり、アカウントへのログインが再度許可されるには、パスワードを変更する必要があ ります。存在期間の設定は、CREATE PROFILE 文でPASSWORD_LIFE_TIMEを使用して、以下のよ うに行います。
CREATE PROFILE prof LIMIT PASSWORD_LIFE_TIME 90; ALTER USER ashwini PROFILE prof;
・パスワードの猶予期間設定
パスワードの存続期間が切れたアカウントに対して猶予期間を設定できます。この期間中は、デー タベース・アカウントへのログインを試行するたびに、パスワードの変更を求める警告メッセージ が発行されます。 この期間内にパスワードを変更しないと、アカウントはロックされ使用できなく なります。猶予期間の設定には、CREATE PROFILE 文でPASSWORD_GRACE_TIMEを使用して以 下のように行います。
CREATE PROFILE prof LIMIT PASSWORD_GRACE_TIME 3; ALTER USER ashwini PROFILE prof;
・パスワードの複雑度の検証機能 Oracle はパスワードの複雑度の検証機能を有しており、パスワードの設定時にパスワードの複雑 度をチェックし、安易なパスワードを許可しないように設定することが可能です。また、パスワ ード履歴管理機能により、新しく指定される各パスワードを調べて、指定された期間内に同じパ スワードが再利用されないようにすることができます。 チェックの複雑度は PL/SQL による開発を行うことで自由に設定できます。また、デフォルトの 状態でもサンプルの PL/SQL スクリプト UTLPWDMG.SQL (*このスクリプトの格納場所は、 $ORACLE_HOME/rdbms/admin/utlpwdmg.sql になります。)が付属しており、以下のチェックにつ いては開発を行うこと無しに可能となっています。 ・長さが4 文字以上であること。 ・ユーザ名とは異なること。 ・少なくとも1 文字のアルファベット、1文字の数字および1文字の句読点が含まれていること。 ・welcome、account、database、user などの簡単なまたは明白な単語でないこと。 ・以前のパスワードとの違いが3 文字以上あること。 ・パスワード履歴管理機能
CREATE PROFILE 文でPASSWORD_VERIFY_FUNCTIONを指定して設定します。 参照マニュアル 「Oracle Database SQLリファレンス」 17章
1.6. 技37 アクセス履歴を管理すること
技37 アクセス履歴を管理すること
改定ポイント (項番2) 改定前 監査証跡に基づいて、許可されていないアクセスを分析し、報告する機能を有することが望ましい。 改定後 監査証跡に基づいて、許可されていないアクセスの分析、報告を可能とすることが望ましい。なお、 個人データを扱うシステムにおいては、この措置は必要である。 個人データを扱うシステムにおいて、監査証跡に基づいて、許可されていないアクセスの分析、報告 を可能とすることこの措置が必要であることが追加されました。 対応すべきテーマとして以下が上げ られています。 ・監査証跡の取得 ・監査証跡の解析と通知 ・監査証跡の安全な保存 ・利用者自身からの利用状況確認機能 対応するOracle Database 10gの機能 ・監査証跡の取得Oracle Database 10g には豊富な監査機能(SE/EE *ファイングレイン監査のみEE)が用意されており、 システム管理者が、保護の強化、不審なアクティビティの早期検出を実現するために必要な監査証 跡を保存することができます。監査の対象には、実行されたSQL 文のタイプ、SQL文そのもの、ユ ーザ名、時間などの様々なイベント含めることができます。Oracle Databaseが提供する監査機能には 以下の4種類があります。 参照マニュアル 「Oracle Database セキュリティ・ガイド」 8、11章 ・必須監査 必須監査は管理者権限によるインスタンスへの接続や、データベースの起動/停止などの基本的な 履歴をシステムが強制的に記録するものでオフにすることはできません。監査証跡はOS上のファ イルとして書き込まれます。 ・DBA監査 DBA権限をもった管理者は、データベース内であらゆる操作(管理者自身で監査証跡の削除が可 能)が可能なため、データベース内に監査証跡を残しても意味がありません。そのため、データベ ース管理者がアクセスできないOS上の領域に監査証跡を保存する必要があります。DBA監査機能 により、DBA権限を使っておこなった操作の監査証跡を、データベース内に保管せずOS上のログ として出力することができます。
・標準監査 標準監査には、特定のSQL文を発行したときに監査する「文監査」、特定の権限を使ったときに監 査をおこなう「権限監査」、そして特定のオブジェクト(表やビュー)に対してSQL文を発行した ときに監査する「オブジェクト監査」の3つがあります。特に、オブジェクト監査ではSQL文全体 をテキストとして監査証跡に残すことができます。 ・ファイングレイン監査 (EE) ファイングレイン監査は標準監査よりも細かな監査条件を設定ができます。つまり、「この列の、 この行のみ」といった細かい範囲指定をした監査条件を設定した監査が可能です。これにより例 えば、顧客情報表のカード番号が含まれる列にアクセスしたときだけ監査するといったことが可 能になります。さらに、ファイングレイン監査のもう1つの機能として、「イベントハンドラ」と 呼ばれる機能があります。イベントハンドラは、監査履歴の記録と連動して自動的に実行可能な プログラムです。たとえば重要なデータにアクセスがあったときには管理者にメールで警告を行 うことや、PL/SQLで作成したプロシージャを呼び出して任意の動作をさせることも可能です。 ・監査証跡の解析と通知 (EE)
監査証跡の分析ツールとしてオラクル社はOracle Business Intelligence ( *以下BIと記載) という製品 を提供しています。このBIのDiscoverer モジュールを使用することで、監査証跡を分析することが 可能です。Discoverer はもともとDWHシステムのフロントツールであり、その高度な分析機能は監 査証跡の分析においても利用できます。また、通知に関しては、ファイングレイン監査のイベント ハンドラ機能を利用することで外部アプリケーションに通知することが可能です。 ・監査証跡の安全な保存 前述のとおり、Oracle Database 10gの監査証跡は、データベース管理者から変更不可能(データベース 管理者が rootでは無い場合) な、OSファイル上に監査証跡を配置することができます。 ・利用者自身からの利用状況確認機能 前述の「技36 ユーザにログオン履歴を提供する」で記載した方法で対応できます。 機能解説 ・必須監査とDBA監査 ・監査証跡の保存位置は、はAUDIT_FILE_DEST 初期化パラメタで設定します。 ・DBA監査の実行は、AUDIT_SYS_OPERATIONS 初期化パラメタを使用して設定します。これによ り、SYS が発行したすべてのSQL 文が監査証跡として保存されます。 ・標準監査 ・標準監査機能を使用するためには、AUDIT_TRAIL 初期化パラメータを設定します。 ・各監査における監査ポリシーはAUDIT文を使用して設定します。 ・監査証跡はデータベース内の監査表(SYS.AUD$ 表)に格納する方法と、OS上にファイルとして出力 する2通りの方法が設定可能です。
・標準監査にて可能な取得項目の代表例は以下になります。 ・オペレーティング・システムのログイン・ユーザー名 ・データベース・ユーザー名 ・端末識別子 ・アクセスされたスキーマ・オブジェクトの名前 ・実行または試行された操作 ・操作の完了コード ・UTC(協定世界時)書式による日時のタイムスタンプ ・使用されたシステム権限 ・SQL テキスト ・SQL 文に使用されたバインド値 ・ファイングレイン監査 (EE) ファイングレイン監査と標準監査は動作の仕組みが異なります。そのため、ファイングレイン監査 と、AUDIT_TRAIL初期化パラメータは関連がありません。ファイングレイン監査を使用するために は、監査方針をDBMS_FGA パッケージや、データベース・トリガーを利用して作成します。また、 監査証跡は、DBA_FGA_AUDIT_TRAIL ビューに格納されます。
以下は、DBMS_FGA パッケージを使用して、表hr.emp の文(INSERT、UPDATE、DELETE およ びSELECT)を監査して、sales部門の従業員レコードのsalary 列にアクセスする問合せを監視する方 法を示しています。 DBMS_FGA.ADD_POLICY( object_schema => 'hr', object_name => 'emp', policy_name => 'chk_hr_emp', audit_condition => 'dept = ''SALES'' ', audit_column => 'salary'
statement_types => 'insert,update,delete,select');
・その他の監査方法
[1.8. 技48 不正アクセスの発生に備えて対応策、復旧策を講じておくこと] に記載した、Oracle Flashback Version Queryを使用することで、行の変更履歴に注目した監査を実施することが可能です。 詳細は、後述の1.8を参照して下さい。
1.7. 技42-1 電子メール送受信、ホームページ閲覧等の不正使用防止機能を設けること
改定ポイント (項目1) 改定前 業務目的以外の電子メールの送受信やホームページの閲覧等に対処するため、セキュリティポリシ ーと整合性のとれた不正使用防止対策を講ずることが望ましい。 改定後 業務目的以外の電子メールの送受信やホームページの閲覧等に対処するため、セキュリティポリシ ーと整合性のとれた不正使用防止対策を講ずることが望ましい。なお、個人データを扱う場合には、 この措置は必要である。 個人データを扱う場合には、業務目的以外の電子メールの送受信やホームページの閲覧等に対処する ため、セキュリティポリシーと整合性のとれた不正使用防止対策を講ずることが必要であることが追 加されました。 Oracle Database 10gでの対応Oracle Database 10gはこの項目に対する機能を有しておりませんが、オラクル社はOracle Emailという製 品をリリースしております。Oracle EmailはOracle Collaboration Suiteに含まれるセキュアで堅牢な 電子メールサーバです。Oracle Emailはメール環境に必要なSMTP、POP3、IMAPサーバーをすべて含ん だ統合Email製品であり、電子メール情報の格納にOracleデータベースを使用しています。そのため、 これまでに実績のあるOracle Database の機能がそのままメール環境のインフラとして使用できます。 Oracle Database の利点を活用した機能を以下に記載します。 ・バックアップ/リカバリにDBの技術をそのまま利用可能 ・DBの持つ可用性や災害対策機能をそのまま利用可能 ・DBの持つデータ検索機能をそのまま利用可能 ・DBで実証済みのスケーラビリティ また、技42-1で提示されているセキュリティ機能として、以下の機能を実装しています。 ・メールフィルタリングおよびスパムフィルタ ・社外に送信されたメールの監査機能 ・サードベンダーが提供するウィルス対策ソフトと組み合わせ可能な独自のウィルス対策機能
参照マニュアル 「Oracle Collaboration Suite 概要 リリース2(9.0.4)」 全般
機能解説 ・メールフィルタリングおよびスパムフィルタ メールヘッダベース (送信元、送信先、タイトル等)のメールフィルタリングが可能です。 サーバーサイド・ルールというフィルター機能により、メールヘッダを対象に条件を指定して必要 なアクションを実施することができます。なお、この機能はスパムフィルタリングとして利用する ことも可能です。 ・社外に送信されたメールの監査機能 送受信される全てのメールに対して、メールフィルタリングと連動した転送機能が利用できます。 そのため、特定条件のメールを管理者が管理するメールストアに格納できます。例えば、ある人物 が、特定の外部の企業に送ったメールを、全て管理部の人間にBCCで転送することが可能です。さ らにデータベースの全文検索機能を利用して、メールの内容を高速にチェックすることができます。 ・サードベンダーが提供するウィルス対策ソフトと組み合わせ可能な独自のウィルス対策機能 ウィルス対策ソフトには、ウィルスが発見されてからワクチンが提供されるまでの空白の期間が必 ず存在します。Oracle Email はデータベースの持つ強力な検索機能を利用することで、ワクチンが 提供されていなくても、ウィルスメールの何らかの特徴 (タイトル、添付ファイル名等) が明らかに なっていれば、該当するメールをすぐに確認して検疫することが可能です。 参照マニュアル 「Oracle Email 管理者ガイド, リリース2(9.0.4.1)」 3章 参照マニュアル 「Oracle Email アプリケーション開発者ガイド リリース2(9.0.4)」 2章
1.8. 技48 不正アクセスの発生に備えて対応策、復旧策を講じておくこと
改定ポイント (項目1) 変更前 不正アクセスの拡大防止のための対応策、復旧策を明確にしておくことが望ましい。対応策、復旧 策においては以下の対応が望ましい。 変更後 不正アクセスの拡大防止のための対応策、復旧策を明確にしておくことが必要である。対応策、復 旧策においては以下の対応が必要である。 復旧対策について望ましいというものから必要であると明確化されました。技48はネットワーク 関連の項目が多くを占めておりますが、データベースに関連の深い項目としてファイル等が破壊 された場合の復旧のために、データ・ファイル、プログラム・ファイル等のバックアップを確保 しておく必要があることが明記されています。 Oracle Database 10gでの対応 Oracle Database は従来のバージョンから様々な、バックアップ/リストア機能を提供していますが、 今回は特に、不正アクセスにより発生する可能性が高いデータ破壊への対処方法として、フラッシ ュバック機能を説明します。 不正アクセスによりファイルが破壊される場合は、特に論理障害を考慮した対策を想定する必要が あります。論理障害とは、データベースから見て正しい操作が行われているが、実際には業務上の 不都合が発生してしまうようなデータ破壊です。例えば不正に管理者権限を奪取した人物が必要な データを削除、および改変するケースです。この場合データベースとしては管理者権限のあるユー ザからの削除/改変命令がきていますので、削除は実行されてしまいます。また、このような障害は ディスクのミラーリングや、レプリケーションなどの物理的な障害を想定した障害対策では対応で きません。Oracle Database 10gはこのような論理障害に対応する機能として、フラッシュバック機能 を提供しております。(EE)フラッシュバック機能は、過去における任意の時点のデータを表示する ことや、データを過去の任意の時点にリカバリすることを可能にします。フラッシュバック機能に は以下の6種類があります。 参照マニュアル 「Oracle Databaseバックアップおよびリカバリ・アドバンスト・ユーザーズ・ガイド 」9章・Oracle Flashback Query
過去の任意の時点を指定してデータベースに対する問合せを実行し、その時点での状態を表示 できます。不正な更新が行われてしまった場合にこの機能を使用すると、不正な変更が発生す る前の結果を取得し、そこからリカバリを行うことが可能です。
・Oracle Flashback Version Query
任意の行について指定した期間中に存在したすべての行の履歴を表示できます。また、その行 の各履歴を作成したトランザクションの開始時刻、終了時刻、操作、トランザクションIDなど を取得できます。この機能は、消失したデータの値のリカバリおよび行単位での監査の両方に 使用できます。
・Oracle Flashback Transaction Query
1つのトランザクションまたは一定期間内のトランザクションによる変更を表示できます。 ・Oracle Flashback Table
表を過去の時点に戻すことができます。 ・Oracle Flashback Drop
DROP TABLE 文の影響を無効にできます。 ・Oracle Flashback Database
データベースを過去の任意の時点に戻す機能を提供しています。
機能解説
Oracle Flashback Table、Oracle Flashback Query、Oracle Flashback Transaction Query およびOracle Flashback Version Query は、いずれもUNDO データを利用しています。UNDOデータを利用して表が リストアされますので、使いやすさ、データの可用性および高速リストアという点で、通常のバック アップリストアより有効です。以下にいくつかのサンプルを記載します。
・Oracle Flashback Query
表の過去の状態を問い合せるには、SELECT 文のAS OF 句を使用します。たとえば、2003年4月4日 午前9 時30 分の「JOHN」の従業員レコードの状態を取得するには、次の問合せを実行します。
SELECT * FROM EMPLOYEE AS OF TIMESTAMP
TO_TIMESTAMP('2003-04-04 09:30:00', 'YYYY-MM-DD HH:MI:SS') WHERE name = 'JOHN';
JOHN の情報をEMPLOYEE 表にリストアするには、次の更新が必要です。 INSERT INTO employee
(SELECT * FROM employee AS OF TIMESTAMP
TO_TIMESTAMP('2003-04-04 09:30:00', 'YYYY-MM-DD HH:MI:SS') WHERE name = 'JOHN');
・Oracle Flashback Table
午後5 時に人事管理者によって、従業員「JOHN」がEMPLOYEE 表から欠落していることが判明し ました。この従業員は、人事管理者が最後にレポートを実行した午後2 時には存在していました。 午後2 時から現在までの間に、誰かが誤って「JOHN」のレコードを削除しました。人事管理者は、 Oracle Flashback Table を使用して、表を午後2 時の状態に戻します。この場合は、次のように入力 します。
FLASHBACK TABLE EMPLOYEES TO TIMESTAMP
TO_TIMESTAMP ('2003-04-04 14:00:00','YYYY-MM-DD HH:MI:SS') ENABLE TRIGGERS;
・Oracle Flashback Database
Oracle Flashback Databaseは、データ・ファイルをバックアップからリストアする必要がなく、アー カイブREDO ログから適用する必要がある変更が少ないため、Point-in-Time リカバリより非常に高 速です。Oracle Flashback Database を利用する場合はUNDO以外に、フラッシュ・リカバリ領域を設 定し、フラッシュバックのためのデータ保存領域を事前に設定しておく必要があります。Oracle Flashback Database を有効にするための要件は、次のとおりです。
・ARCHIVELOG モードでの実行
・DB_FLASHBACK_RETENTION_TARGET 初期化パラメータの設定 ・ALTER DATABASE FLASHBACK ON 文の発行
使用方法は極めて容易です。例えば以下のSQLでFlashback Databaseを実行できます。 FLASHBACK DATABASE TO TIME timestamp ('2002-11-05 14:00:00');