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

Oracle Advanced Security - データベース暗号化 -

oracle4engineer
May 26, 2021
1.7k

Oracle Advanced Security - データベース暗号化 -

Transparent Data Encryptionを使用したデータベース暗号化の機能についての解説

oracle4engineer

May 26, 2021
Tweet

More Decks by oracle4engineer

Transcript

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

    Copyright © 2021, Oracle and/or its affiliates 3 $> strings -a financials.dbf | grep “¥-[0-9]¥{4¥}¥-” 5555-5555-5555-4444 5105-1051-0510-5100 OS ユーザ データベース上の物理ファイル - データ・ファイル - Redo ログファイル - バックアップファイル - エクスポートファイル・・・ 流出してしまったファイル はバイナリエディタ等で データを直接参照される 物理的なデータの漏洩には暗号化で対策 論理的なデータの不正アクセスにはアクセス制御で対策
  2. アプリケーションからは透過的にデータの暗号化・復号することで、既存のアプリケーション (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 4 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;
  3. 表領域単位での暗号化 表領域内の表や索引などのオブジェクトはすべて暗号化される データブロックに対するI/Oで暗号化・復号 REDOログ、UNDO表領域、一時表領域、アーカイブログも暗号化される SGAのバッファキャッシュ上は暗号化されていない 暗号化してもデータサイズは増加しない 表領域暗号鍵はデータファイルのヘッダーに格納 暗号列への索引に制限なし ほとんどすべてのオブジェクトが暗号化可能 (BFILEのみ不可)

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

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

    Online Encryption Conversion 表領域がオフライン時に暗号化 - Offline Encryption Conversion 表領域の暗号化変換 Copyright © 2021, Oracle and/or its affiliates 9 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
  6. オフライン変換 オンライン変換 対象リリース 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 10 ※オンライン/オフラインとも、データファイル単位でパラレル実行可能
  7. TDEの設定手順 (18c~) Copyright © 2021, Oracle and/or its affiliates 11

    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パラメータの使用が推奨
  8. TDEの設定手順 (18c~) Copyright © 2021, Oracle and/or its affiliates 12

    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という自動ログイン・キーストアが作成される
  9. TDEの設定手順 (18c~) Copyright © 2021, Oracle and/or its affiliates 13

    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)
  10. 暗号鍵の運用管理 Copyright © 2021, Oracle and/or its affiliates 14 キーストアのパスワード変更

    ADMINISTER KEY MANAGEMENT ALTER KEYSTORE PASSWORD FORCE KEYSTORE IDENTIFIED BY “旧パスワード” SET “新パスワード" WITH BACKUP; マスター暗号鍵の再作成 ADMINISTER KEY MANAGEMENT SET KEY USING TAG ‘タグ名’ IDENTIFIED BY “パスワード" WITH BACKUP マスター暗号鍵の再作成 (自動ログインやキーストアがCloseしている場合) ADMINISTER KEY MANAGEMENT SET KEY USING TAG ‘タグ名’ FORCE KEYSTORE IDENTIFIED BY “パスワード" WITH BACKUP マスター暗号鍵のエクスポート ADMINISTER KEY MANAGEMENT EXPORT KEYS WITH SECRET “シークレット名” TO ‘エクスポートディレクトリ/ファイル名’ FORCE KEYSTORE IDENTIFIED BY “パスワード" マスター暗号鍵のインポート ADMINISTER KEY MANAGEMENT IMPORT ENCRYPTION KEYS WITH SECRET “シークレット名“ FROM ‘エクスポート ディレクトリ/ファイル名’ FORCE KEYSTORE IDENTIFIED “パスワード” WITH BACKUP
  11. WALLET_ROOTパラメータ指定ではなく、従来のSQLNET.ORAに記述する方式を利用 - /u01/app/oracle/homes/OraDB21000_home1/network/admin/sqlnet.ora (21cの場合) キーストアと自動ログイン・キーストアの格納先ディレクトリ - /opt/oracle/dcs/commonstore/wallets/tde/<DB名> キーストアは統一モードで構成 SYSTEM,SYSAUX,UNDO,TEMPは暗号化なし、USERS表領域は暗号化されている 初期化パラメータファイルに

    ENCRYPT_NEW_TABLESPACE = ALWAYS - CREATE TABLESPACE文にENCRYPTION句が指定されていなくても、AES128で暗号化設定される データベースとクライアント間のSQL Net通信は、AES256で暗号化されるように設定済み Oracle Database Cloud ServiceのデフォルトTDE設定について Copyright © 2021, Oracle and/or its affiliates 15
  12. Data Pumpの暗号化 Copyright © 2021, Oracle and/or its affiliates 16

    Data Pumpでデータを論理的にエクスポートする際は、暗号化オプションを使用し漏洩リスクに備える 3つのENCRYPTION_MODE - transparent: TDEに格納されているマスター暗号鍵で暗号化 - password: パスワードの値を鍵として暗号化 - dual: 上記二つの組み合わせ キーストアを使用したエクスポート暗号化 expdp scott/tiger DIRECTORY=dp_dir DUMPFILE=exp.dmp ENCRYPTION=all ENCRYPTION_ALGORITHM=AES256 ENCRYPTION_MODE=transparent パスワードを使用したエクスポート暗号化 expdp scott/tiger DIRECTORY=dp_dir DUMPFILE=exp.dmp ENCRYPTION=all ENCRYPTION_ALGORITHM=AES256 ENCRYPTION_MODE=password ENCRYPTION_PASSWORD=パスワード デュアル・モードでのエクスポート暗号化 expdp scott/tiger DIRECTORY=dp_dir DUMPFILE=exp.dmp ENCRYPTION=all ENCRYPTION_ALGORITHM=AES256 ENCRYPTION_MODE=dual ENCRYPTION_PASSWORD=パスワード
  13. Recovery Managerの暗号化 Copyright © 2021, Oracle and/or its affiliates 17

    Recovery Manager(RMAN)のバックアップセットに書き込まれるデータを暗号化 Data Pumpと同様に3つのモードが可能 transparentモードは、バックアップ・リストアにキーストアを使用するため、より安全なバックアップを作成 バックアップセットの対象に表領域暗号が含まれる場合、表領域暗号のブロックは、一旦復号されてから圧縮され 再度暗号化されるので、圧縮効率に影響しない キーストアを使用したバックアップ暗号化 RMAN> CONFIGURE ENCRYPTION FOR DATABASE ON; パスワードを使用したバックアップ暗号化 RMAN> SET ENCRYPTION ON IDENTIFIED BY パスワード ONLY;
  14. 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 18 REQUIRED REQUESTED ACCEPTED REJECTED REQUIRED 暗号化 暗号化 暗号化 接続失敗 REQUESTED 暗号化 暗号化 暗号化 暗号化なし ACCEPTED 暗号化 暗号化 暗号化なし 暗号化なし REJECTED 接続失敗 暗号化なし 暗号化なし 暗号化なし サ ー バ ー 側 設 定 クライアント側設定
  15. Real Application Cluster (RAC) 各ノードは、1つのキーストアを共有 下記のようにASMまたはACFSにキーストアを作成し、各ノードから共通してアクセスできるように設定する - ALTER SYSTEM SET

    WALLET_ROOT = '+DATA/$ORACLE_UNQNAME/WALLETS' SCOPE = SPFILE; キーストアのオープンやクローズなどの管理操作は、いずれかのノードで実施し、その結果は各ノードに自動伝播される Data Guard プライマリ側で作成したキーストアは、コピーしてスタンバイ側に配置する マスター鍵を変更した場合は、変更後のプライマリのキーストアをスタンバイ側へのコピーが必要 REDOログファイルは暗号化されたままスタンバイに転送される Advanced Compression, Exadata Hybrid Columnar Compression 表領域暗号の場合、圧縮してから暗号化する動作になるため、圧縮率の影響はない 主要なデータベースの機能とTDEの連携 Copyright © 2021, Oracle and/or its affiliates 19