2023年4月12日 (水)開催、Oracle Database World Tokyo [DBWT] セッション3の資料です。
データベースのセキュリティに求められる対策とは何でしょうか?実際にデータベースのセキュリティ評価を行うアセスメントツールの結果を用いながら、暗号化・アクセス制御・監査の視点から対策できることについて今一度、基本的に立ち戻って解説します。
Oracle Database WorldTokyo⻄村 克也プリンシパルクラウドエンジニア, CISSP⽇本オラクル株式会社クラウドエンジニアリング統括 COE本部 セキュリティ&マネジメント・ソリューション部プリンシパルクラウドエンジニア2023年4⽉12⽇セルフ・アセスメントから読み解く段階的なデータベース・セキュリティ対策
View Slide
政府機関等の対策基準策定のためのガイドライン (令和3年度版)- 7.2.4 データベースの導⼊・運⽤時の対策政府機関等のサイバーセキュリティ対策のための統⼀基準(令和3年度版)- 7.2.4 データベースの導⼊・運⽤時の対策個⼈情報の保護に関する法律についてのガイドライン (通則編)- 10-6 技術的安全管理措置PCIDSS (Payment Card Industry Data Security Standard) v4.0Oracle Database セキュリティ・ガイド- 付録: Oracle Databaseの安全性の維持CIS Oracle Database 12c/18c/19c BenchmarkOracle Database 12c Security Technical Implementation Guide(STIG)Oracle Database Security Assessment Tool (DBSAT)安全にデータベースを構築・運⽤するための指針2 Copyright © 2023, Oracle and/or its affiliates
Oracle Database Security Assessment Tool (DBSAT)簡単に数分で完了する独⽴型のPythonスクリプト稼働しているデータベースから影響なく直接情報を抽出優先順位付けられた推奨事項読みやすくまとめられたHTMLレポートデータベースのリスクを定量的に評価し可視化- ⽤途不明、過度な権限を持つユーザーがいないか- 適切なパスワード運⽤をしているか- 暗号化の有無- 監査設定の状況ダウンロードhttps://www.oracle.com/jp/database/technologies/security/dbsat.htmlOracle Databaseのセキュリティ・リスクを可視化3データベースは安全に構成されている︖どんなユーザーにどんな権限が︖重要なデータが格納されている︖?Copyright © 2023, Oracle and/or its affiliates
リスクアセスメント・レポート4 Copyright © 2023, Oracle and/or its affiliates
Copyright © 2023, Oracle and/or its affiliates5リスク・アセスメントの実例から学ぶ現状の課題と対策
ユーザー・プロファイルの項⽬をすべてUNLIMITEDにしている6ユーザー・プロファイルをデフォルト値から無制限に変更• パスワードの有効期限, 再利⽤, 再利⽤回数の制限なし,ログイン失敗のロック制限回数なし• パスワードの複雑性チェックはNULL安易なパスワードの使⽤やログイン失敗の制限を指定しないことは、既知のパスワードやブルートフォースなどの認証突破のリスクを増⼤させるCopyright © 2023, Oracle and/or its affiliates
ユーザー・プロファイル7属性名FAILED_LOGIN_ATTEMPTSPASSWORD_LIFE_TIMEPASSWORD_GRACE_TIMEPASSWORD_LOCK_TIMEPASSWORD_REUSE_MAXPASSWORD_REUSE_TIMEPASSWORD_VERIFY_FUNCTION説明許容されるログインの連続失敗回数。これを超えるとアカウントはロックされる同⼀パスワードの有効期間(⽇数)。これを過ぎるとパスワードは期限切れ となる。UNLIMITED は永続的に使⽤できることを⽰すパスワードが 期限切れ となってから 無効化 されるまでの猶予期間(⽇数)。その間ユーザーはパスワードを変更することが許可されるUNLIMITED は制限なしログインに連続失敗した際のアカウントのロック期間(⽇数)UNLIMITED は⾃動ロック解除が無効過去と同⼀のパスワードの使⽤を許容しない変更回数UNLIMITEDでは即再利⽤可能過去と同⼀のパスワードの使⽤を許容しない期間(⽇数)UNLIMITED では即再利⽤可能設定したパスワードの複雑をチェックするORA12C_VERIFY_FUNCTION、ORA12C_STIG_VERIFY_FUNCTION12R1以降1018071UNLIMITEDUNLIMITEDNULL※設定内容は、次のSQLで確認可能SQL> SELECT * FROM dba_profiles WHERE profile=ʻDEFAULTʻAND resource_type='PASSWORD';※変更する場合は次のように実⾏SQL> ALTLER PROFILE defaultLIMIT <属性名> <新しい値>;基本Copyright © 2023, Oracle and/or its affiliatesDB Cloud360715365ORA12C_STRONG_VERIFY_FUNCTION
⽤途不明、過⼤な権限が付与されたアカウントを発⾒8残存する⽤途不明のアカウントを検出いつ、誰が作成したのか、現在の使⽤状況も不明SYS, DBAロールの管理者権限が付与されているためDB管理操作やすべての表にアクセス可能なアカウントの状態になっている⽤途不明かつ強い権限のアカウントは、知らずに不正アクセスに悪⽤されるリスクを伴うCopyright © 2023, Oracle and/or its affiliates
Copyright © 2023, Oracle and/or its affiliates9Centrally Managed Users (CMU)Oracle Databaseのパスワード認証をActive Directoryと連携することによる認証の⼀元化Oracle Database 18c Enterprise Editionから利⽤可能2種類のマッピング⽅式- 1 : 1 DBユーザーとADユーザーをマッピング (DBユーザーがADユーザーと同数必要)- 1 : n DBユーザーをADグループにマッピング (DBユーザーは、マッピングするADグループ数のみ)ADユーザーのDBに対するアクセス権限は、Active Directoryのグループ割り当てで動的に変更が可能Active Directoryのユーザー・パスワードを⽤いたデータベース認証MicrosoftActive DirectoryDBユーザDBユーザ1:1 ADユーザ1:n ADグループcreate user BOBidentified globally ascn=bob,ou=users,dc=company,dc=comcreate user hr-repidentified globally ascn=hr-rep,ou=groups,dc=company,dc=comGroups: hr-rep {Susan, Diana }Domain (dc=company,dc=com)Users: Susan, Diana, Bob, VenkatOracleDatabaseEE
データベースの暗号化を⾏っていない10表には、⽒名、⽣年⽉⽇、住所などの個⼈情報を格納しているが、DBの暗号化機能は使⽤していないアプリケーション、ストレージでも特に暗号化の対策をしていないことも分かった導⼊時暗号化を検討したが、パフォーマンスの懸念やコスト増から導⼊を⾒送ったデータベースを暗号化していないと、データファイルへの直接アクセス、バックアップやダンプファイルの窃取などによりデータの盗難リスクがある個⼈情報保護法などのコンプライアンス要件により暗号化が必須となっているCopyright © 2023, Oracle and/or its affiliates
Transparent Data Encryption (TDE)11アプリケーションからは透過的にデータの暗号化・復号し、既存のアプリケーション (SQL)を改修する必要なしNISTの標準共通鍵暗号⽅式 AES(128/192/256bit)、ARIA/SEED/GOST等に対応Intel AES-NIなどのハードウェア暗号化アクセラレーションに対応した⾼速な暗号化処理Oracle Databaseのデータファイルやバックアップファイルの物理的な盗難リスクからデータを保護データベースをオンラインに保ったまま暗号化への移⾏も可能Oracle Database Cloud Serviceでは、デフォルトで有効化DisksExportsOff-Site FacilitiesBackupsApplicationsClear DataSoftwareKeystoreKeyVaultOTHERTABLESPACEHCMTABLESPACEHCMTABLESPACEEncryptedDataDF11233 U*1$5Ha1qui %H1HSKQ112 A14FASqw34 £$1DF@£!1ah HH!DA45S& DD1Encrypted Network Connection(TLS or Native Encryption)SELECT name,cardnumber FROMcredit;EE + Advanced Security OptionCopyright © 2023, Oracle and/or its affiliates
TDE 表領域暗号化12表領域単位での暗号化表領域内の表や索引などのオブジェクトはすべて暗号化されるデータブロックに対するI/Oで暗号化・復号REDOログ、UNDO表領域、⼀時表領域、アーカイブログも暗号化されるSGAのバッファキャッシュ上は暗号化されていない暗号化してもデータサイズは増加しない暗号列への索引に制限なしほとんどすべてのオブジェクトが暗号化可能 (BFILEのみ不可)キャッシュヒットの⾼いSQLは性能への影響を受けずディスクへのRead/Writeの多いSQLは影響を受けるSGA表領域暗号化REDOログUNDO表領域Disk I/Oで暗号化/復号サーバープロセスSELECTINSERTUPDATE・・・表領域暗号鍵表領域暗号化マスター鍵Copyright © 2023, Oracle and/or its affiliates
表領域の暗号化変換13SQLで表領域を暗号化 ・復号を⼀括変換既存の表領域を暗号化する⼿間や時間を⼤幅に短縮従来では暗号化できなかったSYSTEM, SYSAUX, UNDO, TEMPなどのシステム領域も暗号化することでデータベースのフル暗号化が可能データにアクセス可能なまま表領域を暗号化- Online Encryption Conversion表領域がオフライン時に暗号化- Offline Encryption ConversionSALESTABLESPACEHCMTABLESPACEHCMTABLESPACEDF11233U*1$5Ha1qui%H1HSKQ112A14FASqw34£$1DF@£!1ahHH!DA45S& DD1Acme 10 1/2/16Acme 3 1/3/16Acme 5 1/5/16Acme 12 1/7/16Acme 4 1/8/16Acme 2 1/9/16Copyright © 2023, Oracle and/or its affiliates
アプリケーション暗号とTDEの違い14暗号化個⼈番号xxxxxxxxxxxxMy Noxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx暗号化 暗号化個⼈番号188313648931My No18831364893143435642455983354931678暗号化GoodEnd to Endで最もセキュアBadデータサイズの増加アプリでの鍵管理が煩雑索引が使えないアプリの改修が必要TDEアプリ暗号Good上記のBadのポイントが全部解消されるBad暗号化によるリスク減が狭い物理的ファイルの盗難の頻度は⾼くないネットワーク盗聴 DB侵⼊ ファイルの盗聴・盗難想定されるリスクネットワーク暗号化 +TDE + アクセス制御の組み合わせでセキュリティ強化ネットワーク暗号化Copyright © 2023, Oracle and/or its affiliates
アクセス制御15⾏・列レベルでのアクセス制御を⾏っていないDBA管理者のアクセス制御を⾏っていないDBユーザーまたはアプリケーション・ユーザーに応じて特定の列や⾏だけにアクセスを限定させることはNeed to Knowの原則から情報漏洩対策に有効同様に、すべての権限を持つDBA監視者の職務分掌と最⼩権限の原則を実施することも効果的Copyright © 2023, Oracle and/or its affiliates
⾏列レベルでのアクセス制御アプリケーションを改修することなく、問い合わせたユーザーに応じて厳格なアクセス制御が可能データベース・ユーザが不正に別のユーザのデータを参照・操作する可能性を排除Oracle Virtual Private DatabaseCopyright © 2023, Oracle and/or its affiliates16SELECT * FROM orderWHERE customer ='CLARK';CLARK が問い合わせた場合SELECT * FROM orderWHERE customer ='SCOTT';SCOTT が問い合わせた場合SELECT * FROM order;CLARK 300 06/03/17SCOTT 20 05/09/11SCOTT 450 05/11/07CUSTOMER QTY CREDIT_CARDCLARK 125 06/02/04SCOTT 310 06/01/26CLARK 90 05/12/15ORDER表ユーザーの属性情報に応じて、SQLが内部的に書き換えるEE
列レベルのデータの伏字化ユーザーのセッション情報に応じてリアルタイムに列を任意の形でリダクション(伏字化)アプリケーションのコード修正は必要のなく、設定されたポリシーに応じてデータベース側で制御⾮定型な問い合わせには予期せぬデータの結果が返る場合があるため、SQLが固定化されているアプリケーション等のデータ表⽰の補助的な役割として活⽤が推奨※⾮定型を含めた完全な列アクセス制御はVPDを利⽤Oracle Data RedactionCopyright © 2023, Oracle and/or its affiliates174451-2172-9841-43685106-6342-4881-52114891-3311-0090-50554512-3339-3231-5909クレジットカード番号4451-2172-9841-4368XXXX-XXXX-XXXX-4368⼀般のアプリケーション利⽤者機密データにアクセス可能なアプリケーション利⽤者EE + Advanced Security Option
アプリケーション固有の情報を使ったアクセス制御Copyright © 2023, Oracle and/or its affiliates18アプリケーションセッション情報(v$session)- DBユーザー名- IPアドレス- プログラム名- ホスト名条件 +VPDData RedactionDBユーザーDBユーザーセッション情報(v$session)- CLIENT_IDENTIFIER(64バイト)条件 +VPDData RedactionUser IDやRoleなどのアプリ固有情報を渡すコードの修正が必要DBユーザーは常に同じ
データベース管理者のアクセス制御特権ユーザの無制限のアクセスを禁⽌し、ユーザごとのアクセス権限を厳格にするDBユーザーの完全な職務分掌を実現Oracle Database VaultCopyright © 2023, Oracle and/or its affiliates19DBルールセット機密データの取り扱い者DB管理者セキュリティ管理者サーバ管理者機密データデータディクショナリ業務データユーザ・アカウント時刻=8:00〜19:00曜⽇ = ⽉〜⾦IPアドレス =xxxxx• 許可された範囲で機密データにアクセス可能• DBの運⽤管理業務• 業務データと機密データへのアクセスは不可• アカウントと鍵の管理業務• 業務データと機密データへのアクセスは不可• サーバとOSの管理業務のみ• DBへのアクセスは不可DB管理者であっても、管理業務に必要ない業務データ、機密データへのアクセスを禁⽌する必要に応じてルールを適⽤し、時間帯やIPアドレスでアクセスを制限するそれ以外それ以外それ以外それ以外すべて⼀般利⽤者• 許可された範囲で業務データにアクセス可能利⽤状態(Data atUse)EE + Database Vault Option
監査20Oracle Databaseの監査設定をデフォルト値から無効Oracle Database以外の監査製品を使⽤している監査ログを定期的にチェックやレポート等の監査・監視は⾏っていない監査されているということが運⽤担当者に周知されていないDBの監査機能以外の場合、アクセスログが不⼗分なケースがある定常的なモニタリング運⽤がない場合、機微な情報にアクセスする際の緊張感の低下が懸念コンプライアンス要件で監査と監視が求められるCopyright © 2023, Oracle and/or its affiliates
Oracle Databaseの監査機能21DBA監査 標準監査 Unified Audit必要Edition 全エディション 全エディション 全エディション対象バージョン Oracle 10g 〜 20c (※21cから⾮推奨) Oracle 10g 〜 20c (※21cから⾮推奨) Oracle 12c 〜監査対象 ・データベース管理者(SYSDBA,SYSOPER)としてログインしたユーザーのDB操作・データベースのすべての操作(ログイン、CREATE/ALTER/DROPなどのアクション、UPDATE、DELETEなどのオブジェクトへの操作)・SYS含むデータベースのすべての操作・Datapump、RMAN、SQL*Loader・監査対象への条件指定が可能監査証跡出⼒先・OSファイル・システムビューア(Win)・Syslog(10gR2〜)・AUD$表・OSファイル / システムビューア(Win)・XMLファイル(10gR2〜)・Syslog(10gR2〜)・AUDSYS.AUD$UNIFIED表・指定した表領域に移動可能※表領域に書き込めない場合は、⼀時的にファイルに出⼒される取得可能な監査証跡・時刻・操作(SQL⽂全体)・DB,ユーザー名/権限・OSユーザー名/端末・終了コード・時刻・操作(SQLコマンド、SQL⽂)・オブジェクト名・DB,OSユーザ名・プログラム名・バインド値・時刻・操作(SQLコマンド、SQL⽂)・オブジェクト名・DB,OSユーザ名・プログラム名・バインド値Copyright © 2023, Oracle and/or its affiliates
Unified Auditデータベース・オブジェクト、権限、ユーザー・アクション等、監査対象をグループ化したポリシーベースの監査事前定義済みの監査ポリシーで必要とされる最⼩限の監査項⽬をカバーユーザー・セッション情報(IPアドレス、ユーザー名、プログラム名等)を監査条件にログ出⼒の絞り込み監査ログはデータベース内の内部表として格納され、SQLクエリーで参照可SYSユーザー監査、Recovery Manager、Data Pump、SQL*Loader等のログも統合12c〜20cまでは、従来の標準監査との併⽤可Oracle Databaseの監査機能22CREATE AUDIT POLICY HRPolACTIONS UPDATE ON HR.EMP, DELETE ON HR.EMP_EXD;AUDIT POLICY HRPol;例)UPDATEとDELETE⽂に対する監査ポリシー基本Copyright © 2023, Oracle and/or its affiliates
Unified Auditの定義済みポリシー23ポリシー名 ポリシーの内容 デフォルトORA_LOGON_FAILURES ログイン失敗のみ Yes(DBCAでDB作成時)ORA_SECURECONFIG セキュリティ監査の必須要件として求められる基本的なデータベースの構成管理に関連した操作Yes(DBCAでDB作成時)ORA_DATABASE_PARAMETER データベースのパラメータ変更に関連した操作 NoORA_ACCOUNT_MGMT ユーザー・アカウントの変更や権限に関連した操作 NoORA_CIS_RECOMMENDATIONS CISベンチマークで求められる監査要件に関連した操作 NoORA_RAS_POLICY_MGMT,ORA_RAS_SESSION_MGMTReal Application Securityに関連した操作 NoORA_DV_AUDPOL Oracle Database Vaultの DVSYS, LBACSYSスキーマのオブジェクトに関連した操作NoORA_DV_AUDPOL2 Database Vaultのレルムやコマンドルールに関連した操作 NoCopyright © 2023, Oracle and/or its affiliates
ORA_SECURECONFIGポリシーについて24ALTER ANY TABLECREATE ANY TABLEDROP ANY TABLEALTER ANY PROCEDURECREATE ANY PROCEDUREDROP ANY PROCEDUREGRANT ANY PRIVILEGEGRANT ANY OBJECT PRIVILEGEGRANT ANY ROLECREATE USERDROP USERALTER USERALTER DATABASEALTER SYSTEMAUDIT SYSTEMALTER ANY SQL TRANSLATION PROFILECREATE ANY SQL TRANSLATION PROFILEDROP ANY SQL TRANSLATION PROFILECREATE ANY LIBRARY CREATE ANY JOBCREATE EXTERNAL JOBCREATE SQL TRANSLATION PROFILECREATE PUBLIC SYNONYMDROP PUBLIC SYNONYMEXEMPT ACCESS POLICYEXEMPT REDACTION POLICYTRANSLATE ANY SQLPURGE DBA_RECYCLEBIN LOGMINING ADMINISTER KEY MANAGEMENTBECOME USERCREATE PROFILEALTER PROFILEDROP PROFILECREATE ROLEALTER ROLEDROP ROLESET ROLECREATE DATABASE LINKALTER DATABASE LINKDROP DATABASE LINKCREATE DIRECTORYDROP DIRECTORYEXECUTE ON DBMS_RLSALTER DATABASE DICTIONARYCREATE PLUGGABLE DATABASEDROP PLUGGABLE DATABASEALTER PLUGGABLE DATABASE主にデータベース管理に関連する操作に対して監査ポリシー表などのオブジェクトに対する監査設定はされていないので、ユーザー⽤途に応じたDML監査を追加するCopyright © 2023, Oracle and/or its affiliates
条件による監査対象の絞り込みCopyright © 2023, Oracle and/or its affiliates25• 指定されたユーザー以外のすべてのアクセスを監査CREATE AUDIT POLICY audPolicy1 ACTIONS UPDATE ON HCM.EMPLOYEES, DELETE ONHCM.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 ORtrunc(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;
OCI Logging AnalyticsUnified Auditの定常的なモニタリング26機械学習のテクノロジーを活⽤した⾼度なログ分析・サービス基盤- 200種類以上のログに対応した事前定義済みパーサー- OCIやオンプレミスにある様々なOSやミドルウェアのログに対応- 未サポートのログにはガイド付きカスタムパーサーで簡単作成直感的な操作で分析可能できるログ・エクスプローラー⼤量のログを⾼速にビジュアライズするクラスタ分析ログ・データの値に応じた⾃動ラベリング様々な分析軸を保存したダッシュボードラベルやログ・データに応じたアラート通知アーカイブ機能によりTBを超えるログ保存のコストを削減LoggingAnalyticsLoggingComputeInstanceServiceConnectorHub管理エージェント連携Syslog、セキュアログWindowイベントログミドルウェア、アプリケーションログネットワーク、データベースログ etc..DatabaseSystem他社クラウド管理エージェント連携管理エージェント連携サービス連携オンプレミスCopyright © 2023, Oracle and/or its affiliates
OCI Logging AnalyticsUnified Auditの定常的なモニタリング27データベースの認証や特定の表のアクセスの監視に特化したダッシュボード異常を検知した際には、電⼦メールやSMSなどで管理者にアラート通知Copyright © 2023, Oracle and/or its affiliates
Oracle Database WorldTokyoご清聴ありがとうございました