oracle database vaultのご紹介
Post on 16-Apr-2017
354 views
TRANSCRIPT
Copyright © 2014 Oracle and/or its affiliates. All rights reserved. |Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
Oracle Database Vault のご紹介
日本オラクル株式会社
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. | 2
以下の事項は、弊社の一般的な製品の方向性に関する概要を説明するものです。また、情報提供を唯一の目的とするものであり、いかなる契約にも組み込むことはできません。以下の事項は、マテリアルやコード、機能を提供することをコミットメント(確約)するものではないため、購買決定を行う際の判断材料になさらないで下さい。オラクル製品に関して記載されている機能の開発、リリースおよび時期については、弊社の裁量により決定されます。Oracleは、米国オラクル・コーポレーション及びその子会社、関連会社の米国及びその他の国における登録商標または商標です。他社名又は製品名は、それぞれ各社の商標である場合があります。
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
Oracle Database Vault
3
特権ユーザのための強制アクセス・コントロール
アプリケーション
select * from finance.customers
職務分掌 特権ユーザ( SYS, DBA 権限)であっても情報にはアクセスさせない
透過的 既存アプリケーションの変更不要、どの経路からのアクセスも一律に制御
厳密 ユーザー、クライアント情報( IP アドレス、アプリ名)、時間を組み合
わせたポリシー設定
管理者(特権ユーザ)
人事情報
顧客情報
財務情報
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
厳密な権限&ルールの設定により不正アクセスを遮断
4
ルール1 ( アクセス元 )IP Address: 192.168.1.XXXAPP Name: JDBC
アプリケーション用ルール
ルール1 ( アクセス元 )IP Address: 192.168.1.201DB User: ADMIN01
ルール 2 ( 時間 )09:00 ~ 19:00
開発者用ルール
select * from crm.customer
09:00 ~ 19:00 の間
開発者
ユーザ・オブジェクト表 - Customer - Order索引プロシージャ
アプリケーションユーザー
ユーザオブジェクト : 認可
ユーザオブジェクト : 認可
ユーザオブジェクト : 非認可
select * from crm.customer
select * from crm.customer
19:00 ~ 9:00 の間
select * from crm.customer
管理者
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
Validation されたアプリケーション用スクリプトを提供
• 特権ユーザがアプリケーションのデータをアクセスすることを防ぐ
• それぞれのアプリケーションに合わせた Validation 済のスクリプトを提供
• 実行するだけで DV 環境構築
• アプリケーションからは透過的にアクセス制御
• 5% に満たないオーバーヘッド
5
Database Vault による特権管理をすぐに実装
Oracle E-Business Suite 12/11i
Oracle PeopleSoft
Oracle JD Edwards EnterpriseOne
SAP
Oracle Retail Applications (Retek)
Oracle Financial Services Applications (i-Flex)
Oracle Utilities Applications
Oracle Enterprise Taxation Management
Finacle (Infosys)
Oracle Siebel
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
レルム ( Realm )
6
スキーマ、オブジェクトおよびロールを保護する領域
人事情報
顧客情報
財務情報 データベース管理者
select * from finance.customers
セキュリティ管理者
アプリケーション管理者
顧客管理アプリケーション
• ユーザのオブジェクト ( 表やビュー、パッケージ等 ) を保護する論理的な領域• SYS や SYSTEM ユーザ、 SYSDBA や DBA 権限などの特権アクセスはデフォルト拒否される• 認可されたユーザーのみが、そのレルム内のオブジェクトにアクセス可能• レルムごとにデータの責任を持つオブジェクト管理者を作成することができる
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
必須レルム ( Mandatory Realm)
7
より厳格に、抜け漏れのないデフォルト遮断• オブジェクトの所有者、オブジェクト権限を与えられているユーザーでも、
レルム認可されていない限りはアクセスできない 通常レルム 必須レルム (12c
~ )
HR レルム
HR ユーザ ( 所有者 )
レルム所有者 : なし
レルム参加者 : なし
Customer 表の Select 権限を持つユーザ
データベース管理者
レルム認可されていないユーザ
select * from hr.customers
HR レルム
HR ユーザ ( 所有者 )
レルム所有者 : なし
レルム参加者 : なし
Customer 表の Select 権限を持つユーザ
データベース管理者
レルム認可されていないユーザ
select * from hr.customers
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
レルム認可ユーザの違い• レルム所有者
– レルム内のオブジェクトに対してのオブジェクト権限の付与・取り消しを行うことができる– レルム内のオブジェクトにアクセスすることができる (別途、オブジェクト権限が必要)
• レルム参加者– レルム内のオブジェクトにアクセスすることができる (別途、オブジェクト権限が必要)
8
HR レルム
customer表
SELECTUPDATEINSERTDELETE
HR ユーザ(HR レルム所有者 )
APP ユーザ(HR レルム参加者 )
DEV ユーザ(HR レルム参加者 )
grant select on customer to APP
※ レルムに対してレルム所有者やレルム参加を登録できるのは DV_OWNER か DV_ADMIN ロールがあるユーザ
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
レルムの動作フロー
9
レルムで保護されたオブジェクトへのアクセスか? NO
適切な権限を持っているデータベース・アカウントによる SQL 実行
アクセスしているユーザはレルム所有者または参加者か?
レルムのルールを満たしてるか?(ルールがない場合、ルールが enable
か ? )
(コマンドルールがある場合)コマンドルールのルールを満たしている
か?
Access OK
Access OK
NO Access NG
Access NG
Access NG
NO
NO
Yes
Yes
Yes
Yes
適切な権限とは、
システム権限 (DDL) 、または、
オブジェクト権限 (DML) がアクセスするオブジェクトに対して付与されていることが前提
そもそもそれが付与されていなければ、レルムにアクセスする前に権限がないということになる
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
ルール・セット ( Rule Set )
10
人事情報
顧客情報
財務情報データベース管理者
セキュリティ管理者
アプリケーション管理者
顧客管理アプリケーション
• レルムやコマンドルールなどに関連づけられる1つ以上のルールの集合体• データベースで取得できる情報を使用して、 TRUE または FALSE で評価される条件
– Ex) IP アドレスやアプリケーション名などのセッション情報、月日や曜日、時間の情報等が使用可能
• ルールを構成する要素としてファクタやアイデンティティを使用する
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
ファクタ ( Factor )
11
• ユーザ情報や IP アドレスなど Database Vault が認識できる名前付きの変数や属性• DVF.F$ ファクタ名で参照可能• ルールセットでの判定条件の要素として使われる• IP アドレスやサーバ情報等を取得するデフォルトのファクタが用意されている• ユーザ自身の独自ファクタを作成することもできる
ファクタ名:CLIENT_IP
取得メソッド:UPPER(SYS_CONTEXT('USERENV','IP_ADDRESS'))
SELECT DVF.F$CLIENT_IP FROM dual;F$CLIENT_IP---------------------------------------10.185.151.4
実行結果
ファクタ名:Get_Time
取得メソッド: TO_CHAR(SYSDATE,'hh24:mi:ss')
SELECT DVF.F$GET_TIME FROM dual; F$GET_TIME---------------------------------------16:15:38
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
ルールに違反したアクセスはDB の監査ログに記録される
ルール・セットの構成例
12
例)接続先を限定したルールセット
ルール 1 :IP アドレスが 192.168.1.xxx からのアクセスである
ルール 2 :接続ユーザが ADMIN である
ルールセット:接続先 (IP アドレスとユーザ名)で限定する
ルール 1 の条件式: ファクタ :
CLIENT_IP Like ‘ 192.168.1.%’
ルール 2 の条件式: ファクタ :
SESSION_USER = ADMIN
レルム
コマンドルールセキュアアプリケーションロール
ルールの紐づけ先
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
コマンドルール ( Command Rule )
13
人事情報
顧客情報
財務情報
権限付与済みDBA
Alter table accounts drop column
DBA
オフショア
DBA
Truncate table procurement.orders
• SQL コマンドの発行を、ルール・セットに基いて制限する• ルール・セットが TRUE の場合のみ、 SQL コマンドの実行が可能• SQL コマンドの実行権限 ( システム権限やオブジェクト権限 ) は別途必要• 対象を特定のオブジェクトに対する SELECT やすべてのオブジェクト共通にすることも可能
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
セキュア・アプリケーション・ロール ( Secure Application Role)
14
Create TableCreate IndexSELECT, INSERT to EMP 表DELETE to DEPT 表
セキュア・アプリケーションロール
ルール・セット
ユーザ
• 通常のロールにルール・セットを設定することができる• ユーザへのセキュア・アプリケーション・ロールの設定は PL/SQL で制御する• ルール・セットの条件を満たしていれば、ユーザにセキュア・アプリケーション・ロール
が付与される• セキュア・アプリケーション・ロールへの権限付与は、権限は通常のロールの設定を同じ
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
セキュア・アプリケーション・ロールの使い方
15
RESOURCE
SELECT ANY DICTIONARY
ALTER SYSTEM
ALTER DATABASE
セキュア・アプリケーション・ロール
CHECK_IPCONNECTSCOTT
ユーザ
ルール 1 :IP アドレスが 192.168.1.1 から192.168.1.99 のアクセスである
SQL> CONNECT SCOTT/TIGER;接続されました。
EXEC DBMS_MACSEC_ROLES.SET_ROLE(‘CHECK_IP’);PL/SQL プロシージャが正常に完了しました。
SCOTTユーザ CONNECT
RESOURCE
SELECT ANY DICTIONARY
ALTER SYSTEM
ALTER DATABASE
ユーザが元々保持している権限
セキュアアプリケーションロールによって新たに付与された権限
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
必要な設定はすべて Enterprise Manager12c に統合
16
Database Vault の起動状態やポリシーの設定・反映状況
Data Pump やパッチ適用時に必要なロールはプリセット済み
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
DV 環境でのユーザの役割
17
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
インストール時に作成される Database Vault 用ロール
Database Vault の管理に必要な操作(レルムの作成等)をすべて実施することができる レルム認可(レルム所有者・参加者)をレルムに設定することができる Database Vault の監視、監査レポートを実行することができる SYS ユーザのオブジェクトへの SELECT が可能 DV_OWNER 、 DV_ADMIN のロールを別のユーザに付与することができる
DV_OWNER
Database Vault の管理に必要な操作(レルムの作成等)をすべて実施することができる レルム認可(レルム所有者・参加者)をレルムに設定することができる Database Vault の監視、監査レポートを実行することができる SYS ユーザのオブジェクトへの SELECT はできない DV_ADMIN のロールを別のユーザに付与することはできない
DV_ADMIN
必須
18
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
インストール時に作成される Database Vault 用ロール
データベース・ユーザとプロファイルの作成や管理を行うことができる ユーザに CREATE SESSION 権限を付与できる DV_ACCTMGR だけが、このロールを別のユーザに付与することができる
DV_ACCTMGR
CREATE ANY / ALTER ANY /DROP ANY / EXECUTANY / SELECT ANY 等のシステム権限を持つ ただし、上記の権限を使用できるのはレルムの参加者か所有者である場合のみ 複数のレルム内に跨るオブジェクトの作成・管理が必要な場合に使われる SYS ユーザが付与することができる
DV_REALM_OWNER
従来の RESOURCE ロールと同じシステム権限を持つ レルム内で一般に使用される表、ビュー、トリガー、シノニムおよびその他のオブジェクトの作成に使われる SYS ユーザが付与することができる
DV_REALM_RESOURCE
必須
19
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
インストール時に作成される Database Vault 用ユーザ
20
以下、 Database Vault を構成する上にシステム的に必要な情報を持つ Database Vault の構成情報に関連するビュー Database Vault で使用されるパッケージやファンクション Database Vault で発生する監査ログ
DVSYS
ファクタで構成される情報
DBF
※ 上記のユーザは、 Database Vault を構成するにおいて必要なユーザであり、ロックされている 基本的には、ロックを解除して使用することはない
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
Database Vault 環境で必ず必要となるユーザ
21
Database Vault 所有者 DV_OWNER ロールを持ち、 Database Vault 環境を管理するユーザレルムやルール・セットの作成、レルム認可の設定など Database
Vault に 関連した操作が可能
システム権限やオブジェクト権限は持っていない(付与できない)ユーザ表は参照できない
Database Vault アカウント・マネージャ DV_ACCTMGR ロールを持ち、ユーザの作成・変更・削除が実行でき
るユーザシステム権限やオブジェクト権限は持っていない(付与できない)CREATE SESSION 権限のみを付与できるユーザ表は参照できない
セキュリティ
管理者
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
Database Vault 環境で制限される特権ユーザ
SYS, SYSTEM ユーザ、 DBA 権限を付与されたユーザ等の特権ユーザ
従来通り可能なアクションデータ・ディクショナリビューの参照システム権限、レルム保護されていないオブジェクト権限の付
与AWR スナップショット、 Analyze コマンドの実行レルム保護されていないオブジェクトへのアクセス、監査設定
制限されるアクションユーザの作成・変更・操作は不可レルム保護されているオブジェクトへのアクセスExport や Data Pump コマンドによるデータのエクスポートデータベースジョブのスケジュールレルム保護されているオブジェクトに対しての監査設定
リソース管理者
22
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
Database Vault 環境での一般ユーザ
23
従来と同じ一般ユーザレルム参加者システム権限はリソース管理者から付与される( NEW ) オブジェクト権限は、レルム所有者から付与
される
( NEW )レルム内のオブジェクトを管理するユーザレルム所有者レルム内のオブジェクトへのアクセス権限を一般ユー
ザへ 付与・取り消しできる
オブジェクト所有者と異なっていても OK
オブジェクト
管理者
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
Database Vault による権限分掌と相互監視
24
従来
特権ユーザ
HR ユーザ
・ユーザ作成・権限付与・ HR 表への 直接アクセス・ HR 表への監査
SCOTTユーザ
・ HR 表への オブジェクト権限を付与
Database Vault 環境
リソース管理者(特権ユーザ)
セキュリティ管理者
オブジェクト管理者
( HR ユーザ)
ユーザ作成レルム所有者に任命
システム権限付与アクションを監査
オブジェクト権限付与
ユーザ作成レルム参加者に任命
SCOTTユーザ
システム権限付与
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
12c新機能Privilege Analysis
25
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
Privilege Analysis
26
不正アクセスの原因となる過度な権限付与を検出
ユーザーやロールに付与されたシステム権限、オブジェクト権限の使用・未使用を洗い出してレポーティングアプリケーションや開発者・管理者に本当に必要する権限のみを付与最小権限の原則を実現し、不正アクセスの未然防止に
PrivilegeAnalysis
Create …Select …Update …DBA roleAPPADMIN role
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
権限分析の対象
27
実行されたシステム / オブジェクト権限の洗い出し
ロール指定したロールの権限の使用状況を分析する (複数指定可 )
条件指定指定した条件に適合する場合、権限の使用状況を分析する
( 特定のユーザーやアプリケーション等 )
ロール+条件指定指定したロールかつ条件に適合する場合、権限の使用状況分析する
データベースデータベース内のすべての権限の使用状況を分析する
(SYS ユーザーを除く )
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
権限分析の手順
28
DBMS_PRIVILEGE_CAPTURE によるキャプチャの開始
DBMS_PRIVILEGE_CAPTURE.CREATE_CAPTUREname ポリシー名description 説明 (任意 )type いずれか一つ選択
DBMS_PRIVILEGE_CAPTURE.G_DATABASE DBMS_PRIVILEGE_CAPTURE.G_ROLE DBMS_PRIVILEGE_CAPTURE.G_CONTEXT DBMS_PRIVILEGE_CAPTURE.G_ROLE_AND_CONTEXT
roles Ex) role_name_list('role1', 'role2')condition Ex) SYS_CONTEXT(''USERENV'', ''SESSION_USER'')=‘SCOTT’
DBMS_PRIVILEGE_CAPTURE.ENABLE_CAPTURE (’ポリシー名’)• 分析ポリシーの有効化
• 分析ポリシーの作成
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
権限分析の手順
29
キャプチャの停止~レポーティング
EXEC DBMS_PRIVILEGE_CAPTURE.DISABLE_CAPTURE (’ポリシー名’)
• 分析ポリシーの無効化
EXEC DBMS_PRIVILEGE_CAPTURE.GENERATE_RESULT (’ポリシー名’)
• 分析レポートの作成 ( 実行後、専用のビューで分析結果を参照可能 )
EXEC DBMS_PRIVILEGE_CAPTURE.DROP_CAPTURE (’ポリシー名’)
• 分析レポートの削除 ( 作成したレポートの情報を含めて削除される )
キャプチャ実行中
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
例 ) ユーザーが Any 権限を使用していないか調査
30
BEGIN DBMS_PRIVILEGE_CAPTURE.CREATE_CAPTURE( name => 'ANY_priv_analysis_pol', type => DBMS_PRIVILEGE_CAPTURE.G_CONTEXT, condition => 'SYS_CONTEXT(''USERENV'', ''SESSION_USER'')=''APP_USER''');END;/
EXEC DBMS_PRIVILEGE_CAPTURE.ENABLE_CAPTURE ('ANY_priv_analysis_pol');
-----処理実行 -----
EXEC DBMS_PRIVILEGE_CAPTURE.DISABLE_CAPTURE ('ANY_priv_analysis_pol');
EXEC DBMS_PRIVILEGE_CAPTURE.GENERATE_RESULT ('ANY_priv_analysis_pol');
SELECT USERNAME, SYS_PRIV, OBJECT_OWNER, OBJECT_NAME FROM DBA_USED_PRIVS;USERNAME SYS_PRIV OBJECT_OWNER OBJECT_NAME---------------- ---------------------------- ----------------------- -----------------------APP_USER SELECT ANY TABLE HR EMPLOYEESAPP_USER CREATE SESSIONAPP_USER SYS ORA$BASEAPP_USER SYS DUAL
調査対象は、 APP_USER
APP_USER がSELECT ANY TABLE 権限でHR ユーザーの EMPLYEES 表にでアクセスした履歴が判明
-> SELECT ANY TABLE は必要ないのでは?
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
例 ) DBA ロールの使用状況を調査する
31
BEGIN DBMS_PRIVILEGE_CAPTURE.CREATE_CAPTURE( name => 'dba_role_analysis', type => DBMS_PRIVILEGE_CAPTURE.G_ROLE, roles => role_name_list('dba'));END;/EXEC DBMS_PRIVILEGE_CAPTURE.ENABLE_CAPTURE ('dba_role_analysis');
-----処理実行 -----
EXEC DBMS_PRIVILEGE_CAPTURE.DISABLE_CAPTURE ('dba_role_analysis');EXEC DBMS_PRIVILEGE_CAPTURE.GENERATE_RESULT ('dba_role_analysis');
調査対象は、 DBA ロール
SELECT USERNAME, USED_ROLE,SYS_PRIV,PATH FROM DBA_USED_SYSPRIVS_PATH;
USER USED_ROLE SYS_PRIV PATH---------- ---------------------------- ----------------------- -----------------------SCOTT OLAP_DBA DROP ANY TABLE SYS.GRANT_PATH(SCOTT,DBA,OLAP_DBA)
SELECT USERNAME, SYS_PRIV, OBJECT_OWNER, OBJECT_NAME FROM DBA_USED_PRIVS
USERNAME SYS_PRIV OBJECT_OWNER OBJECT_NAME---------------- ---------------------------- ----------------------- -----------------------SCOTT SELECT ANY TABLE HR TEST
SCOTT ユーザーが、DROP ANY TABLE 権限を使用して(DBA-EM - >OLAP_DBA ロール配下 )HR ユーザーの TEST 表を削除している
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
権限分析の実行例
32
ポリシーの作成、スコープの定義
対象範囲を指定この場合はデータベース内すべて(※SYS を除く )
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
権限分析の実行例
33
キャプチャの開始
キャプチャする期間の指定
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
権限分析の実行例
34
キャプチャの終了~レポート生成
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
Privilege Analysis の専用ビュー
35
結果テーブル 説明DBA_USED_PRIVSDBA_UNUSED_PRIVS
すべての使用 /未使用の権限。(システム権限、ユーザー権限、オブジェクト権限と
PUBLIC権限を含める)DBA_USED_OBJPRIVS DBA_UNUSED_OBJPRIVSDBA_USED_OBJPRIVS_PATHDBA_UNUSED_OBJPRIVS_PATH
すべての使用 /未使用のオブジェクト権限。「 PATH」を付けてのテーブルは権限付与もリストする。
DBA_USED_SYSPRIVS DBA_UNUSED_SYSPRIVSDBA_USED_SYSPRIVS_PATHDBA_UNUSED_SYSPRIVS_PATH
すべての使用 /未使用のシステム権限。「 PATH」を付けてのテーブルは権限付与もリストする
DBA_USED_PUBPRIVS すべての使用した PUBLIC権限。DBA_USED_USERPRIVS DBA_UNUSED_USERPRIVSDBA_USED_USERPRIVS_PATHDBA_UNUSED_USERPRIVS_PATH
すべての使用 /未使用のユーザー権限。「 PATH」を付けてのテーブルは権限付与もリストする
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
未使用のシステム権限
36
DBA_UNUSED_SYSPRIVS_PATHユーザ名 未使用のシステム権限 システム権限の付与パス
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
未使用のオブジェクト権限
37
DBA_UNUSED_OBJPRIVS_PATH
ユーザ名未使用のオブジェクト権限
付与されているオブジェクト権限の対象
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |
使用されたシステム / オブジェクト権限
38
DBA_USED_PRIVS
Copyright © 2016 Oracle and/or its affiliates. All rights reserved. |