第28回 よかたいオラクル倶楽部セミナー <写真欄> Oracle Database セキュリティ 日本オラクル株式会社 九州支社 2008年10月17日 以下の事項は、弊社の一般的な製品の方向性に関する概要を説明するものです。 また、情報提供を唯一の目的とするものであり、いかなる契約にも組み込むことは できません。以下の事項は、マテリアルやコード、機能を提供することをコミットメン ト(確約)するものではないため、購買決定を行う際の判断材料になさらないで下さ い。オラクル製品に関して記載されている機能の開発、リリースおよび時期につい ては、弊社の裁量により決定されます。 データベースにおける様々な脅威と取るべき対策 対策 脅威 業務上の権限を超えた不正アクセス 正規ユーザによる不正行為 アクセス 制御 監査 担当業務遂行のために必要な権限以 外は一切付与しない 監査証跡(情報漏洩・改竄の証拠)を 保持し、分析して不正アクセス者を割 り出したり、法的に有効な証拠とする 監査していることを組織全体に周知し、 不正行為を心理的に抑止する 不正アクセスによるデータファイル やバックアップメディアの盗難や 通信経路からの盗聴 格納データの暗号化 暗号化 通信データの暗号化 Copyright© 2008, Oracle. All rights reserved. 3 Agenda アクセス制御 – – – ネットワークのアクセス制御 データベースのアクセス制御 データベース管理者のアクセス制御 各種監査のご紹介 – – – – 必ず行われる監査 DBA監査 標準監査 ファイングレイン監査 データの暗号化 EnterpriseManagerによるセキュリティ管理 – ポリシー機能によるセキュリティ管理 Copyright© 2008, Oracle. All rights reserved. 4 アクセス制御 ネットワークのアクセス制御 データベースのアクセス制御 データベース管理者のアクセス制御 Copyright© 2008, Oracle. All rights reserved. 5 アクセス制御の基本 ユーザごとにアクセスできる情報を制限する – 「最小権限の原則」 営業部 人事部 人事情報 Copyright© 2008, Oracle. All rights reserved. 6 ネットワークにおけるアクセス制御 データベースへのアクセス経路を制限 – ホスト名またはIPアドレスを指定して制御 ユーザ IP:192.168.1.23 システム 管理者 IP:192.168.1.10 AP Server TCP.VALIDNODE_CHECKING アクセス制御 TCP.EXCLUDED_NODES アクセスを許可されないクライアント TCP.INVITED_NODES アクセスを許可されるクライアント sqlnet.ora 設定例: TCP.VALIDNODE_CHECKING=yes TCP.INVITED_NODES=(192.168.1.10, 192.168.1.23) IP:192.168.1.132 ユーザ アクセスは制限するようには、sqlnet.oraファイルを設定します Copyright© 2008, Oracle. All rights reserved. 7 Oracle Databaseのアクセス制御 表単位のアクセス制御 ビューを使ったアクセス制御 Virtual Private Database おすすめ! Copyright© 2008, Oracle. All rights reserved. 8 表単位のアクセス制御 表へのアクセス権限をユーザごとに制御 →表に対する読み取り権限があれば、表内のデータは 全て検索できてしまう。 読み取り+書込権限 ユーザ1 人事情報表 ユーザ2 読み取り権限のみ 権限なし ユーザ3 Copyright© 2008, Oracle. All rights reserved. 9 ビューを使ったアクセス制御 ビューを作成し、ビューへのアクセス権限を付与 →ビューが増えると、管理作業が繁雑に 必要な情報だけを見せるビュー ビュー1 ユーザ1 ビュー2 人事情報表 ユーザ2 ビュー3 ユーザ3 Copyright© 2008, Oracle. All rights reserved. 10 8i以降 EE Virtual Private Database 行レベル、列レベルでアクセス権限を付与 →別表、ビューなどの作成は不要 同一DBユーザでも異なるアクセス制御が可能 Webアプリケーションでも制御可能 全社員の情報の読み取りと書き込み ユーザ1 ユーザ2 自分の部下の情報の読み取りと 査定の書き込み 人事情報表 全社員の情報の読み取り (名前、部門名等の基本情報のみ) ユーザ3 Oracle8i以降のEnterpriseEditionにて利用可能 Copyright© 2008, Oracle. All rights reserved. 11 Virtual Private Databaseの仕組み アプリケーションコンテキスト ファイングレイン・アクセスコントロール(FGAC) Virtual Private Databaseの動作 Copyright© 2008, Oracle. All rights reserved. 12 アプリケーション・コンテキスト セッションごとに固有の属性値を格納 – – 同一ユーザでもセッションごとに異なる値を保持可 データベース内での環境変数のようなイメージ Dept:10 Dept:20 SCOTTでログイン SCOTTでログイン Copyright© 2008, Oracle. All rights reserved. 13 ファイングレイン・アクセスコントロール(FGAC) 自動的にWHERE句を付与 – Oracle Database 10gより、列のマスキングも可能 ポリシー関数 FGACポリシー SELECT * FROM EMP DEPTNO = 10 SELECT * FROM EMP WHERE DEPTNO = 10 Copyright© 2008, Oracle. All rights reserved. 14 Virtual Private Databaseの動作 ①:ユーザが表にSELECT操作実行 ②:FGACポリシーによりポリシー関数が呼ばれる ③:ポリシー関数はアプリケーション・コンテキストの値を取得 ④:③の値を元にWHERE句を生成して返す ⑤:返されたWHERE句をつけた問い合わせを実行 ポリシー関数 ③ ② D10 グループ FGACポリシー ④ ① SELECT * FROM EMP DEPTNO = 10 ⑤ SELECT * FROM EMP WHERE DEPTNO = 10 Copyright© 2008, Oracle. All rights reserved. 15 アクセス制御 ネットワークのアクセス制御 データベースのアクセス制御 データベース管理者のアクセス制御 Copyright© 2008, Oracle. All rights reserved. 16 10gR2以降 Oracle Database Vault データベース管理者の権限を制限 ∼ 今までの Oracle Database ∼ データベース管理者に管理権限が一極集中 データベース管理 データベース 管理者 ユーザー・アカウント管理 セキュリティ・ポリシー管理 アプリケーション・データの管理 データベースの起動停止から、全スキーマ・ オブジェクトの操作やセキュリティの設定まで、 あらゆるシステム権限の実行が可能 データベース管理者アカウントによる、不正なデータ の操作や情報漏えいのリスク! 管理権限の一極集中によるリスクを回避し、 各役割に応じた権限のみを持つ 複数の 管理者によって、データベースを安全に管理 日本版SOX 法などの法規制に備えた、内部 日本版SOX法などの法規制に備えた、内部 統制の基盤作りが可能 EE Database Vault ∼ Oracle Database Vault ∼ 複数の管理者に管理権限を分割、分担 データベース管理 データベースの起動/停止 など ※実データへのアクセス不可! データベース 管理者 ユーザー・アカウント管理 ユーザの作成・変更、プロファイル の作成・変更、接続の許可 ※実データへのアクセス不可! アカウント 管理者 セキュリティ・ポリシー管理 セキュリティポリシーに基くアクセス 制御の設定、管理 ※実データへのアクセス不可! セキュリティ 管理者 アプリケーション・データの管理 アプリケーションに紐付く実データ の管理、アクセス権限の付与 Copyright© 2008, Oracle. All rights reserved. アプリケーション 管理者 17 Oracle Database Vault 様々な条件に基く強靭・柔軟なアクセス制御 ∼ 今までの Oracle Database ∼ 権限さえあればデータへの アクセスが可能 ∼ Oracle Database Vault ∼ 権限に加え、複数の条件を満たす場合 のみデータへのアクセスが可能 SELECT権限 一般ユーザ INSERT権限 UPDATE権限 DELETE権限 ・・・etc. ロール SELECT権限 INSERT権限 一般ユーザ UPDATE権限 DELETE権限 ・・・etc. ロール アクセス制御条件 セキュリティポリシーに 則った複合条件に基く アクセス制御が可能 様々な条件を柔軟に 設定可能 条件を満たす場合は アクセス可能 条件を満たさない場合は アクセス不可能 OSユーザ ホスト クライアントのIP 時間帯 曜日 ・・・etc ロールを 有効化 するため の条件を 評価 ※上記はあくまでも一例です。要件に合わせ、複雑な条件設定も可能です。 Copyright© 2008, Oracle. All rights reserved. 18 Oracle Database Vault DBAのアクセス権限を制御する 経理部門 財務データ 財務管理者 データ ディクショナリ 情報システム部門 Copyright© 2008, Oracle. All rights reserved. 19 Oracle Database Vault ユーザーのコマンド制限、アクティビティの制限 月曜∼金曜日 9:00∼18:00 上述以外の時間帯 顧客 データ Create Table Create User Copyright© 2008, Oracle. All rights reserved. データ ディクショナリ 20 Oracle Database Vault まとめ 会計アプリケーション 管理者 会計アプリケーション 情報システム部 Create User Joe. 無許可でユーザー作成 等を出来なくする Select * from 利用ユーザー update sales rev. 決算前後のアプリケー ションの利用を禁じる Copyright© 2008, Oracle. All rights reserved. DBAが会計デ ータを見れない ようにする 21 監査 必ず行なわれる監査 DBA監査 標準監査 ファイングレイン監査 Copyright© 2008, Oracle. All rights reserved. 22 Oracle Databaseで実現できる監査の種類 何を? 誰が行なったの? リスナー リスナー経由接続 DBの起動・停止 DBAのみ DBA実施事項全て DBAのみ DBA監査 DBユーザ 標準監査 Oracle Databaseの機能 必ず行なわれる監査 ログイン・ログアウト 権限付与 DDL・構成変更 オブジェクトへの SELECT・DMLなど 特定データへの SELECT・DML DBユーザ その他 全ユーザ ファイングレイン監査 APユーザ Copyright© 2008, Oracle. All rights reserved. トリガー 23 必ず行われる監査 Copyright© 2008, Oracle. All rights reserved. EE SE 24 必ず行われる監査 機能の概要 デフォルトで行われる、必要最低限の監査: デフォルトで行われる、必要最低限の監査: 特権ユーザー(DBA)による基本操作、およびリスナーを介したOracle 特権ユーザー(DBA)による基本操作、およびリスナーを介したOracleNet Net Servicesによるインスタンスへの接続は、デフォルトで必ず監査される Servicesによるインスタンスへの接続は、デフォルトで必ず監査される リスナーへの接続 接続、および インスタンスの起動・停止 クライアント・ユーザー データベース管理者 リスナー・ログ OS監査(必須監査)ログ Copyright© 2008, Oracle. All rights reserved. 25 必ず行われる監査 監査対象の処理 以下の処理は、必ず監査の対象となる OS監査 OS監査 (必須監査) • インスタンスの起動と停止 • 管理者ユーザー(SYSDBA/SYSOPER)によるインスタンスへの接続 リスナー・ログ • リスナーに対する接続、および接続エラー • インスタンスに接続後に発生するエラーは対象外(例:ログイン・エラー) ※“lsnrctl set log_status off” によってログが吐かれないようにすることも可能 Copyright© 2008, Oracle. All rights reserved. 26 必ず行われる監査 監査ログの出力先 それぞれの監査ログが出力される場所 OS監査 OS監査 (必須監査) • UNIX: $ORACLE_HOME/rdbms/audit/ora_<pid>.aud (デフォルト) もしくは AUDIT_FILE_DEST 初期化パラメータで定めた出力先 • Windows: イベント・ビューアのログファイル リスナー・ログ • $ORACLE_HOME/network/log/listener_<リスナー名>.log (デフォルト) もしくは listener.ora の LOG_DIRECTORY_<リスナー名> で定めた出力先 Copyright© 2008, Oracle. All rights reserved. 27 必ず行われる監査 監査証跡の例 (OS監査) ■監査証跡の内容 Audit Audit file file /opt/oracle/rdbms/audit/ora_10324.aud /opt/oracle/rdbms/audit/ora_10324.aud Oracle Database Oracle Database 10g 10g Enterprise Enterprise Edition Edition Release Release 10.1.0.4.0 10.1.0.4.0 -- Production Production With the Partitioning, Real Application Clusters With the Partitioning, Real Application Clusters and and Data Data Mining Mining options options ORACLE_HOME = /opt/oracle ORACLE_HOME = /opt/oracle System Linux System name: name: Linux Node name: mylinuxbox Node name: mylinuxbox Release: 2.4.21-27.0.2.EL Release: 2.4.21-27.0.2.EL Version: #1 Version: #1 Wed Wed Jan Jan 12 12 23:46:37 23:46:37 EST EST 2005 2005 アクション Machine: i686 Machine: i686 試行/実行されたアクション Instance Instance name: name: orcl1 orcl1 (AUDIT_ACTIONS表に一覧あり) Redo Redo thread thread mounted mounted by by this this instance: instance: 11 Oracle Oracle process process number: number: 20 20 Unix Unix process process pid: pid: 10324, 10324, image: image: oracle@mylinuxbox oracle@mylinuxbox (TNS (TNS V1-V3) V1-V3) Mon Mon May May 22 20:42:17 20:42:17 2005 2005 ACTION : 'CONNECT' ACTION : 'CONNECT' DATABASE DATABASE USER: USER: '/' '/' PRIVILEGE : SYSDBA PRIVILEGE : SYSDBA CLIENT CLIENT USER: USER: amorimur amorimur CLIENT TERMINAL: CLIENT TERMINAL: STATUS: STATUS: 00 システム権限 処理に使われたシステム権限 (SYSTEM_PRIVILEGE_MAP 表に一覧あり) 終了コード 成功時は0、エラー発生時は発生した Oracleエラー番号(ORA-XX)となる Copyright© 2008, Oracle. All rights reserved. 28 必ず行われる監査 監査証跡の例 (リスナー・ログ) ■接続成功時のログ 02-MAY-2005 02-MAY-2005 21:18:45 21:18:45 ** (CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=CRM) (CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=CRM) (CID=(PROGRAM=sqlplus)(HOST=mylinuxbox)(USER=oracle))) (CID=(PROGRAM=sqlplus)(HOST=mylinuxbox)(USER=oracle))) ** (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.131)(PORT=1684)) (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.131)(PORT=1684)) ** establish establish ** CRM CRM ** 00 終了コード 成功時は0、エラー発生時は発生した Oracle Netエラー番号(TNS-XX)となる ■接続エラー時のログ 02-MAY-2005 02-MAY-2005 21:19:36 21:19:36 ** (CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=ERP) (CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=ERP) (CID=(PROGRAM=sqlplus)(HOST=mylinuxbox)(USER=oracle))) (CID=(PROGRAM=sqlplus)(HOST=mylinuxbox)(USER=oracle))) ** (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.131)(PORT=1698)) (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.131)(PORT=1698)) ** establish establish ** ERP ERP ** 12514 12514 TNS-12514: TNS:listener TNS-12514: TNS:listener does does not not currently currently know know of of service service requested requested in in connect descriptor connect descriptor Copyright© 2008, Oracle. All rights reserved. 29 DBA監査 9i R2以降 Copyright© 2008, Oracle. All rights reserved. SE EE 30 DBA監査 機能の概要 正当なDBA権限を持ったユーザーによる不正アクセスへの対策: 正当なDBA権限を持ったユーザーによる不正アクセスへの対策: DBAユーザーが行う全ての操作を監査証跡に残すことにより、システム/セキュリティ DBAユーザーが行う全ての操作を監査証跡に残すことにより、システム/セキュリティ 管理者によるDBAユーザーの監査を可能にする 管理者によるDBAユーザーの監査を可能にする ポイント:監査証跡の保護 ポイント:監査証跡の保護 DBA権限をもつユーザー は、Oracleが残した監査 証跡を参照/改竄する ことが出来ない データベース管理者 参照/改竄が 不可能 参照可能 DBAタスク セキュアな ファイルシステム システム/セキュリティ管理者 監査証跡の 記録 Copyright© 2008, Oracle. All rights reserved. 31 DBA監査 利用方法 ・・AUDIT_SYS_OPERATIONS AUDIT_SYS_OPERATIONSととAUDIT_FILE_DEST AUDIT_FILE_DESTの2つの初期化 の2つの初期化 パラメータを設定する パラメータを設定する ・・SYS SYSユーザー、および ユーザー、およびSYSDBA/SYSOPER SYSDBA/SYSOPERとして接続した全ての として接続した全ての ユーザーの行動が監査証跡に記録される ユーザーの行動が監査証跡に記録される ––通常の 通常のDBA DBAロールを持つユーザーの行動は監査対象外 ロールを持つユーザーの行動は監査対象外 ・・監査証跡は必ずOS上に記録され、データベース内には記録されない 監査証跡は必ずOS上に記録され、データベース内には記録されない ––UNIX: UNIX:AUDIT_FILE_DEST AUDIT_FILE_DESTの示すファイル・システム上のディレクトリ の示すファイル・システム上のディレクトリ ––Windows: イベント・ビューアのログファイル Windows: イベント・ビューアのログファイル ■AUDIT_FILE_DEST の設定 ■AUDIT_SYS_OPERATIONS の設定 UNIX系OSにて、監査証跡が記録されるディレクトリを指定 UNIX系OSにて、監査証跡が記録されるディレクトリを指定 DBAによって中身が改竄できないディレクトリにする必要がある DBAによって中身が改竄できないディレクトリにする必要がある TRUEに設定することでDBA監査をONにする TRUEに設定することでDBA監査をONにする (デフォルト: (デフォルト:FALSE) FALSE) Copyright© 2008, Oracle. All rights reserved. 32 DBA監査 監査証跡の例 ■行った操作 SQL> SQL> CONNECT CONNECT // AS AS SYSDBA SYSDBA 接続されました。 接続されました。 SQL> SQL> SQL> SQL> --- 行の挿入 行の挿入 SQL> INSERT SQL> INSERT INTO INTO scott.testtab scott.testtab 2 VALUES ( 1 ); 2 VALUES ( 1 ); ■記録された監査証跡 Fri FriMar Mar25 2523:08:20 23:08:202005 2005 ACTION : 'CONNECT' ACTION : 'CONNECT' DATABASE DATABASEUSER: USER:'/''/' PRIVILEGE : PRIVILEGE :SYSDBA SYSDBA CLIENT CLIENTUSER: USER:oracle oracle CLIENT CLIENTTERMINAL: TERMINAL:pts/3 pts/3 STATUS: STATUS:00 (略) (略) 1行が作成されました。 1行が作成されました。 Fri FriMar Mar25 2523:08:20 23:08:202005 2005 ACTION : 'insert ACTION : 'insertinto intoscott.testtab scott.testtabvalues values((11)')' DATABASE DATABASEUSER: USER:'/''/' PRIVILEGE PRIVILEGE: :SYSDBA SYSDBA CLIENT CLIENTUSER: USER:oracle oracle CLIENT CLIENTTERMINAL: TERMINAL:pts/3 pts/3 STATUS: STATUS:00 SQL> SQL> COMMIT; COMMIT; (略) (略) コミットが完了しました。 コミットが完了しました。 SQL> SQL> SQL> SQL> SQL> SQL> 22 --- データの参照 データの参照 SELECT SELECT COUNT(*) COUNT(*) FROM FROM scott.testtab; scott.testtab; COUNT(*) COUNT(*) ------------------55 SQL> SQL> Fri FriMar Mar25 2523:08:20 23:08:202005 2005 ACTION : 'commit' ACTION : 'commit' DATABASE DATABASEUSER: USER:'/''/' PRIVILEGE : PRIVILEGE :SYSDBA SYSDBA CLIENT CLIENTUSER: USER:oracle oracle CLIENT CLIENTTERMINAL: TERMINAL:pts/3 pts/3 STATUS: STATUS:00 (略) (略) Fri FriMar Mar25 2523:08:20 23:08:202005 2005 ACTION ACTION: :'select 'selectcount(*) count(*)from fromscott.testtab' scott.testtab' DATABASE USER: '/' DATABASE USER: '/' PRIVILEGE PRIVILEGE: :SYSDBA SYSDBA CLIENT CLIENTUSER: USER:oracle oracle CLIENT CLIENTTERMINAL: TERMINAL:pts/3 pts/3 STATUS: STATUS:00 Copyright© 2008, Oracle. All rights reserved. 33 DBA監査 運用上の注意 OS管理者とDBAのそれぞれを別々のユーザー / グループとして管理し、 相互の行動を監視できる形で運用を行う システム/セキュリティ管理者によるDBAの監視を実現するためには、 DBAによる監査証跡の改竄を防止する必要がある 監査証跡は、Oracleのインストール・ユーザーのUIDで記録される 監査証跡の改竄を防止する設定の例 AUDIT_FILE_DESTの指定先 監査証跡 参照/改竄が 不可能 DBAユーザー DBA OSグループ 参照可能 所有者: sysadmin:sysadmin パーミッション: drxwr-w--- (0750) (sysadminグループ以外からの 読み書きを遮断) 記録 インストール・ユーザー システム管理者ユーザー ポイント:監査証跡の所有者となる ポイント:監査証跡の所有者となる Oracleインストール・ユーザーをシステ Oracleインストール・ユーザーをシステ ム管理者グループにもアサインし、 ム管理者グループにもアサインし、 日常の運用では利用しないことでDBA 日常の運用では利用しないことでDBA による監査証跡の改竄を防止 による監査証跡の改竄を防止 システム管理者 OSグループ Copyright© 2008, Oracle. All rights reserved. 34 標準監査 EE Copyright© 2008, Oracle. All rights reserved. SE 35 標準監査 機能の概要 システムに即した不正行為への対策: システムに即した不正行為への対策: 一般ユーザの特定オブジェクトに対する操作、権限付与、データベース構成変更に 一般ユーザの特定オブジェクトに対する操作、権限付与、データベース構成変更に 対し、監査証跡を取得する 対し、監査証跡を取得する AUDIT_TRAIL=OS AUDIT_FILE_DEST 初期化パラメー タで定めた出力先に出力 ユーザA ログイン 表の構成変更 権限付与 検索 データの変更 etc. ユーザB セキュアな ファイルシステム ※監査ログの記録先は、AUDIT_TRAIL 初期化パラメータで選択可能 SYS.AUD$表 AUDIT_TRAIL=DB もしくは AUDIT_TRAIL=DB_EXTENDED(*) SYS.AUD$表に記録 監査証跡の記録 ・処理が監査に合致した場合、処理を行ったユーザーの詳細情報がSQL文とともに aud$ 内部表に記録される ・aud$ の内容は、 DBA_AUDIT_TRAIL ビューを利用して確認する (*)AUDIT_TRAIL=DB_EXTENDEDはOracle10gの新機能です Copyright© 2008, Oracle. All rights reserved. 36 標準監査 記録先の違いによる 監査証跡の違い 監査証跡の記録先をOSにすると、取得される監査証跡項目は限定される 監査証跡の記録先をOSにすると、取得される監査証跡項目は限定される AUDIT_TRAIL=OS AUDIT_TRAIL=DB_EXTENDED ○オペレーティング・システムのログイン・ユーザー名 ×データベース・ユーザー名(DATABASE USER) ○セッション識別子 ○端末識別子 ○アクセスされたスキーマ・オブジェクトの名前 ○実行または試行された操作(ACTION) ○操作の完了コード ×UTC(協定世界時)書式による日時のタイムスタンプ ○使用されたシステム権限(PRIVILEGE) ×プロキシ・セッションの監査ID ×グローバル・ユーザーの一意ID ○識別名 ×インスタンス番号 ×処理番号 ×トランザクションID ×SQL 文のSCN(システム変更番号) ×(*)SQL テキスト(監査をトリガーしたSQL テキスト) ×(*)SQL 文に使用されたバインド値(ある場合) ○オペレーティング・システムのログイン・ユーザー名 ○データベース・ユーザー名(DATABASE USER) ○セッション識別子 ○端末識別子 ○アクセスされたスキーマ・オブジェクトの名前 ○実行または試行された操作(ACTION) ○操作の完了コード ○ UTC(協定世界時)書式による日時のタイムスタンプ ○使用されたシステム権限(PRIVILEGE) ○プロキシ・セッションの監査ID ○グローバル・ユーザーの一意ID ○識別名 ○インスタンス番号 ○処理番号 ○トランザクションID ○ SQL 文のSCN(システム変更番号) ○ (*)SQL テキスト(監査をトリガーしたSQL テキスト) ○ (*)SQL 文に使用されたバインド値(ある場合) (*)AUDIT_TRAIL=DBの場合には出力されません ※証跡の詳細については、弊社マニュアルをご参照ください Copyright© 2008, Oracle. All rights reserved. 37 標準監査 機能の主な種類 (1)セッション監査: (1)セッション監査: ログオン・ログアウトを監査することで、不審なログオン行為を早期発見する ログオン・ログアウトを監査することで、不審なログオン行為を早期発見する (2)オブジェクト監査: (2)オブジェクト監査: 特定オブジェクトに対する検索や更新処理などの操作を監査することで、不審な 特定オブジェクトに対する検索や更新処理などの操作を監査することで、不審な 行為を早期発見する 行為を早期発見する (3)権限監査: (3)権限監査: 特定スキーマからの権限付与を監査し把握することで、不審な権限付与を早期 特定スキーマからの権限付与を監査し把握することで、不審な権限付与を早期 発見する 発見する (4)SQL文監査(DDL文監査など): (4)SQL文監査(DDL文監査など): 特定スキーマからのDDLなどの発行されたSQL文を監査することで、不審な構 特定スキーマからのDDLなどの発行されたSQL文を監査することで、不審な構 成変更を早期発見する 成変更を早期発見する Copyright© 2008, Oracle. All rights reserved. 38 標準監査 利用方法と監査証跡の例 (1)セッション監査 (1)セッション監査 AUDIT AUDITSESSION; SESSION; ・(例)AUDIT SESSION BY ACCESS; ・セッションをEXITしなかった場合に終了時間は取れない ・コネクションプーリングではなく、C/S接続時に有効 ■監査証跡の例 (SAKURAが14:33にログインし、14:42にログオフ したことがわかる) OS_USERNAME OS_USERNAME ----------------------------security security USERNAME USERNAME ----------------------------SAKURA SAKURA LOGOFF_TIME LOGOFF_TIME --------------------------------20050502 20050502 14:42:49 14:42:49 USERHOST USERHOST ------------------jpsun1444 jpsun1444 TERMINAL TERMINAL ------------------pts/2 pts/2 TIMESTAMP TIMESTAMP --------------------------------20050502 20050502 14:33:47 14:33:47 EXTENDED_TIMESTAMP EXTENDED_TIMESTAMP --------------------------------------------------------------------05-05-02 05-05-02 14:33:47.250482 14:33:47.250482 +09:00 +09:00 OS_PROCESS OS_PROCESS ------------------------------6543 6543 ACTION_NAME ACTION_NAME ----------------------------LOGOFF LOGOFF ※SYS.DBA_AUDIT_TRAILから必要情報を抜粋 Copyright© 2008, Oracle. All rights reserved. 39 標準監査 利用方法と監査証跡の例 (2)オブジェクト監査 (2)オブジェクト監査 AUDIT AUDIT{{監査対象となるSQL操作 監査対象となるSQL操作}}ON ON{{監査対象の特定オブジェクト名 監査対象の特定オブジェクト名};}; ・(例)AUDIT SELECT ON IZUMI.EMP BY ACCESS; ・監査対象ユーザはIZUMI.EMPにSELECTを行なったユーザ全てとなる ・どの行に対するアクションを行なったかまでは限定できない ■監査証跡の例 (SAKURAがEMP表を検索したことがわかる) OS_USERNAME OS_USERNAME ----------------------------security security OBJ_NAME OBJ_NAME --------------------------EMP EMP USERNAME USERNAME --------------------------SAKURA SAKURA ACTION_NAME ACTION_NAME ------------------------SELECT SELECT USERHOST USERHOST ----------------------------jpsun1444 jpsun1444 TERMINAL TERMINAL ----------------------------pts/2 pts/2 TIMESTAMP TIMESTAMP --------------------------------20050502 20050502 15:59:48 15:59:48 SES_ACTIONS SESSIONID SQL_BIND SES_ACTIONS SESSIONID SQL_BIND -------------------------------- ---------- ------------------137 137 OWNER OWNER ------------IZUMI IZUMI SQL_TEXT SQL_TEXT ----------------------------------------------select select ** from from izumi.emp izumi.emp ※SYS.DBA_AUDIT_TRAILから必要情報を抜粋 Copyright© 2008, Oracle. All rights reserved. 40 標準監査 利用方法と監査証跡の例 (3)権限監査 (3)権限監査 AUDIT AUDIT{監査対象となる権限操作} {監査対象となる権限操作}BY BY{{監査対象とされるユーザ 監査対象とされるユーザ};}; ・(例)AUDIT GRANT TABLE BY SAKURA; ・特定ユーザによる、権限操作に対する監査証跡を取得 ■監査証跡の例 (SAKURAがIZUMIに対してEMP表に対するSELECT権限を付与したことがわかる OS_USERNAME OS_USERNAME ----------------------------security security USERNAME USERNAME ----------------------------SAKURA SAKURA USERHOST USERHOST ----------------------------jpsun1444 jpsun1444 TERMINAL TERMINAL --------------------pts/2 pts/2 TIMESTAMP TIMESTAMP --------------------------------20050502 20050502 15:40:52 15:40:52 OBJ_NAME OBJ_NAME ----------------------------EMP EMP ACTION_NAME OS_PROCESS ACTION_NAME GRANTEE GRANTEE OS_PROCESS ----------------------------------------------------------------- --------------- ------------GRANT IZUMI 6712 GRANT OBJECT OBJECT IZUMI 6712 OWNER OWNER ------------------SAKURA SAKURA ※SYS.DBA_AUDIT_TRAILから必要情報を抜粋 Copyright© 2008, Oracle. All rights reserved. 41 標準監査 利用方法と監査証跡の例 (4)SQL文監査(DDL文監査など) (4)SQL文監査(DDL文監査など) AUDIT AUDIT{{監査対象となるオブジェクトの種類等 監査対象となるオブジェクトの種類等}}BY BY{{監査対象とされるユーザ 監査対象とされるユーザ};}; ・(例) AUDIT TABLE BY SAKURA; ・特定ユーザによる、DDL文などのSQL操作に対する監査証跡を取得 ■監査証跡の例 (SAKURAがEMP表を削除したことがわかる) OS_USERNAME OS_USERNAME ----------------------------security security OBJ_NAME OBJ_NAME ----------------EMP EMP USERNAME USERNAME ----------------------------SAKURA SAKURA ACTION_NAME ACTION_NAME --------------------------DROP DROP TABLE TABLE USERHOST USERHOST ----------------------------jpsun1444 jpsun1444 TERMINAL TERMINAL --------------------pts/2 pts/2 SESSIONID SESSIONID OS_PROCESS OS_PROCESS ------------------- ----------------------146 6819 146 6819 SQL_BIND SQL_BIND ----------------- TO_CHAR(TIMESTAMP TO_CHAR(TIMESTAMP --------------------------------20050502 20050502 16:24:08 16:24:08 OWNER OWNER ------------------SAKURA SAKURA SQL_TEXT SQL_TEXT ----------------------------drop drop table table emp emp ※SYS.DBA_AUDIT_TRAILから必要情報を抜粋 Copyright© 2008, Oracle. All rights reserved. 42 ファイングレイン監査 Copyright© 2008, Oracle. All rights reserved. 9i 以降 EE 43 ファイングレイン監査 機能の概要 通常監査と比較した、きめ細かな監査ポリシーを施行可能: 通常監査と比較した、きめ細かな監査ポリシーを施行可能: ・処理対象の行(検索条件)、列、実行された文の種類(10g∼)等の条件を元に、 ・処理対象の行(検索条件)、列、実行された文の種類(10g∼)等の条件を元に、 監査証跡を残すか否かをきめ細かく指定することが可能 監査証跡を残すか否かをきめ細かく指定することが可能 ・Webアプリケーション等、コネクション・プールを利用した構成においても、 ・Webアプリケーション等、コネクション・プールを利用した構成においても、 エンド・ユーザーを特定可能な監査証跡を取得することが可能 エンド・ユーザーを特定可能な監査証跡を取得することが可能 SELECT order_id, product_id, quantity FROM order_items; ファイングレイン監査の例 ファイングレイン監査の例 監査されない 特定の条件(列、データの 値等)に基づいた細かな監 査ポリシーを定義可能 監査証跡の格納先の カスタマイズや、ユーザー 定義の監査アクションの 定義も可能 監査ポリシ ー 監査条件: 1=1 (全ての行) 監査列 :card_no 監査証跡 SELECT order_id, card_no FROM order_items, <timestamp>, <userid>, <bind vars> etc. 監査証跡が残る SELECT order_id, card_no FROM order_items; Copyright© 2008, Oracle. All rights reserved. 管理者にメール通知 44 ファイングレイン監査 利用方法1:監査条件を定義する例 ■「order_items」表の「card_no」列に対する全ての処理を監査 SQL> SQL> EXECUTE EXECUTE DBMS_FGA.ADD_POLICY(DBMS_FGA.ADD_POLICY(>> object_schema object_schema => => ‘applusr’, ‘applusr’, ->> object_name=> object_name=> ‘order_items’,‘order_items’,>> policy_name policy_name => => ‘audit_card_policy’,‘audit_card_policy’,>> audit_condition audit_condition => => ‘1=1’,‘1=1’,>> audit_column audit_column => => ‘card_no’,‘card_no’,>> enable enable => => TRUE,TRUE,>> statement_types=> statement_types=> ->> ‘select,update,delete,insert‘,‘select,update,delete,insert‘,>> audit_trail audit_trail =>DBMS_FGA.DB_EXTENDED,=>DBMS_FGA.DB_EXTENDED,>> audit_column_opts audit_column_opts => => ->> DBMS_FGA.ALL_COLUMNS); DBMS_FGA.ALL_COLUMNS); PL/SQLプロシージャが正常に完了しました。 PL/SQLプロシージャが正常に完了しました。 監査対象表 監査対象となるスキーマと表名を指定 監査条件 監査証跡を残す検索条件、 および検索対照列を指定 audit_condition では、監査 対象の行を絞り込む 条件を 指定する(1=1は全ての行が 対象という意味) 監査対象の処理 どのような処理に対して本ポリシーを 施行するかを指定 SQL> SQL> ※ DBMS_FGA の詳細については、弊社マニュアルをご参照ください Copyright© 2008, Oracle. All rights reserved. 45 ファイングレイン監査 利用方法2:コネクションプールを利用している場合の例 ■アプリケーション・コンテキストと併用し、カスタムのイベント・ハンドラを使ってユーザー属性を記録 SQL> SQL> CREATE CREATE OR OR REPLACE REPLACE PROCEDURE PROCEDURE applusr.record_ctx applusr.record_ctx 22 (schema_name VARCHAR2, table_name (schema_name VARCHAR2, table_name VARCHAR2, VARCHAR2, 33 policy_name policy_name VARCHAR2) VARCHAR2) 44 IS IS 55 BEGIN BEGIN 66 INSERT INSERT INTO INTO applusr.custom_audit_trail applusr.custom_audit_trail 77 (( TIMESTAMP, TIMESTAMP, APPLUSR, APPLUSR, CURRENT_SQL CURRENT_SQL )) 88 VALUES VALUES 99 (( SYSDATE, SYSDATE, 10 SYS_CONTEXT('myctx', 10 SYS_CONTEXT('myctx', 'applusr'), 'applusr'), 11 SYS_CONTEXT('USERENV', 11 SYS_CONTEXT('USERENV', 'CURRENT_SQL')); 'CURRENT_SQL')); 12 END; 12 END; 13 13 // イベント・ハンドラとなるプロシージャを作成 アプリケーション・ユーザーの記録 カスタムのアプリケーション・コンテキストを 利用し、アプリケーションから設定された アプリケーション・ユーザー名と実行された SQL文をカスタムの監査証跡表に記録 コネクションプールを利用しており、 DBユーザーだけでは実際のユーザーを 識別できない場合に利用する イベント・ハンドラの指定 プロシージャが作成されました。 プロシージャが作成されました。 SQL> SQL> EXECUTE EXECUTE DBMS_FGA.ADD_POLICY(DBMS_FGA.ADD_POLICY(>> (略) (略) >> handler_schema handler_schema => => ‘applusr’,‘applusr’,>> handler_module => handler_module => ‘record_ctx’); ‘record_ctx’); PL/SQLプロシージャが正常に完了しました。 PL/SQLプロシージャが正常に完了しました。 SQL> SQL> イベント・ハンドラの作成 カスタムの監査証跡を記録するための イベント・ハンドラの指定 ポイント:AP固有のセッション属性(APユーザー名等)を格納する ポイント:AP固有のセッション属性(APユーザー名等)を格納する ことが可能な、セキュアなデータ・キャッシュをアプリケーション・ ことが可能な、セキュアなデータ・キャッシュをアプリケーション・ コンテキストと呼ぶ。コネクション・プール構成において、エンド・ コンテキストと呼ぶ。コネクション・プール構成において、エンド・ ユーザーを識別する際に利用することができる。 ユーザーを識別する際に利用することができる。 Copyright© 2008, Oracle. All rights reserved. 46 ファイングレイン監査 監査証跡の例 ■監査証跡の内容(カスタムのイベント・ハンドラを利用しない場合) SQL> SQL> 11 22 33 SELECT SELECT TO_CHAR(timestamp, TO_CHAR(timestamp, 'HH:MI:SS') 'HH:MI:SS') AS AS TIME, TIME, db_user, os_user, db_user, os_user, userhost, userhost, sql_text, sql_text, os_process os_process FROM dba_fga_audit_trail; FROM dba_fga_audit_trail; TIME TIME ------------------06:57:12 06:57:12 06:57:57 06:57:57 DB_USER DB_USER ----------------SCOTT SCOTT SCOTT SCOTT OS_USER OS_USER ----------------applusr applusr applusr applusr USERHOST USERHOST ------------------jpdel1387 jpdel1387 jpdel1387 jpdel1387 SQL_TEXT SQL_TEXT --------------------------------------------------------------------------------------select select ** from from order_items order_items select order_id, select order_id, card_no card_no from from order_items order_items OS_PROCESS OS_PROCESS ------------------28081 28081 29315 29315 SQL> SQL> ユーザー情報 SQL文 処理を行ったユーザーの情報 実際に実行されたSQL文 ・処理が監査条件に合致した場合、処理を行ったユーザーの詳細情報が ・処理が監査条件に合致した場合、処理を行ったユーザーの詳細情報が SQL文とともに SQL文とともにfga_log$ fga_log$内部表に記録される 内部表に記録される ・・fga_log$ fga_log$の内容は、 の内容は、DBA_FGA_AUDIT_TRAIL DBA_FGA_AUDIT_TRAILビューを利用して確認する ビューを利用して確認する Copyright© 2008, Oracle. All rights reserved. 47 さらに強力な監査 Oracle Audit Vault Copyright© 2008, Oracle. All rights reserved. 48 監査ログに対する要望 1. 対象の監査ログを確実に収集すること 2. 増加し続ける監査ログに対する拡張性があること 3. 監査ログの保全 – 4. 改ざん防止 より高度な分析と、監査人による監査を視野に入れたレ ポーティング – 適切に活用する これらを満たす監査ログ・ソリューション製品 Oracle Audit Vault Copyright© 2008, Oracle. All rights reserved. 49 Oracle Audit Vault とは ログ収集 ログ収集 ログ保全 ログ保全 監査ログ格納用 Oracle Database Oracle 9i Oracle Database R2 Database 10g R1 監査ログの収集 複数の監査ソース Oracle Database 11g R1 Oracle Database 10g R2 監査ログの保全 Database Vault 効率的なログ管理 リアルタイム監視 レポート作成 Oracle Partitioning Oracle Advanced Security 監査担当者 監査ポリシーの適用 Sybase ASE 監査ポリシーの一元管理 監査ログ 通信暗号化 SQL Server 2000 SQL Server 2005 ログ分析 ログ分析 分析用 スキーマ BIツールによる 詳細な分析 DB2 Oracle Business Intelligence Oracle Database の監査 監査ログを一箇所に収集し 監視、レポーティング、 機能により漏れなくログを取得 安全かつ効率的に管理 高度な分析が可能 Copyright© 2008, Oracle. All rights reserved. 50 Oracle Audit Vault 主な特徴 ログ収集 ログ収集 ログ保全 ログ保全 ログ分析 ログ分析 確実な監査 – Oracle Database の監査機能で取得した監査ログを収集するため、 取りこぼすことがありません。 監査ポリシーの一元管理 – 複数の監査ソース・データベースの監査ポリシーを一元管理(確認・変更・適 用)することが可能です。 複数監査ソースの監査ログの一元管理 – 複数の監査ソース・データベースで取得した各々の監査ログを一箇所に 収集し、一元的に管理します。 監査ログの安全かつ効率的な管理 – 一箇所に収集した監査ログは、管理者に対してもアクセス制御、通信とバ ックアップの暗号化機能、および Partitioning による拡張性を備えること で、安全かつ効率的な管理が可能です。 モニタリング、レポーティング – 疑わしい操作をリアルタイムに監視するアラート機能、収集した監査ログ から用途に応じた情報を抽出するレポーティング機能を実装しています。 – Oracle BI と連携することによって、レポーティング機能よりも詳細かつ高 度な分析を行うこともできます。 Copyright© 2008, Oracle. All rights reserved. 51 ログ分析 ログ分析 柔軟なレポート機能 Web上でのレポート参照・作成 事前準備された定型レポート(システム管理・データアクセス・例外等) 任意の重要な監査イベントのアラート表示設定 経済産業省「システム管理基準 追補版(財務報告に係るIT 統制ガイダンス) レポート作成 アラート表示 監査担当者 Copyright© 2008, Oracle. All rights reserved. 52 アクセス制御 ネットワークのアクセス制御 データベースのアクセス制御 データベース管理者のアクセス制御 Copyright© 2008, Oracle. All rights reserved. 53 データの暗号化 通信データの暗号化 格納データの暗号化 Copyright© 2008, Oracle. All rights reserved. 54 通信データの暗号化 EE Advanced Security Oracle Advanced Securityによる通信の暗号化 佐藤さん Oracle Database 盗聴者 SSL 鈴木さん Application Server データベース間の 通信を暗号化 データベース - アプリケーション間 通信を暗号化 データベース - クライアント間通信を暗号化 Copyright© 2008, Oracle. All rights reserved. Oracle Database 55 格納データの暗号化 機密性の高い情報のより高度な保護が可能 – – – – – データを列レベルで暗号化して格納 データベース管理者からも秘匿可能 データ・ファイルが窃取された場合にも有効 サーバーからデータファイルをコピーされる バックアップメディアを盗まれる サーバー側に実装 – あらゆるアプリケーションから利用可能 Copyright© 2008, Oracle. All rights reserved. 56 格納データの暗号化 社員番号 社員名 入社日 給与 7369 SMITH 1980-12-17 mCJs8Aak 800 7499 ALLEN 1981-02-20 p$hv/WiM 1600 7521 WARD 1981-02-22 V%Jsa6aU1250 7566 JONES 1981-04-02 l4gE#WaM2975 機密性の高いデータを暗号化 暗号化鍵 Copyright© 2008, Oracle. All rights reserved. 57 Oracle Databaseの暗号化機能 暗号化ツールキット – – – PL/SQLパッケージで暗号化/複合化を行う Oracle9i : DBMS_OBFUSCATION_TOOLKIT Oracle10g : DBMS_CRYPTO Transparent Data Encryption – おすすめ! SE EE 暗号/復号処理はデータベースで透過的に実行 アプリケーションを改修する必要無し – Oracle Database 10g R2 Enterprise Edition + Oracle Advanced Security オプション Copyright© 2008, Oracle. All rights reserved. 58 暗号化ツールキットの処理の流れ SE 予め、各パッケージのプロシージャを使用して、暗号化用/ 復号化用のファンクションを作成しておきます。 暗号化してデータを挿入 SQL> INSERT INTO customers(cust_id) VALUES (encrypt_function('xxxxxx')); 復号化してデータを取得 SQL> SELECT decrypt_function(cust_id) FROM customers; Copyright© 2008, Oracle. All rights reserved. 59 暗号化ツールキットの注意点 アプリケーションの書き換えが必要 暗号化されたデータはバイナリ文字列になる →列のデータ型はRAW型/BLOB型に 暗号化された列に対して索引が事実上使用できない 暗号化対象データの長さは8バイトの倍数のみ – AES暗号化の場合は16バイト – 不足分のハンドリング DBMS_OBFUSCATION_TOOLKITは自前で調整(0で埋め る等) DBMS_CRYPTOはAPIのオプションで制御 Copyright© 2008, Oracle. All rights reserved. 60 データファイルの暗号化 EE Transparent Data Encryption (TDE) 解読可能 L サーバープロセス内で、列暗号KEYを 用いてデータを暗号化/復号化 SQ サーバープロセス IN 暗号化/復号化処理は サーバプロセス内で 自動的に実行される ため、クライアント側 で運用中に意識する 必要は無い SE SE R LE T/ C U T PD A TE マスターKEYによって列暗号KEYを 暗号化することで二重にデータを保護 SQL> insert into CREDIT (ID,CARD_NO) values (111,’12345678’); SQL> commit; SQL> select ID,CARD_NO from CREDIT where ID=111; ID CARD_NO ---- -------------111 12345678 ディクショナリ 暗号化 (Encrypt) 復号化 (Decrypt) データの操作は通常の SQLによって実行可能 導入に際し、従来の アプリケーションを改修 する必要無し! 列暗号 KEY マスターKEY マスターKEY #strings /oracle/app/oradata/users.dbf CA5W %O=[N 'E:N, , I f :K9J @YPA "79A 解読不可能 +¥O¥ Wallet データベース (users.dbfデータファイル) Copyright© 2008, Oracle. All rights reserved. 平文データ 暗号化データ 61 データファイルの中を見ると・・・ アクセス制御により、アプリケーションからのデータ参照を保護しても・・・ データファイル、バックアップファイル等が除かれると・・・ Copyright© 2008, Oracle. All rights reserved. 62 データファイルの暗号化 従来よりデータを暗号化することは可能でしたが、「データの格納」、「データの参照」それぞに PL/SQLのファンクションを呼び出す必要がありました。 →アプリケーションの変更が必要。 TDE:透過的なデータ暗号化方法。アプリケーションの変更は不要。 create table orders_tde ( customer_name varchar2(30), used_credit_card char(19) encrypt ); ? Copyright© 2008, Oracle. All rights reserved. 63 Enterprise Managerによるセキュリティ管理 Copyright© 2008, Oracle. All rights reserved. 64 ポリシー・ライブラリ 200以上のポリシーが事前定義済み – Oracleのセキュリティ・コンサルタントのノウハウを集約 Copyright© 2008, Oracle. All rights reserved. 65 ポリシー違反の検出 Grid Control が収集した構成情報とポリシーをマッチング 違反を検出した場合、一覧画面で管理者に通知 セキュリティが脆弱な部分を Enterprise Manager が自動的に検出 Copyright© 2008, Oracle. All rights reserved. 66 コンプライアンス・スコアの算出 ポリシー違反の数と重大度で評価 – – 0%∼100%の数値でセキュリティ遵守度を表現(値が高いほど良い) 数値はリポジトリに格納され、時系列で参照可能 コンプライアンス・スコア(%)の計算式 1 - (重大度 x 重要性 x ポリシー違反ターゲットの割合) 重大度 (severity) – ポリシー毎に固定 – 情報、警告、クリティカルの3段階 重要性 (importance) – 管理ターゲット毎に管理者が指定可能 – 高、標準、低の3段階 Copyright© 2008, Oracle. All rights reserved. 67 コンプライアンス・ホスト EE Configuration Management ホスト一覧にコンプライアンス・スコアを表示 Copyright© 2008, Oracle. All rights reserved. 68 日本オラクル株式会社 無断転載を禁ず この文書はあくまでも参考資料であり、掲載されている情報は予告なしに変更されることがあります。 日本オラクル社は本書の内容に関していかなる保証もいたしません。また、本書の内容に関連したいかなる損害についても責任を 負いかねます。 Oracle、PeopleSoft、JD Edwards、及びSiebelは、米国オラクル・コーポレーション及びその 子会社、関連会社の登録商標です。その他の名称はそれぞれの会社の商標の可能性があります。
© Copyright 2024 ExpyDoc