Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Oracle Database Technology Night #46 今一度基本に立ち戻ろう データベースのセキュリティ対策

Oracle Database Technology Night #46 今一度基本に立ち戻ろう データベースのセキュリティ対策

Oracle Databaseには暗号化、アクセス制御、監査といった様々なセキュリティ機能を有しています。
それらの機能の特徴や設定方法、実際にどういう状況で使用するのが効果的なのかなど、数々の実システムで培ってきたナレッジを網羅的にここで公開します。

140494d272a4d89883a94fdfdb29dea2?s=128

oracle4engineer
PRO

July 21, 2021
Tweet

Transcript

  1. 2021年7月20日 日本オラクル株式会社 今一度基本に立ち戻ろう データベースのセキュリティ対策 Database Security

  2. 今後求められるセキュリティ対策と日本の取り組むべき点 考慮点 ゼロトラストセキュリティの考え方 セキュリティ対策例 日本企業の状況 ネットワーク • 通信を監視し、未許可のクラウドサービスの 利用を制限 •

    CASB • Cloud Proxy • WAF グローバルより 注力している デバイス • デバイスの認証を常に実施 • 全てのデバイスの保護を徹底 • EDR、EPP • MDM グローバルと同様 IDアクセス管理 • ID・ユーザを必ず検証 • 必要に応じて多要素認証(MFA)を実施 • IAM • PAM • MFA グローバルより 対応が遅れている アプリケーション • すべてのアクセスを制限し、不正操作を監視 • CASB、UEBA • 標的型メール対策 • SIEM、SOAR グローバルと同様 データ • データが漏洩・改ざんされないように保護 • 必要最小限の権限付与 • 暗号化 • アクセス制御 グローバルより 対応が遅れている Copyright © 2021, Oracle and/or its affiliates 2 出典: Oracle and KPMG Threat Report 2020 安全なクラウドセキュリティ環境を整備するためには、ネットワークセキュリティだけでなく、 ゼロ・トラスト・セキュリティな対策が必要となります。
  3. データ・セキュリティの施策と各種ガイドライン記載事項 3 Copyright © 2021, Oracle and/or its affiliates 名称

    セキュリティ強化への取り組み 対象 改正個人情報 保護法 2015年9月 :法律が成立・公布 2016年11月:ガイドラインが公開。保護するべき個人情報が明確化。通則編 に、アクセス制御、暗号化、監査・検知、マスキングが記載。 個人情報を保持している 事業者、及び業界団体 PCIDSS 2004年12月:PCI DSS制定 2013年11月 :v3.0公開。暗号化、アクセス制御、監査、マスキング、構成管理が記載 クレジットカードを 取り扱う企業 EU一般データ 保護規則 (GDPR) 1995年10月:EUデータ保護条令が採択 2016年5月 :EU GDPRが発布。暗号化・伏字化、アクセス制御、監査・検知が記載 EUの個人データを収集、 処理を行う事業者 サイバーセキュリティ経営 ガイドライン (経済産業省) 2015年12月:ガイドライン公開。多層防御と重要データ(データベース、 ファイル)への暗号化、アクセス制御、監査・監視が記載 2017年11月: v2.0にバージョンアップ 企業の経営者 政府機関等の情報 セキュリティ対策の ための統一基準 2005年9月:政府機関の情報セキュリティ対策のための統一基準 公開 2016年8月 :平成28年度版公開。データベースの項目が新たに追加。 管理者権限分割、アクセス制御、監査、暗号化が記載 政府機関等 監査 アクセス制御 暗号化
  4. 情報保護における課題と解決策 1. リスクのある設定を自動検知 • セキュリティ設定のアセスメント、アカウントのリスク評価 • 機密情報の発見 機密データが暗号化されていない データ不可視化 •

    機密データの暗号化 • 開発・テスト環境のマスキング 管理者権限の不正利用、 個人情報への過大な可視性 データのアクセス制御 / 権限分掌 • データベース管理者の職務分掌 • 作業に不要な機密データへのアクセスを制御 4 Copyright © 2021, Oracle and/or its affiliates 暗号化 アクセス制御 不正なアクセスを監視できていない 操作ログの取得・保全 • 異常操作の発見&警告 • ログの改竄・消去の防止 監査
  5. Oracle Databaseの主なセキュリティ機能を利用できるEditionと必要なOption 5 Oracle Database機能 利用可能Edition, Option 暗号化 Transparent Data

    Encryption Enterprise Edition + Advanced Security ネットワーク暗号化 All Edition Data Masking and Subsetting EE + Data Masking Pack and Subsetting アクセス制御 Virtual Private Database EE Label Security EE + Label Security Data Redaction EE + Advanced Security Database Vault EE + Database Vault 監査 Unified Audit All Edition Extra Data Safe All Edition Database Security Assessment All Edition Copyright © 2021 Oracle and/or its affiliates.
  6. サービスごとに利用可能なオプション機能 Database Cloud Serviceでのセキュリティ機能 Copyright © 2021 Oracle and/or its

    affiliates. 6 DB-SE Exadata DB-HP Autonomous Database DB-EE DB EP Advanced Security Label Security Database Vault OLAP 一部機能 制限あり Bare Metal VM Infiniband Offload SQL to Storage Smart Flash Cache/log Storage Index IORM/Network RM In-Memory Fault Tolerance ExaFusion Columnar Flash Cache Real Application Clusters Active Data Guard Database In-Memory Advanced Analytics Spatial & Graph Database Lifecycle Management Pack Cloud Management Pack for Oracle Database Bare Metal VM Bare Metal VM Bare Metal VM Multitenant Partitioning Advanced Compression Oracle Database Enterprise Edition, Diagnostics and Tuning Packs , Real Application Testing Data Masking and Subsetting Pack , Virtual Private Database Oracle Database Standard Edition 2, Transparent Data Encryption , Unified Audit , Data Safe Database Lifecycle Management Pack Cloud Management Pack for Oracle Database Database Vault , Label Security , Data Redaction
  7. 1. 暗号化 7 Copyright © 2021 Oracle and/or its affiliates.

  8. 機密データが漏洩するリスク - マルウェアに感染したPCが、DBサーバーのデータファイルを物理的にコピーして外部に流出 - マルウェアに感染したPCが、DBサーバーにログインし、SQLクエリーで論理的に機密データにアクセスし外部に流出 - 内部の正規ユーザーが、DBサーバーのデータファイルを物理的にコピーして盗み出す - 内部の正規ユーザーが、DBサーバーにログインし、SQLクエリーで論理的に機密データにアクセスして盗み出す データベースを暗号化する必要性

    Copyright © 2021, Oracle and/or its affiliates 8 $> strings -a financials.dbf | grep “¥-[0-9]¥{4¥}¥-” 5555-5555-5555-4444 5105-1051-0510-5100 OS ユーザ データベース上の物理ファイル - データ・ファイル - Redo ログファイル - バックアップファイル - エクスポートファイル・・・ 流出してしまったファイル はバイナリエディタ等で データを直接参照される 物理的なデータの漏洩には暗号化で対策 論理的なデータの不正アクセスにはアクセス制御で対策
  9. アプリケーションからは透過的にデータの暗号化・復号することで、既存のアプリケーション (SQL)を改修する必要なし NISTの標準共通鍵暗号方式 AES(128/192/256bit) やARIA/SEED/GOSTなどのアルゴリズムにも対応 Intel AES-NIなどのハードウェア暗号化アクセラレーションに対応した高速な暗号化処理を実現 Oracle Databaseのデータファイルやバックアップファイルの物理的な盗難リスクに対して安全にデータを保護 サービスを停止することなく、データベースをオンラインに保ったまま暗号化への移行をサポート

    様々なOracleテクノロジーと組み合わせた活用 (RMAN, Exadata, RAC, Multi-Tenant, GoldenGate, Data Guard) Transparent Data Encryption (TDE) Copyright © 2021, Oracle and/or its affiliates 9 Disks Exports Off-Site Facilities Backups Applications Clear Data Software Keystore Key Vault OTHER TABLESPACE HCM TABLESPACE HCM TABLESPACE Encrypted Data DF11233 U*1 $5Ha1qui %H1 HSKQ112 A14 FASqw34 £$1 DF@£!1ah HH! DA45S& DD1 Encrypted Network Connection (TLS or Native Encryption) SELECT name,cardnumber FROM credit;
  10. 表領域単位での暗号化 表領域内の表や索引などのオブジェクトはすべて暗号化される データブロックに対するI/Oで暗号化・復号 REDOログ、UNDO表領域、一時表領域、アーカイブログも暗号化される SGAのバッファキャッシュ上は暗号化されていない 暗号化してもデータサイズは増加しない 表領域暗号鍵はデータファイルのヘッダーに格納 暗号列への索引に制限なし ほとんどすべてのオブジェクトが暗号化可能 (BFILEのみ不可)

    既存表領域を暗号化する一括変換のサポート キャッシュヒットの高いSQLは性能への影響を受けず ディスクへのRead/Writeの多いSQLは影響を受ける TDE 表領域暗号化 Copyright © 2021, Oracle and/or its affiliates 10 SGA 表領域暗号化 REDOログ UNDO表領域 Disk I/Oで 暗号化/復号 サーバープロセス SELECT INSERT UPDATE・・・ 表領域暗号鍵 Oracle Keystore 表領域暗号化 マスター鍵
  11. TDEマスター暗号鍵のアーキテクチャ Copyright © 2021, Oracle and/or its affiliates 11 マスター暗号鍵

    表領域 表領域 表領域 表領域暗号鍵 表領域暗号鍵 表領域暗号鍵 Oracle Keystore 各表領域暗号鍵を 暗号化/復号 マスター暗号鍵は、データベースに基本的に1つ - マルチテナント環境の場合は、各PDBごとに自身のマスター暗号鍵を作成することも可能 マスター暗号鍵のデフォルト保管先は、PKCS#11互換のOracle Keystoreのファイルに格納される - Oracle Key VaultやHSM(Hardware Security Device)に格納し、ネットワーク通信で連携することも可能 マスター暗号鍵は、実際にデータを暗号化している表領域暗号鍵を暗号化・復号する マスター暗号鍵をオープンすると暗号化されたデータにアクセスできる マスター暗号鍵を変更すると表領域暗号鍵も変更される Oracle Key Vault またはHSM
  12. SQLで表領域を暗号化 ・復号を一括変換 既存の表領域を暗号化する手間や時間を大幅に短縮 従来では暗号化できなかったSYSTEM, SYSAUX, UNDO, TEMPなどのシステム領域も暗号化することで データベースのフル暗号化が可能 データにアクセス可能なまま表領域を暗号化 -

    Online Encryption Conversion 表領域がオフライン時に暗号化 - Offline Encryption Conversion 表領域の暗号化変換 Copyright © 2021, Oracle and/or its affiliates 12 SALES TABLESPACE HCM TABLESPACE HCM TABLESPACE DF11233U*1 $5Ha1qui%H1 HSKQ112A14 FASqw34£$1 DF@£!1ahHH! DA45S& DD1 Acme 10 1/2/16 Acme 3 1/3/16 Acme 5 1/5/16 Acme 12 1/7/16 Acme 4 1/8/16 Acme 2 1/9/16
  13. オフライン変換 オンライン変換 対象リリース 11.2~ (※11.2, 12.1はパッチ必要) 12.2~ サポートするアルゴリズム AES (128,192,256),

    ARIA, GOST, SEED AES (128,192,256), ARIA, GOST, SEED 実行できるタイミング 表領域がオフライン、またはDBがマウント時 表領域がオンライン時 変換に必要な領域 なし 一時的に変換する表領域と同サイズ システム領域の暗号化 12.2~ 12.2~ 暗号化 ALTER TABLESPACE 表領域名 ENCRYPTION OFFLINE USING 'AES256' ENCRYPT ALTER TABLESPACE 表領域名 ENCRYPTION ONLINE USING ‘AES256’ ENCRYPT FILE_NAME_CONVERT = (‘旧データファイル’, ‘新データファイル') 復号 ALTER TABLESPACE 表領域名 ENCRYPTION OFFLINE DECRYPT ALTER TABLESPACE 表領域名 ENCRYPTION ONLINE DECRYPT FILE_NAME_CONVERT = (‘旧データファイル’, ‘新データファイル') オフライン・オンライン変換の比較 Copyright © 2021, Oracle and/or its affiliates 13 ※オンライン/オフラインとも、データファイル単位でパラレル実行可能
  14. TDEの設定手順 (18c~) Copyright © 2021, Oracle and/or its affiliates 14

    1. 以下のディレクトリにwalletディレクトリを作成 $ORACLE_BASE/admin/<SID>/wallet 2. 初期化パラメータファイルのWALLET_ROOTを指定 ALTER SYSTEM SET WALLET_ROOT="$ORACLE_BASE/admin/<SID>/wallet" SCOPE=spfile 3. Databaseの再起動 4. 初期化パラメータファイルのKEYSTORE_CONFIGURATION を指定 ALTER SYSTEM SET TDE_CONFIGURATION="KEYSTORE_CONFIGURATION=FILE" SCOPE=both 5. CDBにキーストアとマスター暗号鍵を作成 (※シングルDBの場合は、項番9の自動ログインの設定で完了) ADMINISTER KEY MANAGEMENT CREATE KEYSTORE IDENTIFIED BY “パスワード” ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY “パスワード” ADMINISTER KEY MANAGEMENT SET KEY USING TAG ‘タグ名’ IDENTIFIED BY “パスワード” WITH BACKUP 作成が完了すると、$ORACLE_BASE/admin/<SID>/wallet/tde内にewallet.p12というキーストアが作成される 18cからはキーストアのディレクトリ指定は、 WALLET_ROOTパラメータの使用が推奨
  15. TDEの設定手順 (18c~) Copyright © 2021, Oracle and/or its affiliates 15

    6. PDBにログイン 7. (統一モードの場合) CDBをのキーストアをオープンして、PDBのマスター暗号鍵を作成 ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY “パスワード” ADMINISTER KEY MANAGEMENT SET KEY USING TAG ‘タグ名' IDENTIFIED BY "パスワード" WITH BACKUP 8. (分離モードの場合) PDB自身のキーストアを作成・オープンして、PDBのマスター暗号鍵を作成 ADMINISTER KEY MANAGEMENT CREATE KEYSTORE IDENTIFIED BY "パスワード" ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY "パスワード" ADMINISTER KEY MANAGEMENT SET KEY USING TAG 'タグ名' IDENTIFIED BY "パスワード" WITH BACKUP; ※分離モードのキーストアは、 $ORACLE_BASE/admin/<SID>/wallet/<PDBID>/tdeに作成される 9. 自動ログイン・キーストアの作成 (※この設定をしないとデータベース起動時に毎回キーストアを手動でOPENしなければならない) ADMINISTER KEY MANAGEMENT CREATE AUTO_LOGIN KEYSTORE FROM KEYSTORE IDENTIFIED BY "パスワード" ADMINISTER KEY MANAGEMENT CREATE LOCAL AUTO_LOGIN KEYSTORE FROM KEYSTORE IDENTIFIED BY "パス ワード" (自動ログイン・キーストアにアクセスできるサーバーを限定したい場合) ※作成が完了すると、$ORACLE_BASE/admin/<SID>/wallet/tdeにcwallet.ssoという自動ログイン・キーストアが作成される
  16. TDEの設定手順 (18c~) Copyright © 2021, Oracle and/or its affiliates 16

    10. V$ENCRYPTION_WALLETでの確認 SELECT CON_ID, STATUS, WRL_PARAMETER, KEYSTORE_MODE FROM V$ENCRYPTION_WALLET CON_ID STATUS WRL_PARAMETE KEYSTORE_MODE -------- --------- ------------------------------------------------------------ --------------------- 1 OPEN /u01/app/oracle/admin/ora021/wallet/tde/ UNIFED <-- CDBのキーストア 2 OPEN /u01/app/oracle/admin/ora021/wallet/<pdbID>/tde/ ISOLATED <-- 分離モードのPDBのキーストア 3 OPEN UNIFED <-- 統一モードのPDBは表示されない 11. 暗号化された表領域の作成 表領域作成時に赤字の構文を追記する CREATE TABLESPACE 表領域名 DATAFILE ‘データファイル・パス’ SIZE サイズ[M/G] ENCRYPTION USING 'AES256' DEFAULT STORAGE (ENCRYPT)
  17. Oracle Databaseとクライアント間のSQL Netプロトコルの通信を暗号化 サーバーまたはクライアントのそれぞれのsqlnet.oraに以下のパラメータを設定し、組み合わせによって暗号化通信を開始 - SQLNET.ENCRYPTION_SERVER = (REQUIRED, REQUESTED, ACCEPTED,

    REJECTED) - SQLNET.ENCRYPTION_CLIENT = (REQUIRED, REQUESTED, ACCEPTED, REJECTED) - SQLNET.ENCRYPTION_TYPES_SERVER = (AES 128/192/256, ARIA, SEED, GOST) それぞれのデフォルトは、ACCEPTED サーバー側のSQLNET.ENCRYPTION_SERVERをREQUIREDすれば通信の暗号化を強制できる Networkの暗号化 Copyright © 2021, Oracle and/or its affiliates 17 REQUIRED REQUESTED ACCEPTED REJECTED REQUIRED 暗号化 暗号化 暗号化 接続失敗 REQUESTED 暗号化 暗号化 暗号化 暗号化なし ACCEPTED 暗号化 暗号化 暗号化なし 暗号化なし REJECTED 接続失敗 暗号化なし 暗号化なし 暗号化なし サ ー バ ー 側 設 定 クライアント側設定
  18. 機微なデータの抽出とマスキング Oracle Data Masking and Subsetting Copyright © 2021, Oracle

    and/or its affiliates 18 テストや開発などの目的で本番データをコピーする際、データのサニタイズや不要データの削除 0100101100101010010010 0100100100100101001011 0010101001001001001001 001001001001001 データ抽出 マスキング NAME SALARY AGUILAR 50135.56 BENSON 35789.89 CHANDRA 60765.23 DONNER 103456.82 本番環境 開発・検証環境 NAME SALARY AGUILAR ***** CHANDRA ***** • 機微な情報を様々な形式でマスキング • ランダム文字列, ランダム数字, ランダム日付, リスト, ユー ザー関数, 固定文字, 正規表現.. • データベースの特性を考慮したアーキテクチャ • 表の制約や表と表の関係性を認識した一貫性のある マスキング • 列データの要素数、分布、件数など、本番データの特性を維 持したマスキング環境の作成 • データのサブセット&マスキング • 本番環境の 1/10 のデータを抽出 ~ マスキング ~ ダンプファイル生成までを自動化
  19. キー / 一意 / 参照整合性制約を自動検知 Data Masking (データ・マスキング) 19 ID

    NAME CID 1 SMITH 1 2 ALLEN 4 3 JONES 1 4 CLARK 2 5 ADAMS 3 : : : CID COUNTRY_NAME 1 UNITED_KINGDOM 2 UNITED_STATES 3 AUSTRALIA 4 IRELAND 5 CANADA : : ID NAME CID 1 Aaafeh 83 2 Aafhed 65 3 Aaaafhe 83 4 Bodofa 39 5 aaahfied 9 : : : CID COUNTRY_NAME 83 UNITED_KINGDOM 39 UNITED_STATES 9 AUSTRALIA 65 IRELAND 7 CANADA : : 参照整合性を維持したマスキング (ランダム文字列+ランダム数値) 外部キー制約を自動的に 検知し、整合性を維持 Copyright © 2021, Oracle and/or its affiliates
  20. 独自マスキング・フォーマットの設定例 Data Masking (データ・マスキング) 20 作成する携帯番号のマスキング形式 070 – 1234 -

    6789 Random List [070-, 080-, 090-] Random Number [4 digit] Fixed String [-] Random Number [4 digit] Copyright © 2021, Oracle and/or its affiliates
  21. 2. アクセス制御 Copyright © 2021, Oracle and/or its affiliates 21

  22. 行列レベルでのアクセス制御 アプリケーションを改修することなく、問い合わせたユーザーに応じて厳格なアクセス制御が可能 データベース・ユーザが不正に別のユーザのデータを参照・操作する可能性を排除 Oracle Virtual Private Database Copyright © 2021,

    Oracle and/or its affiliates 22 SELECT * FROM order WHERE customer = 'CLARK'; CLARK が 問い合わせた場合 SELECT * FROM order WHERE customer = 'SCOTT'; SCOTT が 問い合わせた場合 SELECT * FROM order; CLARK 300 06/03/17 SCOTT 20 05/09/11 SCOTT 450 05/11/07 CUSTOMER QTY CREDIT_CARD CLARK 125 06/02/04 SCOTT 310 06/01/26 CLARK 90 05/12/15 ORDER表 ユーザーの属性情報に応じて、 SQLが内部的に書き換える
  23. 例) VPDによる行制御 Copyright © 2021, Oracle and/or its affiliates 23

    1. サンプルスキーマ (HR)を準備 2. テストユーザーを作成、権限の付与 3. ファンクションの作成 create user test identified by test; grant create session to test; grant select on hr.employees to test; CREATE OR REPLACE FUNCTION hr_managerid( schema_var IN VARCHAR2, table_var IN VARCHAR2) RETURN VARCHAR2 IS return_val VARCHAR2 (400); manager_id number; BEGIN select sys_context('userenv','client_identifier') into manager_id from dual; IF (manager_id is null) THEN manager_id := 0; END IF; return_val := 'manager_id=' || manager_id; RETURN return_val; END hr_managerid; / DBセッションのclient_identifierの情報を取り出し manager_id = client_identiferのwhere句と して結果として返すファンクション
  24. 例) VPDによる行制御 Copyright © 2021, Oracle and/or its affiliates 24

    4. VPDポリシーの作成 BEGIN DBMS_RLS.ADD_POLICY ( object_schema => 'hr', object_name => 'employees', policy_name => 'employees_policy', function_schema => 'hr', policy_function => 'hr_managerid', statement_types => 'select' ); END; / HRのempoyees表に対して作成したファンクション をVPDポリシーとして設定 つまり、emplyees表にselectが発生した場合に VPDが発動する
  25. 例) VPDによる行制御 Copyright © 2021, Oracle and/or its affiliates 25

    1. Testユーザーで接続し、employees表を検索 SQL> select * from hr.employees; レコードが選択されませんでした。 2. client_identifierを100に設定して再度 employees表を検索 SQL> execute dbms_session.set_identifier('100’); PL/SQLプロシージャが正常に完了しました。 SQL> select employee_id, first_name, manager_id,salary from hr.employees; EMPLOYEE_ID FIRST_NAME MANAGER_ID SALARY --------------- ---------------- -------------- ---------- 101 Neena 100 17000 102 Lex 100 17000 114 Den 100 11000 120 Matthew 100 8000 121 Adam 100 8200 manager_idが100のレコードのみが結果として返る where manager_id=100が内部的に条件として実行 されている 今回は、プロシージャ実行でIDを設定するという明示的な 発動条件だが、ユーザ名やクライアントIPといった自動的に セッション情報に設定される値を使用することも可能 また、Client_Identifierでなくアプリケーション・コンテキストを 使用する方法もある
  26. 例) VPDによる列制御 Copyright © 2021, Oracle and/or its affiliates 26

    1. ファンクションの作成 2. VPDポリシーの作成 CREATE FUNCTION vpdcolumn (schema in varchar2, tab in varchar2) return varchar2 as predicate varchar2(8) default '1=2'; begin return predicate; end; / BEGIN DBMS_RLS.ADD_POLICY ( object_schema => 'hr', object_name => 'employees', policy_name => 'employees_policy', function_schema => 'hr', policy_function => 'vpdcolumn', sec_relevant_cols => 'salary', sec_relevant_cols_opt => dbms_rls.ALL_ROWS ); END; / 結果が必ずfalseになる条件を返す sec_relevant_colsにマスクしたい列を指定する
  27. 例) VPDによる列制御 Copyright © 2021, Oracle and/or its affiliates 27

    1. Testユーザーで接続し、employees表を検索 SQL> select employee_id, first_name, manager_id,salary from hr.employees; EMPLOYEE_ID FIRST_NAME MANAGER_ID SALARY --------------- ---------------- -------------- ---------- 101 Neena 100 102 Lex 100 114 Den 100 120 Matthew 100 121 Adam 100 SALARY列がnullになって結果が表示される 今回の条件は、HRユーザー以外のすべてのユーザーは、 SALARY列を参照できない FunctionにIF文を追加し条件設定することで、特定の ユーザーやプログラムだけに効果を限定できる
  28. Sensitive Confidential Public Public Label Based Access Control(ラベル・ベースのアクセス制御) 行データに付与されたデータ・ラベルとユーザが保持するセッション・ラベルを比較し、ラベルに応じた厳密なアクセス制御 セッション・ラベルがデータ・ラベルよりも上位の場合アクセスが許可され、同様に書き込みもラベルで制御がされる

    データ・ラベルは物理的に各レコードに格納され、ユーザーから見えなくすることも可能 セッション・ラベルを動的に変更することでアクセスできる範囲を変更するなど、アプリケーションに組み入れた利用が効果的 Oracle Label Security Copyright © 2021, Oracle and/or its affiliates 28 セッション・ラベル Confidential セッション・ラベル Sensitive
  29. 列レベルのデータの伏字化 ユーザーのセッション情報に応じてリアルタイムに列を任意の形でリダクション(伏字化) アプリケーションのコード修正は必要のなく、設定されたポリシーに応じてデータベース側で制御 非定型な問い合わせには予期せぬデータの結果が返る場合があるため、SQLが固定化されているアプリケーション等の データ表示の補助的な役割として活用が推奨 ※非定型を含めた完全な列アクセス制御はVPDを利用 Oracle Data Redaction Copyright

    © 2021, Oracle and/or its affiliates 29 4451-2172-9841-4368 5106-6342-4881-5211 4891-3311-0090-5055 4512-3339-3231-5909 クレジットカード番号 4451-2172-9841-4368 XXXX-XXXX-XXXX-4368 一般の アプリケーション利用者 機密データにアクセス可能な アプリケーション利用者
  30. データベース管理者のアクセス制御 特権ユーザの無制限のアクセスを禁止し、ユーザごとのアクセス権限を厳格にする DBユーザーの完全な職務分掌を実現 Oracle Database Vault Copyright © 2021, Oracle

    and/or its affiliates 30 DB ルールセット 機密データの 取り扱い者 DB管理者 セキュリティ 管理者 サーバ 管理者 機密データ データディクショナリ 業務データ ユーザ・アカウント 時刻 =8:00~19:00 曜日 = 月~金 IPアドレス = xxxxx • 許可された範囲で機密データに アクセス可能 • DBの運用管理業務 • 業務データと機密データ へのアクセスは不可 • アカウントと鍵の管理業務 • 業務データと機密データへの アクセスは不可 • サーバとOSの管理業務のみ • DBへのアクセスは不可 DB管理者であっても、 管理業務に必要ない業務 データ、機密データへのアク セスを禁止する 必要に応じてルールを適用し、時 間帯やIPアドレスでアクセスを制 限する それ以外 それ以外 それ以外 それ以外 すべて 一般利用者 • 許可された範囲で業務データに アクセス可能 利用状態 (Data at Use)
  31. コマンドルールによる操作の制御 データベースの管理や操作に関わる様々なSQLを細かく制限 SQLの実行の条件としてIPアドレスや時間といった付帯ルールを紐づけることでSQLの実行を未然に防止 例) 一時的に貸し出したDBユーザーが業務時間外はDBにCONNECTできないようにする ユーザーの作成や権限の付与などの管理SQLは決められたPCとアプリケーションからでないと実行できないようにする データの更新・削除は、業務時間外は禁止にする Oracle Database Vault

    Copyright © 2021, Oracle and/or its affiliates 31 Truncate table ~ Drop table ~ Create User ~ 業務委託している 海外のDBA 自社の正規DBA 協力会社用ユーザ
  32. 3. 監査 Copyright © 2021, Oracle and/or its affiliates 32

  33. Oracle Databaseの監査機能 Copyright © 2021, Oracle and/or its affiliates 33

    DBA監査 標準監査 ファイングレイン監査 Unified Audit 必要Edition 全エディション 全エディション Enterprise Edition 全エディション 対象バージョン Oracle 10g~ 19c (※) Oracle 10g~ 19c (※20cから非推奨) Oracle 10g ~ Oracle 12c ~ 監査対象 ・データベース管理者 (SYSDBA,SYSOPER)とし てログインしたユーザーのDB 操作 ・データベースのすべての操作 (ログイン、 CREATE/ALTER/DROPなどのアク ション、UPDATE、DELETEなどのオ ブジェクトへの操作) ・表に対してのDMLアクセス ・監査対象への条件指定が可能 ・特定の行・列に対する監査の 指定が可能 ・データベースのすべての操作 ・Datapump、RMAN、 SQL*Loader ・監査対象への条件指定が可能 監査証跡 出力先 ・OSファイル ・システムビューア(Win) ・Syslog(10gR2~) ・AUD$表 ・OSファイル / システムビューア(Win) ・Syslog(10gR2~) ・XMLファイル(10gR2~) ・FGA_LOG$表 ・XMLファイル(10gR2~) ・Unified Audit (12c~) ・監査ログ出力後のアクションを 定義可能(メール送信) ・AUDSYS.AUD$UNIFIED表 ・指定した表領域に移動可能 ※表領域に書き込めない場合は、 一時的にファイルに出力される 取得可能な 監査証跡 ・時刻 ・操作(SQL文全体) ・DB,ユーザー名/権限 ・OSユーザー名/端末 ・終了コード ・時刻 ・操作(SQLコマンド、SQL文) ・オブジェクト名 ・DB,OSユーザ名 ・プログラム名 ・バインド値 ・時刻 ・操作(SQLコマンド、SQL文) ・オブジェクト名 ・DB,OSユーザ名 ・プログラム名 ・バインド値 ・時刻 ・操作(SQLコマンド、SQL文) ・オブジェクト名 ・DB,OSユーザ名 ・プログラム名 ・バインド値
  34. シンプル&高速, 新たにデザインされたデータベース監査機能 Unified Audit Copyright © 2021, Oracle and/or its

    affiliates 34 監査条件 除外条件 監査情報の拡張 ポリシーベース Unified Audit オブジェクト, 権限, アクション等にグループ 化したポリシー定義 アドレス, OSユーザー, 等 監査が実行される条件の組合せ セッション情報によって 監査を実行しない条件の指定 RMAN, Database Vault, DataPump, Export/Import等
  35. 従来の監査機能との比較 Copyright © 2021, Oracle and/or its affiliates 35 従来

    Unified Audit(12c~) 1. 定期済みのポリシー なし - DB作成時に最低限の監査設定は行われる あり - CISベンチマーク等の定義済みのポリシーを提供 2. 監査タイミング 即時書き込み 即時書き込み 2. 監査条件 指定不可 条件設定可能 3. 監査ユーザーの指定 BYで監査ユーザー指定可能 BYで監査ユーザー指定 EXCEPTで免除ユーザーの指定 4. 初期化パラメータ 設定必要 - AUDIT_TRAIL=OS, DB , XML - SQL文まで出力する場合はDB, XML EXTENDED 設定不要 - デフォルトはMixedモード(従来の監査機能も利用可) - Unified Auditのみの使用に強制可能 5. 監査証跡の出力先 DBの場合 - SYS.AUD$表とSYS.FGA_LOG$表 ファイル(OS,XML)の場合 - 初期化パラメータファイル audit_file_dest AUDSYS.AUD$UNIFIED表 デフォルト表領域はSYSAUX (別表領域に移動可能) 書込み不可の場合は、 $ORACLE_BASE/audit/$ORACLE_SIDに出力さ れる 6. 参照ビュー DBA_COMMON_AUDIT_TRAIL UNIFIED_AUDIT_TRAIL
  36. 条件による監査対象の絞り込み Copyright © 2021, Oracle and/or its affiliates 36 •

    指定されたユーザー以外のすべてのアクセスを監査 CREATE AUDIT POLICY audPolicy1 ACTIONS UPDATE ON HCM.EMPLOYEES, DELETE ON HCM.EMP_EXTENDED; AUDIT POLICY audPolicy1 BY UserX, UserY; CREATE AUDIT POLICY audPolicy2 ACTIONS ALL ON HCM.EMPLOYEES, ALL ON HCM.EMP_EXTENDED; AUDIT POLICY audPolicy2 EXCEPT UserX, UserY; • 特定のユーザーのUPDATE,DELETE文のDMLを監査 • 9時~17時以外のすべてのアクセスを監査 CREATE AUDIT POLICY audPolicy3 WHEN trunc(to_char(SYSDATE,‘hh24’)) >17 OR trunc(to_char(SYSDATE,‘hh24’)) <9 ACTIONS ALL ONLY TOPLEVEL; AUDIT POLICY audPolicy3 ; • DATAPUMPのエクスポートを監査 CREATE AUDIT POLICY audPolicy4 ACTIONS COMPONENT=DATAPUMP EXPORT; AUDIT POLICY audPolicy4 BY SYSTEM;
  37. 監査条件でアプリケーションの定常アクセスを除外 Copyright © 2021, Oracle and/or its affiliates 37 •

    ホスト名がアプリケーションサーバ、かつ、JDBCからのアクセスではない場合を監査 CREATE AUDIT POLICY ALL_ACTIONS_EMP ACTIONS ALL ON SCOTT.EMP WHEN 'SYS_CONTEXT(''USERENV'',''IP_ADDRESS'') IS NULL' EVALUATE PER STATEMENT CONTAINER = ALL; AUDIT POLICY ALL_ACTIONS_EMP; CREATE AUDIT POLICY NOT_JDBC_ACCESS ACTIONS ALL ON SCOTT.EMP WHEN 'SYS_CONTEXT(''USERENV'',''HOST'') IN ''dbsec01.jp.oracle.com,dbsec02.jp.oracle.com'' and SYS_CONTEXT(''USERENV'',''MODULE'') NOT IN ''JDBC Thin Client''' EVALUATE PER STATEMENT CONTAINER = ALL; AUDIT POLICY NOT_JDBC_ACCESS; • SCOTT.EMP表のすべてのDMLを監査、ただし、IPアドレスがNULL(ローカル接続)のみ監査
  38. Unified Auditの削除 Copyright © 2021, Oracle and/or its affiliates 38

    DBMS_AUDIT_MGMTパッケージは、DBの監査ログレコードを管理するサブプログラム EXEC DBMS_AUDIT_MGMT.CLEAN_AUDIT_TRAIL (audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_UNIFIED, use_last_arch_timestamp => TRUE); • すべてのUnified Auditを削除する EXEC DBMS_AUDIT_MGMT.SET_LAST_ARCHIVE_TIMESTAMP( AUDIT_TRAIL_TYPE => DBMS_AUDIT_MGMT.AUDIT_TRAIL_UNIFIED, last_archive_time => TO_TIMESTAMP('2020-01-01:00:00.00','YYYY-MM-HH24:MI:SS.FF')); END; / EXEC DBMS_AUDIT_MGMT.CLEAN_AUDIT_TRAIL (audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_UNIFIED, use_last_arch_timestamp => False); • 指定した日時以前のUnified Auditを削除する
  39. Unified Auditの定常的な監視 Copyright © 2021, Oracle and/or its affiliates 39

    Unified Auditは、Unified Audit Trailビューから監査レコードにアクセスすることができる 不信な挙動やアクセスがあった場合にアラートをする等の監視の自動化など、効率的に定常監視を行いたい場合は 以下の製品と組み合わせて実現する Oracle Audit Vault and Database Firewall - オンプレミス製品 - 対象は主にオンプレミスのOracle Database - ソフトウェアアプライアンスとして提供され、ハードウェアとログを格納するための大容量のストレージが必要 Oracle Management Cloud Service - クラウドサービス - 対象はオンプレミス及びクラウドのDatabase (SQL Server, MySQL等のOracle Database以外の監査ログも対応) - クラウドサービスなので、事前に大容量のストレージを準備する必要がなく、無制限に格納可能 また、格納しているログの使用量に応じて課金され 必要なくなったらより安価なオブジェクトストレージに退避可能 Oracle Data Safe - クラウドサービス - 対象は、クラウドまたはオンプレミスのOracle Database , Unified Auditを格納するサイズに制限がある
  40. Oracle Audit Vault and Database Firewall Copyright © 2021, Oracle

    and/or its affiliates 40 Database Firewall Audit Vault Server Operating systems & directory services Databases Policies Reports Alerts Oracle Database Microsoft SQL Server IBM DB2 SAP Sybase MySQL PostgreSQL Linux Windows AIX Solaris Microsoft Active Directory データベース・アクセス • Oracle Databaseや他社のデータベースの 監査ログを収集し一元管理 • OSやディレクトリのログにも対応 • 2種類のデータベース・ログ収集方式 • SQLトラフィック + Database Firewall • データベース監査 + エージェント • 収集したログをレポート・アラートし、不正な操作 の早期検知 • Oracle Databaseの暗号化、特権管理などの セキュリティ機能をフルに活用し、ログの改ざん、 削除を防止しセキュアに保管 • ソフトウェアアプライアンスとして、OSとソフトウェア がパッケージングされて提供
  41. 機械学習を用いてより効率的に・より使いやすく、ビルドアップしたログ分析基盤 サービス概要/特徴 • 直感的なGUI操作で対象となるログ分析やレポーティング • OCIやオンプレミスにある様々なOS/ソフトウェアのログに 対応し、取り込みからビジュアライズまでをサポート • 200種類を超えるログに対応したパーサーを提供 •

    カスタムのパーサーも作成可能 • 様々なログを横断的に可視化、柔軟な検索や絞り込みが できるほか、機械学習を活用した異常値の発見、相関分 析など統合ログサービスとしての位置づけ ユース・ケース • Service Connector Hubから送られる監査ログやサービス ログ、Log Analyticsのエージェントが取得するOS/ソフト ウェアのログ、それらの様々なレイヤーのログを時系列に相関 分析 • 分析には、機械学習を活用 • 大量のログから素早く対象のログにたどり着くクラスタ分析 • 動的なベースラインに基づいた異常値の検出 • システム部門だけでなく、ユーザー部門ともダッシュボードを 共有して透明性のある運用環境を構築 サービス価格 • 10GBまで無料, 10GB以上は300GBまで1unitと換算 • Active Storage: 1 unit (300GB) ¥60/h • Archive Storage 1 unit (300GB) ¥2.4/h Oracle Cloud Infrastructure - Logging Analytics Copyright © 2021, Oracle and/or its affiliates 41
  42. 4. Extra Copyright © 2021, Oracle and/or its affiliates 42

  43. Oracle Data Safe Copyright © 2021, Oracle and/or its affiliates

    43 ✓ 統合されたデータベースセキュリティ管理サービス 1. 機密データの発見(Sensitive Data Discovery ) 2. データ・マスキング(Data Masking) 3. アクティビティの監査(Activity Auditing) 4. セキュリティ構成の評価(Security Assessment) 5. ユーザーのリスク評価(User Assessment) ✓ 特別なセキュリティの専門知識 ✓ 多層防御における重要なデータ・セキュリティ対策 ✓ 短時間でセキュリティ・リスクを軽減 ✓ Oracle Cloud Databaseの利用でサービスを無償提供 ※1 ✓ オンプレミス、他社クラウド上のオラクルDBへも対応 - 24,000円 /ターゲット/月 ※ 監査機能は100万レコード/月まで無償、その他の機能は無償 Oracle Cloud上の データベース 監査 ユーザー 発見 アセス マスク オンプレミス のデータベース Data Safe AWS, Azure上の オラクルデータベース
  44. Oracle Database Security Assessment Tool Copyright © 2021, Oracle and/or

    its affiliates 44 • データベースが安全(でない)ことを見える化 – セキュリティ状況概要レポート – ユーザー、権限付与状況、リスクを理解 – 重要なデータが格納されている表と列をリスト化 • すぐに使えるアセスメントレポート – 概要および詳細情報 – 優先順位付けられた推奨事項 – EU GDPR、CIS Benchmark(*)、STIGとのマッピング • 簡単に数分で完了する独立型のPythonスクリプト • 既存環境への影響なし • ダウンロード https://www.oracle.com/jp/database/technologies/securit y/dbsat.html データベースは 安全に構成されてい る? どんなユーザーにどん な権限が? 重要なデータが 格納されている?
  45. 調査結果例 Copyright © 2021, Oracle and/or its affiliates 45 調査結果の

    詳細 調査結果の 根拠と推奨事項 規制との マッピング 発見したリスクのレベル 調査結果の カテゴリ 対応する規制
  46. None