10 透過的データ暗号化に関するよくある質問

透過的データ暗号化の透過およびパフォーマンスに関して、ユーザーからよく質問が寄せられます。

10.1 透過的データ暗号化に関する透過の質問

透過的データ暗号化は、データの透過性を様々な方法で扱います。

セキュリティ監査により、透過的データ暗号化(TDE)で使用する暗号化について詳細な質問を受ける場合があります。TDEのキー、長さおよびキーストアに関する情報を求められ、PCI-DSSなどの基準要件に直接比較されます。この項では、TDE暗号化およびキー管理の重要な詳細について説明します。この情報は、Oracle Database 12c (12.1.0.2)を基準にしています。これは、TDE顧客が監査の質問に迅速および正確に回答するのに役立ちます。

  1. 透過的データ暗号化は、使用しているアプリケーション・ソフトウェアに対応していますか。

    透過的データ暗号化は、インバウンドのSQL文またはアウトバウンドのSQL問合せの結果を変更しないので、デフォルトでアプリケーションに対応しています。オラクル社では、オラクル社およびサード・パーティの特定のアプリケーション・ソフトウェアを内部でテストおよび検証し、役立つデプロイ時のヒントやスクリプトを得たり、パフォーマンス・プロファイルを評価しています。

    透過的データ暗号化とDBMS_CRYPTO PL/SQLパッケージには違いがあることに注意してください。このパッケージは、お客様の別のユースケース向けです。これはAPIおよびツールキットのソリューションであるため、透過ではありません。

  2. 透過的データ暗号化は、使用中のその他のOracle Databaseツールおよびテクノロジと対応していますか。

    透過的データ暗号化の主な利点の1つは、高可用性クラスタ、記憶域の圧縮、バックアップの圧縮、データ移動、データのバックアップおよびリストア、データベースのレプリケーションなどでよく使用されるOracle Databaseツールおよびテクノロジと統合できることです。透過的データ暗号化に直接統合されているOracleテクノロジは、具体的には特にOracle Real Application Clusters (Oracle RAC)、Oracle Recovery Manager (RMAN)、Oracle Data Guard、Advanced Compression、Oracle Data PumpおよびOracle GoldenGateです。透過的データ暗号化には、オラクル社がエンジニアリングした独自のシステム機能を最大限に活用するOracle Exadataとの統合という特別な利点があります。

    透過的データ暗号化は、Oracle Databaseのセキュリティ機能ともうまく動作します。透過的データ暗号化では、付与された権限、ロール、Oracle Database Vaultレルム、仮想プライベート・データベースのポリシー、Oracle Label Securityのラベルがそのまま適用されます。これらおよびその他のセキュリティ機能は、透過的データ暗号化の暗号化と並行して使用できます。

  3. 透過的データ暗号化に既知の制限や非互換性はありますか。

    • TDE列暗号化: TDE列暗号化では、データがSQLレイヤーを通過するとき、データを透過的に暗号化および復号化します。Oracleの一部の機能は、SQLレイヤーをバイパスするため、TDE列暗号化のメリットを受けません。次にTDE列暗号化でサポートされないデータベース機能および該当するそのソフトウェア・バージョン番号を示します。

      • マテリアライズド・ビュー・ログ(Oracle Database 11gリリース2より前がサポート対象外)

      • Streams (Oracle Database 11gリリース1より前がサポート対象外)

      • データ・ウェアハウスの同期および非同期チェンジ・データ・キャプチャ(CDC)

      • トランスポータブル表領域

      • LOB

      セキュア・ファイルは、Oracle Database 11gリリース1で導入されたため、それより前のリリースのTDE列暗号化ではサポートされていません。

    • TDE表領域暗号化: TDE表領域暗号化は、表領域に保存されているすべてのコンテンツを記憶域のブロック・レベルで暗号化し、通常は他のデータベース機能と競合しません。TDE表領域暗号化には、TDE列暗号化にある制限はありません。ただし、TDEで暗号化されたソースからTDEで暗号化された宛先に移動する際に、Oracle Data Pumpの圧縮および暗号化で完全トランスポータブル表領域(TTS)を使用できます。元のOracleウォレット・ファイルを上書きする必要なく、宛先データベース・ホストへの正しいマスター暗号化キーを取得するためにキー・エクスポートまたはキーストア(ウォレット)マージ機能を使用できるように、Oracle Databaseリリース12c以降のデータベース・インスタンスを使用可能にする必要があります。このプロセスは標準TTS制限の影響を受けるため、互換性のあるエンディアンであるかどうかを忘れずにチェックする必要があります。

  4. TDEではどのようなタイプのキーおよびアルゴリズムが使用されますか。

    TDEは、2つの異なる暗号化キー・セットに依拠しています。1つめの暗号化キー・セットはTDE表領域暗号化キーで、格納されているデータを透過的に暗号化および復号化するために使用します。DEKは、データベースにより自動的に生成され、暗号化された形でデータベースに内部的に格納され、多くの場合、シーンの裏側で管理されます。エンド・ユーザーとDEKが相互作用して、TDEで使用する暗号化アルゴリズムとキーの長さが選択されます(3DES168、AES128、AES192またはAES256)。この選択は暗号化列を含む各表および各暗号化表領域に対して個別に行われます。また、DEKを表キーとして参照(列暗号化)するか、または表領域キーとして参照(表領域暗号化)するか、通知されます。表キーは暗号ブロック連鎖(CBC)操作モードで使用し、表領域キーは暗号フィードバック(CFB)操作モードで使用します。

    2つめの暗号化キー・セットは、現行および過去の暗号化キー(KEK)からなり、マスター暗号化キーとも呼ばれます。マスター暗号化キーは、データベースにより自動的に生成され、必要に応じDEKの暗号化および複号化のために自動的に使用され、保護されたキーストアに外部的に格納されます。ユーザーは、現行マスター暗号化キーとやり取りして、周期的なキー更新、特定のキー属性の変更などを行います。通常、マスター暗号化キーのキーストアは、Oracleウォレット(そのまま使用できるソリューション)またはOracle Key Vault (特別なキー管理製品)のいずれかです。データベースが一度に使用するTDEマスター・キーは1つのみですが、キー更新されたすべてのマスター暗号化キーは、暗号化データ・バックアップを長期間リカバリするためにキーストアに残ります。マスター暗号化キーは常にAES256です。これらは、CBC操作モードを使用して、DEKを暗号化および復号化します。DEKおよびマスター暗号化キーのいずれも、基本となるキー・データは直接表面に現れません。エンド・ユーザーは、TDEの管理に必要なキーの属性のみを見ることができます。

  5. マスター暗号化キーを含むOracleキーストアはどのように保護されますか。

    Oracleウォレットをマスター暗号化キーのキーストアとして使用する場合、パスワードベース、自動ログインおよびローカル自動ログインの異なる3タイプのキーストアについて考慮します。これらのキーストアはいずれも、マスター暗号化キーを外部化するため、TDE暗号化データから分離しています。厳密なファイル許可およびその他のセキュリティの手段で保護されたローカルまたはネットワーク・ディレクトリに、ウォレットを配置することをお薦めします。

    パスワードベースのウォレットは、暗号化キー・ストレージ・ファイル(ewallet.p12)で、PKCS #12標準に準拠します。これは、PKCS #5標準に従い、パスワードにより導出されるキーによって暗号化されます。ユーザーは、ウォレットを開き、そのコンテンツを復号化し、キーへのアクセスを取得するためのデータベースに対するパスワードを含むコマンドを入力する必要があります。パスワードベースのウォレットは、TDEマスター・キーのデフォルト・キーです。以前は、これは3DES168暗号化アルゴリズムおよびCBC操作モードを使用して暗号化されていました。orapkiコマンド、convert walletを使用して、パスワードベースのウォレットをAES256およびCBC操作モードに変換できます。『Oracle Databaseセキュリティ・ガイド』に、orapkiを使用したウォレットの変換の詳細が記載されています。

    自動ログイン・ウォレット(cwallet.sso)は、ユーザーの相互作用なしにウォレット・パスワードを入力してデータベースを起動する必要がある特殊な場合に、オプションで標準パスワードベースのウォレットから導出されます。自動ログイン・ウォレットを使用する場合は、マスター暗号化キーのキー更新のために必要であるため、マスター・パスワードベース・ウォレットを保持する必要があります。加えて、厳密なファイル許可により保護されるローカルまたはネットワーク・ディレクトリに自動ログイン・ウォレットを格納するためのベスト・プラクティスとして、ファイル・コンテンツはセキュリティを追加する独占メソッドを使用してデータベースによりスクランブルされます。自動ログイン・ウォレットの変化形であるローカル自動ログイン・ウォレットは、動作が類似しています。ローカル自動ログイン・ウォレットとの大きな違いは、ファイルが作成されたホスト・マシンから取得した追加ファクタを使用してコンテンツをスクランブルすることです。これにより、ローカル自動ログイン・ウォレットが別のホスト・マシン上で使用できなくなります。ホスト・ファクタおよびスクランブル・テクニックの詳細は、独占的です。

  6. Oracle Key Vaultとは何ですか、またTDEマスター・キーをどのように管理するのですか。

    Oracle Key Vaultは、TDEマスター・キー、Oracleウォレット、Javaキーストアなどを中心的に管理します。これは、キーの増加およびキー・ストレージ・ファイルを制御するのに役立ちます。これには、TDEおよび他のOracleスタックのコンポーネント専用の最適化が含まれます。TDEでOracle Key Vaultを使用する方法の詳細は、www.oracle.comおよびOracle Technology Networkの製品ページ、および『Oracle Key Vault管理者ガイド』を参照してください。

10.2 透過的データ暗号化に関するパフォーマンスの質問

透過的データ暗号化を使用する際には、検討すべきパフォーマンスの問題がいくつかあります。

  1. 透過的データ暗号化によって生じる典型的なパフォーマンス・オーバーヘッドはどのようなものですか。

    透過的データ暗号化の正確なパフォーマンス・テストの作成には、様々な変動要素が関係します。テスト環境、テスト・ケースまたはワークロード、計測メトリックまたは方法などにより、結果は変わります。オラクル社は、考えられるすべてのシナリオに当てはまる、パフォーマンス・オーバーヘッドの具体的なパーセンテージを保証することはできません。実際に、透過的データ暗号化の多くのお客様のパフォーマンス・テストでは1桁台前半のパーセンテージが示されますが、必ずそうなるわけではありません。

    可能な場合、Oracle Real Application Testing (Oracle RAT)を使用して実際の本番ワークロードを取得し、透過的データ暗号化に対してリプレイして、ご自身の環境で想定されるパフォーマンスのオーバーヘッドの実際の目安を得てください。

  2. 透過的データ暗号化のパフォーマンス調整はどのように最適化するのでしょうか。

    • TDE列暗号化:

      • 暗号化の処理を、必ず保護する必要のある列のサブセットに限定します。また、オプションの整合性チェックの機能をオフにします。

      • 列を暗号化したら、列の索引を再構築します。

    • TDE表領域暗号化: TDE表領域暗号化では、SGAバッファ・キャッシュ内のメモリーに、暗号化されていないデータをキャッシュしてパフォーマンスを向上させます。この機能により、ディスクではなくSGAから取得することで、SELECT問合せをユーザーが実行した際に必ず行われる多数の暗号化操作が減少します。(ディスクからの取得は、データベースによる復号化操作の実行を強制します。)このパフォーマンスの最適化を最大限に利用できるよう、SGAのバッファ・キャッシュが十分に大きいことを確認します。

      Intel AES-NIおよびOracle SPARC T4/T5に搭載されているCPUベースの暗号アクセラレーションをサポートするハードウェアおよびソフトウェアを使用することでも、パフォーマンスを大きく向上させることができます。この機能を利用するには、最新バージョンのデータベースが実行され、最新バージョンのオペレーティング・システムがインストールされ、CPU/コアに暗号アクセラレーション回路を搭載したハードウェアが使用されている必要があります。

      データベースの圧縮も、透過的データ暗号化のパフォーマンスをさらに向上させます。すでに圧縮されているデータで暗号化処理が発生して、暗号化および復号化するデータの総量が減少するためです。

    • 概要:

      • 次のMy Oracle Supportからダウンロードできる最新のパッチを適用します。

        https://support.oracle.com/portal/

      • 暗号化アルゴリズムを指定する際には、AESは3DESよりもわずかに高速であることを覚えておいてください。可能な場合は、AES128を使用します。パフォーマンス上のメリットは少ないことに注意してください。

      • 追加のパフォーマンス上の利点があるExadata (Oracle Databaseテスト・ガイドを参照)を使用します。

  3. TDEのパフォーマンスを低下させる可能性のある問題は具体的には何で、それはどのように回避できますか。

    ハードウェアやデータベースのバージョンやオペレーティング・システムが古いなどの要因により、データベースのホスト・マシンでCPUベースのハードウェア・アクセラレーションを使用できない場合、TDEの表領域のパフォーマンスは遅くなります。

    特定のデータベースのワークロードに関し、次に注意してください。

    • (Oracleデータ・ウェアハウスへのデータのバルク・ロードの実行など)データ・セット全体の一度での暗号化: 新しいデータをデータベースまたはデータ・ウェアハウスにバルク・ロードする際、暗号化のパフォーマンスの低下がみられました。新しいデータはSGAにキャッシュできないので、TDE表領域暗号化のパフォーマンスの最適化がバイパスされます。したがって、透過的データ暗号化はこの種の操作には何もパフォーマンス上のメリットはありません。

      次のガイドラインに従ってください。

      • CPUベースの暗号化アクセラレーションを搭載したサーバーでデータベースを実行していることを確認します。これにより、復号化操作のみでなく、(新しいデータをロードする)暗号化操作も同様に高速化されます。データ・セットを事前に暗号化し、トランスポータブル表領域(TTS)を使用してデータベースにロードすることで、暗号化処理を帯域外で実行します。可能な場合には、この処理をパラレル化します。これには、データベース・インスタンスで必要なTDEキーを宛先データベースのキーストアにコピーする必要があります。暗号化およびロードに時間枠が決まっている場合、この手順は実行不可能で、これらは逐次実行する必要があります。

      • TDE列暗号化の使用を検討してください。表領域全体を暗号化するのではなく、機密で規制対象になる少数の列のみを暗号化します。

    • (SGAからは読み込まず、ディスクから直接読み込んで表を完全にスキャンするなど)データ・セット全体の一度での復号化:

      データが記憶域から直接読み込まれる表を完全にスキャンする問合せを実行する場合、暗号化のパフォーマンスの低下がみられます。TDE表領域暗号化の特定のパフォーマンスの最適化が省略されます(キャッシングなし)。したがって、透過的データ暗号化はこの種の操作には何もパフォーマンス上のメリットはありません。

      次のガイドラインに従ってください。

      • CPUベースの暗号化アクセラレーションを搭載したサーバーでデータベースを実行していることを確認します。

      • データがキャッシュから読み込まれる場合、より大容量のSGAサイズで表全体に対するスキャン問合せを再テストします。Oracleイベント番号10949によってダイレクト・パス読取りが無効化されるようにします。

      • 表のフル・スキャン操作で少量のデータのみがスキャンされるよう、データベースをパーティション化します。本番データベースでは、このようなシナリオ(つまり、スキャンするデータの総量を制限するシナリオ)でよくパーティション化が使用されます。

      • TDE列暗号化の使用を検討してください。表領域全体を暗号化するのではなく、機密で規制対象になる少数の列のみを暗号化します。